寫寫做數模競賽的經驗
我從大一寒假的美賽開始做數模,當時做MCM複雜網路的題目,得了H獎。大二的時候參加了國賽沒有得獎,美賽因為時間不合適沒有參加。大三的時候得了校賽一等獎、國賽省一等獎和美賽M獎。大四參加了國賽,得了全國二等獎,目前正在準備美賽,也是最後一次參賽了,所以想借這個機會認真總結一下一路走來的經歷和收穫。
1.什麼是數學建模
數學建模是把一個實際問題,通過適當的假設和抽象,提煉成一個數學問題,並用合適的方法求解,最終得到合理結果的過程。
最簡單的例子是小學時候的應用題,比如航行問題:甲乙兩地相距750千米,船從甲到乙順水航行需30小時,從乙到甲逆水航行需50小時,問船的速度是多少? 我們首先要做出合理假設,假設船速和水速都是常數。然後用符號表示相關量,距離d>0千米,順水a小時,逆水b小時(b≥a>0),未知量:x, y表示船速和水速(千米/小時,x>y≥0)。接著用物理定律(勻速運動的距離等於速度乘以時間)列出數學式子(二元一次方程)。接著進行求解和檢驗,帶入原問題得知船的速度。
這就是通過數學建模解決問題的過程。
2.數學建模競賽的一般流程
數學建模競賽要求三個人三到四天的時間解決一個實際問題,提交一篇論文。大體的步驟包括選題、查閱文獻、確定模型、程式設計求解、寫論文五個步驟。一般分工為建模、程式設計和寫論文,但是不能太明確,每個人都應該參與每個步驟中,尤其是建模的時候,需要三個人的頭腦風暴。程式設計求解以後,應該一個人主寫論文,其他人補充結果、做結果圖、示意圖,輔助完成論文。論文完成後,要花足夠的功夫寫摘要,三個人一起討論一起修改。
3.隊伍組建原則
在我看來,標準的隊員分佈應該是一個理科生(數學或者物理專業),一個計算機或者相關電類工科學生(熟悉程式設計),另一個可以是文科生或者工科生。三個人中最好有一個是女生,女生建模程式設計可能稍差一點,但是寫論文、畫示意圖時的細心和規範是比男生強很多。一個完美的數學建模過程應該是工科生的思維,理科生的方法,文科生的表達。
4.基本問題和基本模型
基本問題有三類:優化問題,評價問題,預測問題。
優化問題:優化問題是最經典的數模問題,但是據我的幾次比賽經驗,優化問題相對比較少,或者比較偏數學,選的人會比較少。主要用到的優化方法包括線性規劃,整數規劃,非線性規劃等規劃方法。把問題歸結為規劃問題求解也是科研中經常用到的方法,如果合理使用解決了問題是一件非常有成就感的事情。優化問題也可以用啟發式演算法求解,比如遺傳演算法、蟻群演算法等,在解決排程問題等偏“演算法”而不是偏“數學”的問題的時候使用比較多。
評價問題:評價問題在比賽中出現得很多,一般前面一問對問題的各個因素進行評價,後面一問進行預測或者做其他研究。一般的方法包括層次分析法、模糊綜合評價法、因子分析法等方法,但是我不太喜歡這樣的題目,覺得評價類問題主觀性相對較大,缺乏那種“解決問題”的美感(也可能是我境界太低,歡迎拍磚)。
預測問題:預測問題一般分兩部分,一是對已有的資料進行分析,得到兩個量之間的關係。二是對兩者的進一步發展做出預測。第一部分是關鍵,主要用到的問題包括微分方程、迴歸、時間序列法、灰色系統法等,還有神經網路、SVM等機器學習的方法如果比較熟悉也可以用。
這三類問題中,我個人比較喜歡偏“演算法”類的優化問題以及預測問題,對偏“數學”的優化問題一般不敢選,評價問題往往無法避免但是一直做得不太滿意,還請各位指導。
5.關於創新點
有所創新是比較難的,一旦有就是文章的一大亮點,但是通常“解決問題”才是最重要的,如果通過大量查閱文獻發現以前已經有了很多研究,很多成熟的方法,或者說已經有了跟自己原始的想法相近的解決方法,那麼就用文章裡成熟的方法就行(這也說明了大量查閱文獻的重要性,如果文獻裡有相近的思路,那麼相比自己想會既快又好)。一定要記住“解決問題是第一位的”,不要盲目追求創新。創新點的主要來源應該是在自己以前有的研究經歷或者學習經歷中深入思考過的問題,爭取能夠巧妙得結合在一起。這樣能做的比較順利,也會很有成就感。
6.關於論文
論文的幾個主要部分:摘要、問題重述、假設、符號定義、模型建立、模型求解、靈敏度分析和優缺點分析。
摘要大家知道,非常非常重要,是評委首先關注的東西。要做到簡練、準確、清晰,讓評委能看清楚做了哪些東西,有什麼亮點。
問題重述抄一下題目或者用自己的話表述一下都行,沒人關注這一塊。
假設很重要,是數學建模的精髓所在,要把一個實際問題進行抽象、簡化,變成一個數學問題,假設部分就是這個抽象和簡化的過程。一個最經典的假設是高中研究了很多的“質點”,任何一個東西都能歸結成一個有質量的點,會大大有利於後面的研究。在數模比賽中的例子包括在交通建模中,我們可以假設只有一個車道,假設車輛大小相同,假設一段沒有紅綠燈的道路車輛勻速行駛,有紅綠燈時車輛先勻減速、等待紅燈、再勻加速,等等。假設的合理性直接決定了模型的合理性和難度。我的建議是模型假設一定要“大膽”,不要怕假設得太理想,尤其是當不使用文獻中模型而是自己提模型的時候。如果覺得自己的模型太過簡化,可以等後面再逐步提出擴充套件的、難度加深的模型,也可以留在結果分析的時候多說一點模型與現實之間的區別,如果說得好還可能成為一個亮點。
符號定義部分比較簡單,但是要注意用三線表,要分佈行,另外建議這裡定義過的變數在模型中真正使用的時候再說明一次,方便評委閱讀。
模型建立和求解是主幹部分了,幾個建議,一是要小標題或者文章分段要清晰、明白,多分點敘述。二是多圖多表,包括示意圖、流程圖和表達資料的曲線圖等,這些圖是評委在看模型的時候重點關注的。三是表達的邏輯性是很重要的,要首先想清楚自己的邏輯,然後寫明白,要從一個旁觀者的角度看看自己的表達能不能讓人看懂。
靈敏度分析,靈敏度分析是必不可少的一部分,據說有些評委會因為沒有這一部分而直接拍死一篇論文。靈敏度分析要做的事情是微調模型中的引數,看最終結果是否會有較大的改變,改變的程度就稱為模型對這個引數的靈敏度。比如在最開始的航行問題中,將引數a或者b微調1%,看看最終結果會改變多少。
優缺點比較簡單,要注意的是缺點可以大膽地寫,不用擔心,如果能切中要害在評委看來也是一個加分項。
先寫這麼多,想到再補~~