大学的科研之路

之前在知乎 有一些超级难的算法比如遗传算法,蚁群算法,看了数学建模国赛感觉好难写,那些人怎么写出来的? 的回答。

原文如下。

想起了大一下学期,和老师一起做遗传算法的日子,经过一年多的努力,最后在老师帮助下还发了一篇会议论文

L. Wang, W. Gong: Ensemble of different parameter adaptation techniques in differential evolution. BIC-TA (2) 2016: 73-79

还和老师当时去西安参加了会议,周围都是研究生、博士生,自己一个本科生还是有些自豪的。

当然现在自己已经研二了,就回忆下当时的过程吧。

认识老师是在一门「计算机导论」的课上,当时老师讲到「大学生,大家要多做东西,可以找院里的老师帮助,老师会和热心的,不要怕自己什么都不会,要敢于尝试,balabala」

然后过了一段时间,自己一直记着这个事。有一天终于鼓起勇气去找了老师,哈哈,就是去找了上课的老师。

因为自己是上大学才接触到编程的,当时选择计算机专业也只是一种感觉,就是感觉自己喜欢计算机,当时也还没上够一学期课,真的是还什么都不会。然后和老师说,自己现在只会一些基础的 C++,别的也不会什么,但是很喜欢编程,想和老师做点东西。

老师说,喜欢就好,我会给你定期布置任务,每周也要向我汇报做了什么。

于是,科研的生活就开始了。

大一的寒假,老师就给我发来一篇论文。

Storn R , Price K . Differential Evolution – A Simple and Efficient Heuristic for global Optimization over Continuous Spaces[J]. Journal of Global Optimization, 1997, 11(4):341-359.

当我打开这篇 pdf 的时候,懵逼了。

天呐,纯英文的,我的四级还没考呢,,,

但也没办法,只能硬着头皮看呗,有道的划词翻译用起来,把不会的单词用 pdf 的注释起来,然后就这样一点点的自己慢慢读,慢慢理解。

大二开始,老师又问自己会不会 Matlab ,那时候当然不会了,然后就又去学,不过网上资料也很多,学的也很快。

再接下来,就是看了一本讲遗传算法的书,还有 Matlab 工具箱。

然后在书里对遗传算法有了大概的认识,以及可以用别人写好的一些遗传算法的工具箱做一些简单的最优值问题。

接着就又回到了之前的论文

Storn R , Price K . Differential Evolution – A Simple and Efficient Heuristic for global Optimization over Continuous Spaces[J]. Journal of Global Optimization, 1997, 11(4):341-359.

我主要做的是差分演化计算,而这篇可以看做是最基础的算法,简称 DE 算法。然后老师让我自己用 C++ 去实现论文中提供的算法。其实就是初始化种群、变异、交叉这几个步骤。然后自己就尝试写了一下,并且算了一些简单的函数的最优值,发现结果还可以,现在都记得当时写出来的开心。

再接下来,就是一篇又一篇的论文。

jADE,jDE 等等,看完以后老师还是让自己尝试着实现。之后给了我老师自己封装好的一个差分演化计算的框架,扩展性或者鲁棒性都会更强一些,让我自己研究一下怎么用,去跑一些数据。

之后问自己看了论文之后有没有什么想法,自己当时也提不出来什么好的 idea。然后老师就会讲一下他的想法,让我在老师的已有的框架下把它写出来,自己去跑一下公开数据集的数据,然后再用之前的算法跑一下,作对比。又学了一下统计软件 Origin 。

当时记忆深刻呀,因为演化计算会设置一个种群迭代的次数,所以得出一次结果其实还是很慢的。当时为了更快得到结果,用舍友的电脑跑,用云服务器 24 小时的跑,不停的跑啊跑。

反正不停的尝试,然后和老师交流,最后找到了一种可以优化的方案,最后把最终的结果以及分析给老师,老师帮忙完成了论文。

一年多最大的收获就是,基本了解了科研的全过程,其实就是看论文,因为论文一般不提供源代码,然后需要自己用代码实现论文里的思想,然后跑数据,然后优化,然后跑数据,然后优化,当优化成功的时候,就可以做一篇论文了。

以至于对后来自己毕业设计也有很大帮助,当时是写深度学习相关的,上手会很快,当老师给一些英文论文的时候也不再害怕了。

其实编程的话不管什么,做之前都会觉得好难呀,当接触一个新的东西的时候又会觉得好难呀。但每当完成以后,再回过头来看,其实也并不难。然后就这样一次一次的战胜自己,再后来看到新的的东西也就不会害怕了,因为已经深信自己一定可以完成的,就像以前一次又一次的成功。

windliang wechat