宋一凡html
環境保護與安全工程學院核安全工程專業程序員
大學生活即將結束,回顧幾年的經歷,數學建模競賽留給我太多的回憶。雖然數模競賽已經遠去,但至今看到聽到「三天三夜72小時」時,精神還會爲之一振。在要告別數模競賽的時候,想寫一點本身零零碎碎的思考和總結,並給之後參賽的學弟學妹一點建議。面試
1. 關於個人數模之路算法
大一從學長口中知道了數模競賽,就想參加,自學了姜啓源的《數學模型》,但校賽時,隊友不給力使第一次校賽不了了之,至今仍然遺憾大一時校賽未能入圍;大二時,和本院的兩個同窗組隊,比我高一級的闖哥給了很多經驗和資料,通過暑假的培訓和屢次模擬賽訓練,12年國賽拿到了湖南賽區的三等獎。編程
13年寒假,留在學校參加美賽,偌大的宿舍樓空無一人,好不淒涼,南方溼冷的冬天讓我這個北方人凍得難以忍受,搞完比賽回到家時已是臘月二十七夜裏,美賽S獎使我很失落,也從中找到了本身的不少不足之處。安全
因今年考研,本不肯參加國賽,但兩位新隊友的盛情邀請讓我不忍拒絕,因而從新組隊,再戰國賽,一雪前恥,最後拿到國家一等獎,爲大學的數模之路畫上一個圓滿的句號。網絡
從大一到如今,關於數模的比賽,熱身賽、校賽、模擬賽、國賽、美賽,大大小小不記得參加過多少次,也不知道熬過了多少個「72小時」。建模、程序員、寫手,三個角色的工做我都認認真真作過,飽嘗裏面的酸甜苦辣,一步一個腳印走來,最後獲得一個不錯的成績,收穫頗多,感觸頗深。框架
數模給我打開了一扇窗,窗外的世界帶給我不同的精彩,而不只僅是拿幾張證書,加幾分綜測。外人看來,數模痛苦、費人,而我感受數模自由、快樂。尤爲是競賽結束,早上八點交卷的時刻,通過三天三夜的努力,隊友通力合做,從第一天的束手無策,到最後一天的順利解決,疲憊、興奮、知足、急切、不安,不少的感覺一時涌上心頭,那是隻有真正參加比賽的人才能體會到的快樂!編輯器
2. 關於數學建模競賽的做用函數
在作一件事情以前總會去思考作成這件事情有什麼好處,這樣的內心再正常不過了。而數模競賽這種須要投入不少時間和精力的事情,更須要好好決定下是否要參加。指導老師說:數模「費時間,強意志,提能力」,我以本身的經從來講下數模競賽的做用。
2.1 對自身能力的提升
參加數模競賽能夠提升自身能力,這一點是毋庸置疑的,全國數模競賽組委會的網站上都有寫「一次參賽,終生受益」。可能一兩次的比賽看不出來,通過屢次競賽的鍛鍊,與沒有通過數模競賽的人相比,就會慢慢感覺到這種細微的變化:
在遇到一個問題時,你會更多地去關注其內部的數學規律;在問題比較複雜時,也會更快地找到問題的關鍵所在;在任務繁重時,你的工做效率會更高;在須要熬夜工做時,你的耐力也會好過其餘人……
學習的不少專業課程,其總體思路和數模是相似的,數模的訓練使你學習更快;對與科研工做,一次數模比賽的過程就是解決一個課題的縮影,兩者在流程上十分的相似,數模也培養了你科研的實力;甚至是單單寫一篇論文,你完成起來也更加容易……
指導老師說:有了數模的鍛鍊,畢業設計可能不過是一個星期的事情,甚至只要三天三夜就能搞定。有一點誇張,卻也說明了數模的巨大做用。
2.2 對考研和保研的做用
今年7月我去中國科學技術大學參加夏令營,面試環節中,我和麪試的三個老師並無談物理、加速器等專業相關問題,而是討論了數模中所用到的「神經網絡及其MATLAB實現」,最後順利經過了面試,拿到了「提早面試經過函」這張免死金牌,這在很大程度上歸功於在數模競賽中積累。
因爲南華大學的檔次不高,考研複試時每每受到歧視被刷。而一位拿過美賽S獎的學長說:「我在面試中差很少是免試的,其功勞能夠說是歸功於個人數模歷程的」。
2.3 對工做的做用
有數模的經歷,應聘時拿幾張數模的獲獎證書,在找工做時候,必定更受青睞,我認識一個機械的學長,畢業時因爲數模的經歷拿到一份很好的工做。
就我而言,在參加數模以前,計算機方面是個徹頭徹尾的小白,word都玩不轉,兩年數模經歷,我長了很多知識,並且結交了不少學長、朋友,他們給個人影響和幫助已經遠遠超過了數模競賽自己。
3. 關於組隊
兩年參加國賽,我是在兩個不一樣的隊中,並且我也見到一些因爲組隊不當而形成比賽失利的狀況,在組隊方面也有一些感覺。
想要拿到好成績,一支優秀的隊伍是必須的,三個隊友的我的素質不容馬虎。不論特長與能力,至少要對數模有積極性,可以踏實作事,認真負責,隊長分配的任務必須按時完成;準備、培訓到比賽的整個過程要能完整參與,不能半途而廢;有學習的熱情,對新東西要有比較強的好奇心和求知慾;學習能力強,能比較快地接受新知識;時間觀念要比較強,可以高效率工做。
我很推薦不一樣學科背景的同窗組隊,今年參加國賽時我所在隊伍的三我的專業分別是核技術、核安全工程、預防醫學,分別是偏理、偏工、偏醫學,在分析問題時候不一樣知識結構更能碰撞出好的思路。若是三我的來自一個專業或是一個學院,平時上一樣的課,學相同的知識,就會造成相似的知識結構,倘若題目恰是三我的共同盲區,不就死掉了。
借用一點隊長的看法,三我的中最好有一個思惟比較「跳」,腦海裏每每有一些新奇的東西,常常閃現出一些火花,在論文中造成亮點;單有這我的也是不夠的,還須要有一我的踏實一點,防止前面那個思惟飛得太遠,不切實際,作不出結果。這樣的隊伍完成的論文就會感到有張有弛,既有條理的思路、嚴謹的推導,又有突出的亮點,有別與其餘隊伍。
隊長很重要,雖然只是三我的的隊伍,可是隊長也如同軍中之統帥。隊長要決定任務的分配,把握思路的走向,規劃時間的安排,責任重大。
隊友之間不能有溝通障礙,要相互尊重和信賴,若是在比賽的過程當中隊內互相掐架,怎能完成論文?
男女搭配,幹活不累,此言不虛也。隊中有妹子,必是極好的。
4. 關於分工
按照通常的說法,隊伍中的三我的,一個建模,一個編程,一個寫做。
建模的隊友,要有比較好的數學功底,熟悉各類模型的適用條件,明白他們的前因後果;程序員要負責模型的求解,至少要會MATLAB,並有大量實戰的經驗;寫手要把作好的東西以論文的形式完美呈現,有時候一篇文章行文流暢、思路清晰的做用甚至超過了建模自己。
比較好的一種組合是,每一個人在本身負責的方面要精通,同時對其餘兩個方面有必定的瞭解。例如,三我的都要有各類模型的基本瞭解;要知道程序員實力如何,不能創建一個程序員無法求解的模型;三我的都要有一點寫做的底子,本身作的工做本身寫,可能比寫手直接寫更省時間,寫的東西也更準確。
今年我所在的隊伍分工大概是這樣的,隊長曾玉讀核技術專業,思惟活躍,總有新奇的點子,主攻評價類模型,負責論文排版、寫做、圖形圖形處理方面的工做;吳文博讀預防醫學專業,善於統計和SPSS軟件,主攻各種統計模型,英文好,搜索文獻能力強;我讀核安全工程專業,去年參賽時又作建模又作寫做,今年作程序員,主攻理工科背景的模型以及各種模型的MATLAB實現,解決建模中遇到的各類計算機方面的問題。
分工雖是如此,可是並不嚴格:曾玉雖主要寫論文,可是在各種模型上都有所涉獵;吳文博雖主攻統計,但其餘模型也略知一二,因此能夠把統計模型與其餘模型很好結合在一塊兒;我雖然是程序員,但也能夠把本身作的工做完整寫成論文。三我的能力互補,在遇到各種問題時都能遊刃有餘,不至陷入盲區。
例如在今年的國賽中,咱們所作的題目是「車道被佔用對城市道路通行能力的影響」,一共四個問題:前兩問題是統計的問題,吳文博的長處得以發揮;後兩問創建車流波動模型,須要物理知識和編程,正是我能夠作的;咱們作的工做寫成初稿交給曾玉,她能夠寫成一篇高質量的論文。
5. 關於知識儲備
數模競賽所須要的知識太多,方方面面,難以理出個頭緒。有些觀點說,數模知識不須要學,比賽時候現學現用就能夠。我並不一樣意這一觀點。
我認爲應該在準備競賽的過程當中儘量多學,肚子裏東西越多,看問題就越深,前期掌握了的東西,就不用在比賽的時候花力氣去學,省下來的時間能夠把文章做出亮點。我曾經看過2011年題目「重金屬污染」的國家一等獎論文,深有感觸,和我校那年參賽時的論文相比,國一論文中作得工做量至少是我校論文的兩倍。若是不是前期的積累,哪有時間作這樣多的內容,譬如論文中的「偏微分方程數值解」是不可能在比賽的幾個小時內就學會使用的。
下面分別談下各方面的知識儲備。
6. 關於數學模型和算法
參賽者大可能是從姜啓源的《數學模型》開始接觸各種模型的,我也是如此。這本書淺顯易懂,是數模入門的好書,可讓你懂得什麼是數學建模、建模的流程是怎樣的、有哪些方面的模型、每種模型的整體思路。可是在實際參加比賽時,這本書的實用性不強,難以應對比賽中遇到的複雜問題。準備參加比賽,要對每一種模型和算法有更爲深刻的學習。
系統學習各種模型和算法,能夠看《數學建模算法與程序》(司守奎,海軍航空工程學院,http://wenku.baidu.com/view/fb7d696e7e21af45b307a845.html),俗稱「算法大全」。這本書有900多頁,涵蓋了比賽中用到的大多數模型,並且每一種模型都有MATLAB代碼,實用性較強,能夠系統學習,也能夠做爲工具書查閱。
學習過程當中,沒必要太過細究其理論,要着重考慮的是:基本思路是怎樣的,能夠解決哪些問題,如何求解,關鍵點或者最難解決的部分在哪裏。
如下是我使用一些模型時的感覺以及對學習的建議。
1)優化
各種優化模型永遠是數模中的熱點,各種實際問題的目標每每是使其達到最優,個人感覺是,優化模型的創建和求解都是難點。
先說建模,在一個複雜的問題中每每分不清哪一個是目標函數,哪一個是約束條件,哪些條件是重要的,哪些條件能夠忽略,明知道是一個優化問題,老是寫不出優化的模型。再說求解,簡單的模型能夠藉助LINGO軟件編程求解,複雜的多維非線性優化模型還須要藉助相關智能算法,選擇的算法是否適用,運算效率如何,智能算法中參數如何肯定,是否達到全局最優仍是隻求出了一個局部最優解,都是要仔細考慮的問題。
因此要多作練習,多看些複雜題目的論文,細細揣摩其中的思路,提升分析優化問題的能力。
2)統計
統計類模型很是重要,近幾年,國賽數據量逐年加大,彷佛也預示着大數據時代的到來,相關的統計方法和數據挖掘技術也滲透到數模之中,如數據處理、迴歸分析、假設檢驗、因子分析、聚類分析、通徑分析等等,可與SPSS軟件一塊兒學習。
3)預測類模型
包括了迴歸預測、灰色預測、馬爾可夫鏈、時間序列等等,選擇合適的模型是關鍵。預測結果很差是很正常的,能夠嘗試多種模型結合,如時間序列搭一個神經網絡,能夠起到必定的修正做用。
4)評價類模型
評價類的模型大多有一些主觀的成分在裏面,可以自圓其說便可。你們的方法都相似,做出亮點才能吸引評委。例如某年國賽題目「上海世博會經濟影響力評價」,一篇國一的論文就引入了了「Google搜索量的變化」這一評價因子,成爲亮點。
評價方法包括模糊綜合評價、層次分析法等等,大同小異。我認爲主要問題在於權重,權重肯定要合適、準確、讓人信服,在生產實際中,每每採用專家打分的方法,可是在比賽中除了隊友不能與其餘活物打交道,權重肯定只能經過查閱文獻得來。
5)圖論
圖論是一個相對獨立又十分難學的部分,第一次聽圖論課的場景至今心有餘悸。可是圖論的應用又是十分普遍的,不少題目歸根到底就是一個圖論題。例如2013年國賽的「拼圖題」(B題),整體的思路就是一個「旅行商TSP問題」,只是又複雜了許多。
圖論的學習重在程序實現,不少算法的程序是現成的,如kruskal算法的MATLAB程序,就不須要本身一點一點去敲,平時要注意相關代碼的積累。
6)智能算法
隨着數模的題目複雜度愈來愈高,求解難度愈來愈大,傳統的求解方法在複雜題目面前簡直不堪一擊,學習智能算法是必須的。從最基本的神經網絡和遺傳算法學起,而後有模擬退火算法、粒子羣算法等等,其應用很是普遍。
推薦《MATLAB智能算法30個案例分析》(MATLAB中文論壇系列書籍,北京航空航天大學出版),每種算法都用於一個實際的案例,並有詳細的代碼分析。還能夠看「MATLAB中文論壇」的視頻教程http://www.ilovematlab.cn/thread-22239-1-1.html。
7)實際模型
在遇到具體問題時,要在通用模型的基礎上,查閱該學科的文獻資料,選擇有學科背景的模型,更有說服力。例如,11年「重金屬污染」,評價污染程度時候,就要採用「地積累指數法」;13年「車道佔用對交通流量的影響」,須要採用「車流波動模型」
數模中用到的模型還有不少沒有說到,例如微分方程模型、數值計算、蒙特卡羅方法等等,學習模型是個長期積累的過程,要多學習,多應用,一個模型只有實際去解決一個問題並獲得結果,才能算是真正學會。
7. 關於程序員
程序員的任務是把創建的模型用程序求解,還要解決比勝過程中遇到的各種與計算機有關的問題,下面分軟件來談談如何煉成一個合格的數模程序員。
1)MATLAB
MATLAB的強大天然沒必要說,有人問我,作數模能不能不學MATLAB?我回答:除非你的C足夠強,不然就老老實實去學吧。
學習開始,要打好矩陣運算的底子,在整個編程的過程當中要有矩陣的思想,而後再分塊分模型去逐個擊破。平時練習中寫的代碼要及時保存,也要注意積累其餘人的代碼,按期整理,比賽時拿來就用,不須要從新寫。
必定要有一本教程和一本函數手冊,推薦《MATLAB語言實用教程》《MATLAB數學實驗與建模》(馬莉,清華大學出版社),《MATLAB函數速查手冊》(鄧薇,人民郵電出版社)。
MATLAB作圖功能很重要,必定學好,論文中一張好看的圖頂一大段話。
要善於使用網絡資源,「MATLAB中文論壇」是個好去處。
遇到不懂的函數,能夠查幫助文件,英文並不難,這是最準確的說明。
不要總寫腳本,要學着寫函數,提升運行效率。
MATLAB編程的方法和技巧,網上太多了,多看多學多交流。
2)SPSS
SPSS操做並不難,要與統計知識一塊兒學習。因爲涉及的知識比較多,能夠將MATLAB和SPSS分給兩我的去學習。
3)LINGO
在規劃問題上,LINGO和MATLAB相比,編程簡單,運算效率高。學起來也很容易,推薦參考書籍《LINGO和Excel在數學建模中的應用》(袁新生等,科學出版社,http://ishare.iask.sina.com.cn/f/60817679.html)。
4)latex
論文寫做的軟件,通常都選word,可是latex排本效果更好。尤爲是英文排版上,與latex排出的效果相比,word的效果簡直不堪入目,因此美賽推薦使用。Latex學習曲線陡峭,若是沒有事先學好,匆匆使用,會帶來很大的麻煩。找好模板,比賽前練習完整寫一篇文章,比賽時就能應用自如。
使用Ctex中文套裝便可,套裝中的幫助文件是不錯的入門書籍。極力推薦「Chinatex」網站的視頻教程:http://www.chinatex.org/?page_id=218.
5)Excel
普通的數據處理,excel必不可少,若是有時間能夠學習「excel宏和VBA」,但用處並非特別大,它能實現的功能,均可以經過MATLAB編程實現。
6)各類圖形相關的軟件
VISIO做流程圖,AutoCAD作工程圖,Google sketchup作三維立體模型,photeshop或是美圖秀秀作圖形處理……這些圖形類軟件的簡單使用須要掌握。
7)其餘
Mathtype 寫數學公式(使用快捷鍵,至少要會Ctrl+h和Ctrl+l吧);adobe acrobat 處理pdf;
文本編輯器,高手裝13用VIM,普通至少要用sublime text或者notepad++吧,用記事本怎麼對得起「程序猿」這三個字呢?
資料太多,推薦everything搜索文件,totalcommander整理文件;
8. 關於論文寫做
最後拿給評委看的就是論文,論文寫做的好壞及其重要。寫手主要要解決兩個問題:文筆和排版。
文筆:文章的思路要清晰,語言要準確簡練,可以把作的工做清楚地寫出來,須要有必定的功力。多看些優秀的論文,看論文的結構,如何引入問題,如何敘述模型,如何描述結果,如何分析偏差,如何與實際聯繫,都要仔細體會。
排版:學習word排版能夠看《word排版藝術》(侯捷),也能夠選擇用latex來完成論文(要慎重!)。主要的問題有字形字號頁碼行距,圖形、表格的排版、配色,公式規範書寫等等,不少問題都在細微之處,可是細微之處的毛病在評委看來就很是扎眼。在模擬賽中,最好拿一篇寫好的論文給指導老師仔細修改,改正其中的錯誤;正式比賽前作一個模板出來,比賽論文直接往進套。
論文寫做中最重要的是摘要的寫做,在最後一天晚上,必定要空出幾個小時仔細寫摘要,三我的一塊兒修改,裏面的內容要字斟句酌,無一廢話,主要的句式就是「使用什麼方法,得出什麼結論,解決什麼問題」,並且要着重寫出文章的亮點。
9. 關於優秀論文學習
學習往年的優秀論文很重要,就像練習英語閱讀,也要泛讀和精讀相結合。
泛讀的文章要看文章的思路,使用了那些模型,各部分如何銜接,文章有什麼突出的亮點,那些方法是本身沒有見過的,要拿來學習。
精讀更爲重要,要選出有表明性的文章拿來精讀。精度不能僅僅侷限在讀,最好是三我的實戰作一遍題目,找資料,建模型,寫程序,得結果,分析偏差,最後必定要本身拿出一篇完整的論文,不能只是從優秀論文中拿過來粘貼。論文寫好再和優秀論文比較,就能看出差距,最好能和指導老師一塊兒分析一下。有些問題和bug只有實際去作了,才能發現,早點處理掉,不然在比賽的72個小時裏解決,影響心情,影響進度。
10. 關於模擬賽
學校的培訓每一年都會安排幾回模擬賽,個人感覺是一次模擬賽可以學到的東西比在平時10天學到的都多,同時也是隊員之間相互瞭解相互磨合的過程。模擬賽必定要認真對待。
雖爲模擬,但也要拿出實戰的感受來完成題目。若是題目不難,能夠自行把時間縮短,來鍛鍊工做的速度。除了學校舉辦的比賽,隊內三我的能夠拿往年的題目來本身組織模擬賽,作完後與優秀論文比對。還有一些網絡賽,能夠進行練習。
不過模擬賽畢竟只是模擬,不要累壞本身,尤爲是比賽前的那次,一次模擬賽死多少腦細胞,正式比賽時沒有精神就很差了。
11. 關於正式比賽
前面的準備工做作得再好,等到正式比賽那天8:00公佈題目時,也會有措手不及的趕腳。只要按照以往的節奏,一點一點作下去,三天三夜,是必定能把問題解決的。
最開始的審題很是重要,咱們隊的作法是題目出來後,打印稿每人拿一份,各自分析一個小時,期間並不交流,只是各自理出對問題的分析和基本的解決方案;一小時後,一塊兒討論,交流對題目的見解,同時肯定選作哪一個題目,並肯定基本的思路和分工。某些隊伍直到第一天晚上還在嚷嚷着選題,在他們白白浪費了一天的時候,咱們已經完成了不少工做。
接下來就查閱文獻,查閱文獻的廣度和深度,直接決定了論文的質量,經過文獻的分析,調整思路,最終肯定文章的結構和分工。而後,建模者和程序員開始建模求解,寫手就能夠開始寫論文,搭起論文的總體框架,完成一些不過重要的部分(如問題背景)。論文必定要從最開始就寫,不能等到把全部的東西所有搞定,到第三天才開始寫,那樣太過倉促。
第一天晚上,三我的都須要回去睡覺,好好休息,至少要睡六個小時。
若是進展順利,到次日晚上,基本能夠完成建模部分和某些部分的求解。若是須要,次日晚上程序員能夠適當熬夜,把模型求解的結果弄出來;若是程序複雜,也能夠放在次日晚上跑。第二個晚上,若是進度跟不上,就不要回去睡覺了,後半夜眯幾個小時就行;若是進度很快,第二個晚上也能夠回去睡,爲第三天晚上的衝刺保存體力。
第三天在前兩天工做的基礎上再作進一步的模型優化和推廣,使之與實際狀況更加吻合,或是有新的想法,插在前面的內容中。第三天的傍晚的時候,論文就要基本成型了,到晚上零點以前的時間,總稿,排版論文,最後的論文必定是隊裏三我的都要檢查過的。
最後一晚上是必定要通宵的,寫摘要,改摘要,檢查論文中的錯別字,最後定稿,標好版本序號,別最後提交的是一個半成品。雖然8:00交卷,可是能夠提早半個小時到一個小時交卷,防止堵塞現象形成提交失敗。
比賽中隊友之間的交流、分工和配合很重要,要防止出現作重複工做的狀況,也不能出現一個時間段內有某個隊友無事可作,這就須要隊長的領導和協調。
比勝過程中注意文件的備份,尤爲是寫好的部分論文的備份。防止出現一我的電腦掛掉,而後就沒有而後了。此外,最後有一臺備用電腦,裏面裝好建模所須要的全部軟件,以備不時之需,也能夠用來跑一些花費時間較長的程序。
比勝過程中要保持三天高效率的工做狀態,要吃好喝好,學校提供了一餐15元標準的免費飯菜,還有各類水果,最後一晚上面包、泡麪、咖啡、巧克力,三天過得仍是蠻滋潤的。
比賽結束後,不要把三天的文件放在刪掉了事,萬一獲獎通知去答辯時,只留下一篇論文,還要再從新弄一遍。
12. 關於美賽
美賽和國賽相比,有許多的不一樣,網上有各類總結,再也不贅述。其實,美賽獲獎比國賽要容易一點,由於畢竟參賽隊伍少,獲獎率高,大概有一半能獲二等獎以上。
美賽的評閱標準和國賽不一樣,美賽建模不須要太複雜,主要看思路是否是有創意。我參加13年美賽作「烤麪包」的題目,用了複雜的三維傳熱方程,用有限元方法求解,弄的很複雜,仍是沒有受到老美的青睞。
英文論文的寫做是個考驗,通常採起的方法是找翻譯,咱們隊找到了大學英語老師做爲翻譯,最後一天跟咱們熬夜翻譯,纔算弄出論文來。我瞭解到,中國礦大也是這麼作的,最後一天集中不少英語老師來翻譯文章。
13. 寫在最後
「數模傷身體,參賽需謹慎」,比賽真的很辛苦。每次比賽完後,總有腦細胞死傷太多的感受,幾天都緩不過來。親眼看到一個胖胖的學長搞完一個暑假的數模後瘦了一圈,不失爲一個減肥的好方法。
至今依然懷念暑假一塊兒集訓的日子,幾十個參賽者無私分享,激烈討論,交流方法,幫忙查bug,天天奮鬥到深夜,真是一段激情燃燒的日子。
衷心祝願母校的數模發展蒸蒸日上!
祝願各位指導老師身體健康,工做順利!
祝願後起的學弟學妹可以得到更好的成績!
告別數模!