2006_ICM_参赛总结(一等奖)_
- 格式:doc
- 大小:36.50 KB
- 文档页数:7
2006 ICM 参赛总结我和02级L、Z于2006年2月2日晚8点至2月6日晚8点(美东时间)参加了ICM: The Interdisciplinary Contest in Modeling竞赛,收获很大,现在总结如下:报名参赛:一年前我选修了安金兵老师的概率统计课。
有一次课上,安老师提到数学建模竞赛,希望有能力的同学报名参加,那是我第一次知道北京大学医学部每年都组织学生参加全国和美国数模竞赛。
当时我听了以后觉得数模竞赛很有挑战性,决心找机会尝试。
于是在上学期我选了张侠、唐志宇等老师开的《生物数学建模》课。
在《生物数学建模》课上,老师们分别讲了各种常用模型的建立和应用,我觉得自己进入了一个全新的世界,第一次接触到这样的思维方式----以前在数学课上惯用的方式是处理一批已经构造好的数据,而且用老师讲的方法或者查书一定可以求解。
数学建模却是仅仅提出一个实际问题,要考虑多方面因素,自行搜索数据处理数据,抓住主要问题摒弃次要矛盾讨论解决问题的实际意义。
我觉得这样处理问题很有意思。
我在网上下载了mathematica在我的机器上安装后开始学用。
并且在我的生化实验的数据处理中用它来画线性回归图,首次尝试编程解决实际问题。
随着建模课的深入,安金兵老师给大家介绍了matlab,并说这是一个非常好用的建模仿真工具,与mathematica相比,它的好处在于程序的可重复性强,它以矩阵形式解决数值分析、系统仿真、工程与科学绘图等问题,其工具箱几乎可以解决一切问题。
在张侠老师的鼓励下我决定弃用mathematica学习matlab。
在网上下载了matlab和教程,安装后开始学习。
当时我遇到的问题现在想来很可笑,因为不会用.m文件来定义函数,对着程序一筹莫展。
后来慢慢地上了路,可以用matlab解决很多问题,发现它确实比mathematica好用多了。
这时已临近期末,我们的课程已经讲过很多经典模型。
安金兵老师在课上动员有能力的同学参加06年ICM竞赛。
当时我很希望可以有一个赛队接纳我,让我体验06年ICM竞赛,为07年竞赛做充分准备。
但是很快我就发现报名参赛的队伍都是成熟的赛队,他们都参加过全国赛,partner早已确定,我不可能加入到其中,于是我决定自己组队参加。
我是这样考虑的,由于美国赛要提交英文论文,所以队伍中必须有一个英文高手。
很快,我找到了L师兄,他几近满分的托福成绩必将成为我们团队的一个优势。
他了解了情况后答应加盟。
我在寻找团队的第三个成员时遇到了困难,药学院和护理学院有竞赛经验的几位同学都家在外地,虽有参赛意向但是一听是春节期间比赛就都不愿参加了。
最后我找到北京籍同学Z,他曾参加过国内赛,是与本部数学系的同学搭档,但是只有参与奖,我不知他们成绩平平的症结何在,也不好意思多问,当时我也顾不得许多了,径直邀请了Z师兄,好歹凑足三人帮。
组好队伍跟张侠老师报名后,我向曾在ICM竞赛中获得一等奖的ZHL师兄请教,他给了我一些很好的建议和经验。
让我放假之后进一步加强建模思路的培养并尽量准备十大经典算法,他还对我讲了一些他对竞赛的预测。
我们赛队在期末考试后第一次召开准备会,Z和L都没上过建模课,Z在参与以前的全国赛中积累了一些竞赛经验,对竞赛流程很清楚,但是在以前竞赛中他不是建模的承担者,对编程也不熟。
当听到他有曾经在英国生活的经历并修过文件检索课、发表过SCI论文,预感到在搜索资料准备数据处理数据攒论文方面我们队有了一个牛人。
不过在会上听到Z 说“竞赛中建立模型时我们可以讨论,但编程可全指望你”时,我还是惊出一身冷汗,觉得压力很大。
我对自己的建模和编程能力实在没有多少信心,尤其是建模课结束提交期末论文时,我自认为编得了无破绽的一段程序折腾了两天最后还是上网求高人给看程序,问题才得以解决的经历使我非常害怕在竞赛时遇到同样的情形,我觉得如果届时发生了那样的情况,恐怕我们就只有退出比赛了。
在准备会上我们一致达成意向L全权负责论文撰写,请他先熟悉在论文中要用的mathtype和画流程图的viso,请他利用ICM优秀论文事先准备几种模型的论文模版。
就是在这样既跃跃欲试又忐忑不安的心情下报了名,并开始准备竞赛。
事已至此惟有破釜沉舟奋力向前。
从寒假伊始我就留在宿舍利用张侠老师推荐的姜启源的《数学模型》及在本部图书馆借到的雷功炎的《数学建模讲义》等十几本书,恶补模型和编程,我计划学习掌握十大经典算法并为每一个算法准备好一段程序,事先通好,一旦在比赛中选定模型必定有一段稍事修改就可以利用的源代码待用。
除夕我回到家中,当家人包饺子看春晚时,我一个人在另一个房间里通神经网络的程序,但是当时我怎么也搞不懂动态与静态神经网络和几种训练方法之间的差异,真的有些想放弃了。
这时妈妈来叫我去看春晚,看到我愁眉苦脸就说,来看会节目放松一下,再去看书,你就会了……。
事实上截止到竞赛前夜我已经准备好除排队论和主成份分析以外的所有常用经典模型,并且都有相应的程序算法备用。
尤其是神经网络,我自己觉得准备得非常充分,我感觉有一些信心了。
当我看到有人说遇到一个非线性的预测问题,用常微分方程解决问题的赛队会被认为是一个初试锋芒的普通赛队;如果会用多元回归,那将会认为是一个做好充分准备的成熟赛队;如果会用神经网络解决,那将会被认为这是一个屡经沙场的资深赛队……,我心中暗暗祈愿,明天的题目最好是可以用神经网络解决的问题,让我们也体验一把挑战资深赛队的感觉!参赛第一天早上9点从网上看到今年的题目是T rade-offs in the fight against HIV/AIDS,我们三人窃喜,因为对于医学院的学生来说处理医药领域的问题,比起处理环境或生物方面的问题背景会稍强一些,这是好事。
于是我们分头读题,各自把感觉需要商榷的句子记下来,1 小时后开始集体讨论,20分钟后对题目的字面理解达成共识。
我开始建模,Z开始准备模型所需数据,L开始准备task1的论文模版。
最初我打算利用题目附件中的所给各国人口、年龄结构、寿命期望值等信息作为学习样本,用神经网络的方法预测2006-2050年各国人口,再用改进的SIR模型预测艾滋病人数增长从而计算出艾滋病病人的人数变化率。
当我用这个思路开始编程时,Z发现题目压缩包里有一个附件是2006-2050年人口预测,根本不用自己建模计算。
这是我们的第一个失误,未仔细查看附件中的所有数据,就开始盲目建模,导致浪费4小时,今后参赛一定要在拿到赛题材料时先进行数据分析,头脑清醒地记下附件中所给的所有数据以有效利用。
于是我悻悻地退出刚才编的程序直接进行艾滋病病人的人数变化率的预测。
我把模型中用到的数学公式写在草稿纸上,给Z和L讲我考虑的假设条件,开始模型分析。
然后L开始往word上敲所用到的数学公式,并找相似问题的优秀论文模版开始准备这一部分的论文。
同时Z去联合国卫生组织的网站寻找相关背景资料,寻找程序中所要的艾滋病人的死亡率和传染率。
Z英文的快速阅读理解和搜索文献的能力实在是太赞了------赞到尽管赛前有预感还是强到非常意外,赛后我们在论坛上看到有些赛队退出比赛的原因就是找不到有用的数据,说是到了联合国网站之后不知道进哪个“小门”,随便进入一个链接后看到浩如烟海的表格不由得哀叹联合国秘书长的工作是要面对如此繁杂的数据,真是世界上最可怜的工作。
Z每次都在我需要输入相关数据之前就找到数据,我没有因为缺乏数据而停顿等待过。
在我通程序时,Z帮我把原本在表格中的数据转成易于导入matlab的文件格式,这个工作也非常烦人,但是又必须作。
第一天我们因为紧张都没有心情出去吃饭,随便叫了点外卖,一边吃还一边讨论各自遇见的问题。
两顿饭都是这样草草解决,完全不知食之滋味。
我在L始终没停的噼里啪啦敲字写论文的伴奏下编程,运行程序;Z也一直在处理数据并偶尔和L沟通模型思想,因为L毕竟一点没学过建模,在撰写文章时需要确定建模术语。
整整20个小时我们就这样度过。
我们三人没有一个人停下一分钟,一直都在紧张忙碌着。
直到凌晨4点,虽然因为兴奋还没觉得累,但还是一致决定都去睡一会,以利第二天继续奋战。
第二天上午8点起来之后我又静静地想了一遍我昨天的工作和今天将要进行的工作,继续运行程序计算。
运行中数据的存取量十分大,机器硬盘灯一直闪个不停。
十点多的时候我的机器突然死机黑屏,并且再也起不来了。
我的机器是配置很高的IBM笔记本,为了参赛还专门加到2个G的极限内存。
在我们的计划中Z和L因为不承担编程工作,他们的机器上都没有安装matlab。
所以我的机器出问题后竞赛根本就没法进行下去了,当时我真是死的心都有了。
算了一天一夜的数据啊!我给我妈妈打电话,因为笔记本是她给我买的,我想知道号称服务最优的IBM蓝快是否可以在短时间内给我修复。
她听到我的哭泣安慰我沉住气别着急,说是机器过热了,等半个小时机器彻底凉了再启动一下。
不过机器凉了以后就算还可以启动也不能保证它不会随时瘫掉,所以她说给我去借台式机,因为当时正值春节放假,单位的工作站借不出来,一般家庭机器的配置很少有可以作仿真建模计算的,她费了很大的劲才为我借到一台奔4/主频2G/内存1G 的机器,并找到matlab安装程序,立刻把机器送到学校,安装matlab,启动并试运行之,OK,matlab输出的结果正常。
这时我们三人终于松了一口气,不至于退出竞赛了,可是这时已经是下午3点多,5个多小时过去了,sigh,那时我连早饭还没吃呢。
我的笔记本晾了一小时以后可以重起,但是发现USB接口烧坏了,鼠标和U盘都接不上了。
(赛后拿到蓝快去修说是CPU南桥给烧了?这是后话。
)用触摸鼠标工作非常不方便,里面的数据和计算结果、源代码无法取出用到新借的台式机上,真是把人急死了。
我们成了三只热锅上的蚂蚁。
这时我们突然想到我的笔记本还可以上网,于是我用触摸鼠标一点一点地把源代码、所需数据、运算结果寄到Z的邮箱里,他上网收下来,再用U 盘从他的机器里拷到我新借的台式机里。
(新借的台式机不能直接上网的原因是当时我们不会手动改机器地址,只会用超级兔子改,而新借的机器里没有超级兔子,由此可见准备好一切可能用到的应用程序的安装盘极为重要)后来我们的程序就都是在新借的台式机里做的。
教训:竞赛前要准备一个性能强劲的台式机,一般笔记本都没有风扇,尤其是超薄的,更不能长期连续工作。
长时间算个不停而产生的热量很可能让机器挂掉。
不能只在一台机器上安装所要用到的应用程序,要有一台以上的机器安装所需应用程序,不管机器主人用不用这个应用程序都要安装备用。
同时要准备好所用应用程序的安装盘,以备发生意外时用。
事实是当我们后来的工作需要用Lindo 解决线性规划问题时就是因为找不到安装程序而无法在新借的台式机上安装,而在争分夺秒的时刻再去网上下载安装根本来不及也很不现实。