1. 程式人生 > >2017年全國研究生數學建模自記

2017年全國研究生數學建模自記

1.為什麼要參加建模

總的來講研賽題目難度真的要比國賽難度大很多,國賽基本上只有一個問題可以做大量工作,而研賽每個問題都有大量探索性的工作可以做。所以通過數學建模可以提升自己的知識儲備,增加自己的知識積累,豐富自己的技能樹,無論最後拿到什麼獎項,在比賽期間精神和身體都處在崩潰的邊緣,堅持下來就好了,建模前前後後幾個月的努力以及建模四天廢寢忘食的解題過程都是對自己精神的錘鍊。

2.關於組隊和分工

理論上來說,建模三人小隊完美配置應該是一個數學,一個計算機,一個經濟學或工學(材料,機械,金融都可以),但是如果沒辦法保證三個人在建模之前能很好的溝通,一起進行練習,相互交換意見,即形成團隊配合,那麼還是找和自己關係比較好的同學或朋友,數學建模中團隊協作比任何其它因素都要重要。不比本科建模,研究生建模需要完成的工作量真的非常大,不僅僅題目要複雜很多(也許讀懂題目就要1-2天),許多問題都要自己從頭開始,一步步尋找資料,妄想自己一個人完成全部工作是不現實的。
數學建模主要分三個部分:數學模型的建立,程式設計求解和論文寫作。三個小組成員應該同時具備這三種能力,並且掌握基本的數學建模方法,同時三個人又需要各有所長,即某一人更側重於三個部分的某一方面,形成一種相互補充的關係。

3.讀書和訓練

我非常喜歡Frank R.Giordano寫的《數學建模》這本書,從例項出發學習並掌握數學知識,分析方法和原理,由淺入深,對同一個問題不斷深入,從數學的角度闡述解題思路,作為入門讀物非常棒。
這裡寫圖片描述
培養自己用數學的公式表達自己的想法和思路,而不是口語化的寫作方式。這在以後的畢業論文寫作和科研工作中都是非常重要的。熟練使用一門程式語言,matlab是一種常用的建模程式語言,語法簡單,一次性可處理大量資料;java是世界上使用最廣泛的語言,所以與matlab相比,你可以從github上找到許多別人已經寫好的庫和工具箱,比如jsprit(jsprit是一款基於java的開源工具,用來求解各種VRP問題),所以每種語言各有優勢,選擇你喜歡的就好,多加練習,對於數學建模中的程式設計需求完全夠用了。另外還需要使用一些常用的工具(SPSS,Lingo等等)和掌握1-2種現代啟發式演算法(遺傳演算法、模擬退火等等)。
學習優秀論文是一種直接快速的方法,通過歷年的特等獎論文,可以快速掌握一種方法以及它的應用場景,這樣在遇到某些相似問題時可以多一種選擇的途徑。在正式建模比賽之前,全體隊友一起模擬實戰2-3次,不一定要全部解出來,只是先體驗一下這個過程,有一個心裡準備。
論文寫作是非常重要的,清晰的寫作模板可以為你的論文加分,增加你獲獎的概率,平時訓練時一定要注意準備模板,論文寫作過程中一定要去口語化,站在數學的角度去完成論文,多用公式、函式去說明自己的方法。

4.選題和時間安排

前面說了這麼多,做了這麼多準備,但當你拿到建模題目的時候可能還是一臉懵逼,完全不知道如何下手,不會做就對了,如果你一看就知道怎麼做,那說明出題人出的題目太沒水平了。
研究生賽四天三夜,差不多要花一天時間熟讀題目,分析題目細節,構建出大體的解題思路。選題很重要,根據自身情況選擇與自己專業相關的問題,千萬不要想著後面再換題,時間完全來不及的。和你的專業相關性越大,在解題過程中你可以考慮到的細節性問題就越多,就可以比競爭者多寫一些內容。建模題可以說是沒有標準答案的,更多關注的是你的思想和解題思路。所以說在論文寫作一定多用函式和公式,體現自己的建模素養。

5.寫在最後

原本以為自己要好好用到線性代數、數學分析、概率論、數理統計、數值分析等一系列高逼格的數學知識,利用Matlab、SPSS等一系列分析工具,漂亮地解決一個問題……而在整個建模過程,大概用到了涉及線性懵逼、胡亂分析、概率論與目測統計等方法……
這裡寫圖片描述