第一次研赛心得体会
2023华为杯研究生数学建模竞赛B题
自从回到学校后很久没有更新了,除了上课大多数时间都在准备这次的华为杯,终于也是在昨天顺利的结束了,相关的文件已经上传至github的仓库上,不过是粪作罢了(悲
下面记录一下比赛的经过和心得。
-
经过
作为第一次参赛,想着肯定要pass华为题了。赛题发布后发现AB都是华为题,开始看E题比较顺眼,感觉是能完整做下来的。然而当我搜集了一些论文,并准备着手处理数据时,一个队友说B题说不定也能做,并且和我交流了一些想法,另一个队友也答应下来。虽然彼时我内心有些抗拒,听下来我觉得还是有些困难、没有头绪,但最终还是选择了相信团队的能力,于是便确定下来。
B题大致讲的是对DFT矩阵进行分解逼近,在一定的精度下可以代替原矩阵计算,以减小硬件复杂度。一共五个问题,每个问题都是在原始问题的基础上修改了约束条件或者更改了问题的形式。
第一问我们大概花了一天半的时间。考虑到用迭代法的话,需要确定初值,但是一直没什么思路。后来根据DFT矩阵的特殊性(范德蒙德矩阵)找了一篇分解的论文,并且满足约束,就直接拿来用了。后来想想都直接分解了这还叫逼近吗(笑
第二问换了个约束,要求矩阵是整数阵,具体要求见题目。总之一考虑到整数的离散性,我也没多想就觉得可以用遗传算法,并且为了快点解决这题,马上投入了coding,跑出了结果就也没过多分析其正确性就半场开香槟,比赛结束后想想这个结果肯定很离谱。
第三问加上了稀疏性,那就更省力了,不过相应的要把算法中的一些操作进行修改。
第四问运用了Kronecker积的性质,但这里用的时候其实有问题,等发现后已经快做完了…于是花了一些时间想
怎么圆场怎么改求解方式,但最后无果。第五问纯纯的没啥思路,就硬着头皮跑了一些结果来展示。越是做到后面越觉得前面的路歪,但是到这个时候已经25号了,我们也想赶紧结束这一切了。
-
心得
相比本科国赛时,我的代码水平没提高多少,反而因为有了chatgpt,一些简单的任务我都交给它来做了😅。不过那个时候写了各种global变量导致回头一看就是屎山,现在因为学了C艹,习惯稍微好点了。
再就是感觉自己的知识储备还是太少了,对于这种数学题,理应用更偏数学的方式去解决,但最后还是用了老一套智能优化算法,并且一路用下去,没能有太多创新。虽然都能跑出结果,但效果不好。做题的时候后面一组似乎是研二的学长,也做B题,他们的交流让我们感到我们做的不是同一题…
-
总结
总之这只是一次值得的尝试以及锻炼的机会,拿回300块报名费就算成功(
希望下次再参加的时候可以更强一点。