跳过正文
  1. Blogs/

CUMCM 2024总结

··6 分钟· loading · loading · · ·
Morethan
CUMCM Math
Morethan
作者
Morethan
计算机、物理与AI理工男
目录
数学建模 - 这篇文章属于一个选集。
§ 2: 本文

前言
#

这篇文章主要是对于 CUMCM 2024 的比赛全过程进行一个梳理和总结。

我们的队伍是在 2023 年的冬天组起来的,CUMCM 2024 也是我们第一次参与“数学建模”比赛。经过了大大小小的模拟赛,最终进入了全国的比赛。在提交最终论文之后获得省级一等奖并推荐国家级一等奖,最终获得国家级二等奖。

整个过程有振奋惊喜,也有失落遗憾;我们在比赛中应该是做对了一部分事情,因此我们初次参赛就获得了国家级奖项;但不足肯定是有的,毕竟从“推荐国家级一等奖”变成“国家级二等奖”总是有理由的。

总之,这次经历着实是令人难忘,更加值得梳理和总结经验,为明年的比赛作准备。

CUMCM 全称为 Chinese Undergraduate Mathmatical Contest in Modeling;民间称呼为“数模国赛”

用词说明
#

用词 说明
计算系统 传统意义上的建模过程,即封装一个超大的函数
优化系统 用于优化计算系统中可调参数的系统,生成最优参数配置
计算流 计算系统中输入数据的处理过程
计算流结点 工作流中关键性的中间步骤
优化流 优化系统的主体逻辑
论文主体内容 包括摘要、重述、计算流和优化流的描述、结果展示与分析,也就是论文收尾之前的所有内容
论文收尾 包括灵敏度分析和模型推广

客观情况
#

任务分工
#

虽然比赛有很多个选题可供选择,但是我们小组选择专攻优化类问题,也就是 A 题。

  • 我:建模 + 代码 + 部分论文撰写
  • CL:建模 + 论文撰写 + 部分代码
  • HWJ:论文美化

工作流程
#

整个 A 题的代码部分大致可以分为两个系统:

  • 计算系统:
    • 功能:接受输入数据与参数,返回需要的结果
    • 性质:直接由题目决定,不同题目有不同的计算系统,需要临时构建
  • 优化系统:
    • 功能: 接受计算系统并将其作为可优化的目标函数,执行自身的优化逻辑,最后返回计算结果
    • 性质:方法体系较为成熟,可以在比赛前就进行多种优化系统的准备

论文撰写部分分为:

  • 整体框架:由 LaTeX 模板决定
  • 主体内容填充:对工作流和优化流的清晰描述
  • 排版和美化:调整各个部分的详略,搭配说明性的图片(流程图,示意图)
  • 收尾内容

预建模
#

  • 目标:在精确理解题目的前提条件下,迅速进行初步的建模,基本确定建模方向、计算方法;

  • 预计用时:3h

  • 工作:队伍所有成员都进行全网资料查询,看看有没有基本命中题目的文献资料

    • 命中成功:最理想的情况,这个时候直接研读论文,收集思路即可;
    • 命中失败:虽然没有现成的资料可供参考,但是在查阅文献的过程中或多或少也积累了一定的思路

建模初期
#

  • 总目标:构建足够精确的、适配优化方法的计算系统

    • 建模:明确输入数据在各个计算流结点之间的操作
    • 代码:用代码实现计算流,实现数据可视化
    • 论文:填充第一个小问的内容,并初步排版
  • 预计用时:30h

  • 工作:

    1. 所有队员一起进行建模,优先明确建模思路,给出完整的数学推导过程
    2. 我和 CL:代码实现与论文内容填充同步进行
    3. HWJ:绘制无法用代码生成的更加生动的示意图

建模中期
#

  • 总目标:构建合适的优化系统

    • 建模:根据计算系统的特殊性,选择最为匹配的优化系统
    • 代码:在实现优化系统的过程中进行微小改动,匹配计算系统
    • 论文:完成论文的主体部分,开始进行局部细节微调
  • 预计用时:20h

  • 工作:与前面类似只不过工作的中心从代码编写转到了论文撰写

    • 精简论文,此时的论文非常臃肿
    • 微调论文的逻辑,使得上下文关联度更高
    • 美化排版,减少文字,增加图片

建模后期
#

  • 基本建模完成了,全员进行漏洞的检查:
    • 错别字、不准确的表述、公式拼写错误等常规检查
    • 优化代码中的注释,让其更加易读
    • 重点检查个人信息
比赛论文中不能保留任何个人信息,包括代码中的文件路径,例如 C:\Users\Morethan ;保留个人信息是非常严重的错误!

实战效果
#

当我们将上述策略应用于实战过程中,也就是 CUMCM 2024 的正式比赛中,得到的效果如下:

  • 有效用时:
    • 比赛总时长三天,共计 72 小时
    • 队伍从早上七点到晚上八点,除开吃饭用时,一天的有效时间为 12 个小时
    • 时间利用率为 \(50\%\)(对比之下很低🤔)
  • 最终完成工作:
    • 论文主体 28 页 A4 纸
    • 代码部分 35 页 A4 纸,除开每一个小题之间的复用代码,应该有 20 页左右
    • 全文配图共计 25 张
    • 以上数据是论文精简之后的,初稿论文将近 50 页
  • 未完成工作:
    • 最终结果的计算,由于计算量过大(代码效率并不高),最终提前两个小时写完所有代码,但并没有足够的时间运算出结果😭😭
    • 模型的计算精度不够,精度为 1s 没有达到标准答案给出的精度
    • 论文的收尾部分其实并没有完成

优点
#

选题
#

  • 专注于 A 题,在模拟赛中积累了充分的经验,磨合出了一套高效的工作流程

  • 对于 A 题的方法论构建比较完善

工作流程
#

  • 工作流程相对清晰,效率较高

  • 以最终论文为导向,建模、论文、代码三线同时进行,保证了论文内容的充足

分工
#

  • 采用模糊分工,每个队员都有一个主要分工和次要分工,在各自的主要分工上能够独立工作,在其他的次要分工上面也能够完成一定的工作,大大提高了时间利用率

  • 队员很给力,因为同时兼顾两个分工任务意味着更多的学习成本

不足
#

工作流程
#

  • 计划很完美,但是在实践中还是有些必要的环节没有做好

  • 有效时间占比:晚上八点收工太早了!应该占用更多的时间来进行建模试错,保证模型的正确性和精确性

分工
#

  • 代码的编写、代码的调试、代码的可视化、结果的计算、结果的可视化所涉及的代码量太大,一人难以搞定;

  • 因为模糊分工所引起的任务重叠,增加了协同成本

建模
#

  • 题目理解准确度:这次我们对于题目的理解出现了较大的偏差,导致我们浪费了挺多时间在模型修正上面;

代码
#

  • 代码的效率:之前由于没有时间的限制,导致对于“超长”代码的准备不足,没有代码并行的经验;

  • 结果精度:一开始建模过于粗糙,并且用了一个不好的特性:将时间步长设置为 1 ,并且将作为数组索引,导致后期难以将时间的步长减小,导致最后结果的精确度不够

改进方案
#

  • 精心挑选场地,增加有效时间✨是最重要的✨

分工
#

  • 略微改动人员分工,增加代码方面的人力投入

  • 在各自的主要分工和次要分工上增加学习投入,增加工作效率

建模
#

  • 更专注于题目的理解,不能太着急;建模错误再修正是得不偿失的

代码
#

  • 构建一套行之有效的代码协同方案,增强代码编写速度

  • 着手构建代码编写规范:

    • 变量命名
    • 文件开头的说明文档
    • 代码编写流程规范
  • 代码并行化:在代码中添加一些可并行的代码,提高运行速度

所有代码方面的改进最终落实为一个文档!不能光喊口号!

论文
#

  • 研究优秀论文

    • 关注其论文框架
    • 关注其语言风格、文本可读性、详略、配图逻辑、图片可读性
  • 改进自身

    • 优化论文主体逻辑框架,细化每一块的内容
    • 语言风格、文本可读性、详略、配图逻辑、图片可读性等等细节的改进
成果以 LaTeX 模板中注释的形式固定!

总结
#

一份没有满分的答卷比一份满分的答卷更有收获!

积累应用数学的知识,增强论文撰写能力,提高发现问题的能力,这是比比赛本身更有意义的东西🫡

CUMCM,每一个数模人都能从中受益🤗

数学建模 - 这篇文章属于一个选集。
§ 2: 本文

相关文章

贝叶斯优化
··2 分钟· loading · loading
Morethan
Math MATLAB CUMCM
Python小技巧
··4 分钟· loading · loading
Morethan
Python
本地 OverLeaf 部署
··4 分钟· loading · loading
Morethan
Overleaf LaTeX