① 數學建模演算法有哪些
1. 蒙特卡羅演算法。 該演算法又稱隨機性模擬演算法,是通過計算機模擬來解決問題的演算法,同時可以通過模擬來檢驗自己模型的正確性,幾乎是比賽時必用的方法。
2. 數據擬合、參數估計、插值等數據處理演算法。 比賽中通常會遇到大量的數據需要處理,而處理數據的關鍵就在於這些演算法,通常使用MATLAB 作為工具。
3. 線性規劃、整數規劃、多元規劃、二次規劃等規劃類演算法。 建模競賽大多數問題屬於最優化問題,很多時候這些問題可以用數學規劃演算法來描述,通常使用Lindo、Lingo 軟體求解。
4. 圖論演算法。 這類演算法可以分為很多種,包括最短路、網路流、二分圖等演算法,涉及到圖論的問題可以用這些方法解決,需要認真准備。
5. 動態規劃、回溯搜索、分治演算法、分支定界等計算機演算法。 這些演算法是演算法設計中比較常用的方法,競賽中很多場合會用到。
6. 最優化理論的三大非經典演算法:模擬退火演算法、神經網路演算法、遺傳演算法。 這些問題是用來解決一些較困難的最優化問題的,對於有些問題非常有幫助,但是演算法的實現比較困難,需慎重使用。
7. 網格演算法和窮舉法。 兩者都是暴力搜索最優點的演算法,在很多競賽題中有應用,當重點討論模型本身而輕視演算法的時候,可以使用這種暴力方案,最好使用一些高級語言作為編程工具。
8. 一些連續數據離散化方法。 很多問題都是實際來的,數據可以是連續的,而計算機只能處理離散的數據,因此將其離散化後進行差分代替微分、求和代替積分等思想是非常重要的。
9. 數值分析演算法。 如果在比賽中採用高級語言進行編程的話,那些數值分析中常用的演算法比如方程組求解、矩陣運算、函數積分等演算法就需要額外編寫庫函數進行調用。
10. 圖象處理演算法。 賽題中有一類問題與圖形有關,即使問題與圖形無關,論文中也會需要圖片來說明問題,這些圖形如何展示以及如何處理就是需要解決的問題,通常使用MATLAB 進行處理。
以下將結合歷年的競賽題,對這十類演算法進行詳細地說明。
以下將結合歷年的競賽題,對這十類演算法進行詳細地說明。
2 十類演算法的詳細說明
2.1 蒙特卡羅演算法
大多數建模賽題中都離不開計算機模擬,隨機性模擬是非常常見的演算法之一。
舉個例子就是97 年的A 題,每個零件都有自己的標定值,也都有自己的容差等級,而求解最優的組合方案將要面對著的是一個極其復雜的公式和108 種容差選取方案,根本不可能去求解析解,那如何去找到最優的方案呢?隨機性模擬搜索最優方案就是其中的一種方法,在每個零件可行的區間中按照正態分布隨機的選取一個標定值和選取一個容差值作為一種方案,然後通過蒙特卡羅演算法模擬出大量的方案,從中選取一個最佳的。另一個例子就是去年的彩票第二問,要求設計一種更好的方案,首先方案的優劣取決於很多復雜的因素,同樣不可能刻畫出一個模型進行求解,只能靠隨機模擬模擬。
2.2 數據擬合、參數估計、插值等演算法
數據擬合在很多賽題中有應用,與圖形處理有關的問題很多與擬合有關系,一個例子就是98 年美國賽A 題,生物組織切片的三維插值處理,94 年A 題逢山開路,山體海拔高度的插值計算,還有吵的沸沸揚揚可能會考的「非典」問題也要用到數據擬合演算法,觀察數據的走向進行處理。此類問題在MATLAB中有很多現成的函數可以調用,熟悉MATLAB,這些方法都能游刃有餘的用好。
2.3 規劃類問題演算法
競賽中很多問題都和數學規劃有關,可以說不少的模型都可以歸結為一組不等式作為約束條件、幾個函數表達式作為目標函數的問題,遇到這類問題,求解就是關鍵了,比如98年B 題,用很多不等式完全可以把問題刻畫清楚,因此列舉出規劃後用Lindo、Lingo 等軟體來進行解決比較方便,所以還需要熟悉這兩個軟體。
2.4 圖論問題
98 年B 題、00 年B 題、95 年鎖具裝箱等問題體現了圖論問題的重要性,這類問題演算法有很多,包括:Dijkstra、Floyd、Prim、Bellman-Ford,最大流,二分匹配等問題。每一個演算法都應該實現一遍,否則到比賽時再寫就晚了。
2.5 計算機演算法設計中的問題
計算機演算法設計包括很多內容:動態規劃、回溯搜索、分治演算法、分支定界。比如92 年B 題用分枝定界法,97 年B 題是典型的動態規劃問題,此外98 年B 題體現了分治演算法。這方面問題和ACM 程序設計競賽中的問題類似,推薦看一下《計算機演算法設計與分析》(電子工業出版社)等與計算機演算法有關的書。
2.6 最優化理論的三大非經典演算法
這十幾年來最優化理論有了飛速發展,模擬退火法、神經網路、遺傳演算法這三類演算法發展很快。近幾年的賽題越來越復雜,很多問題沒有什麼很好的模型可以借鑒,於是這三類演算法很多時候可以派上用場,比如:97 年A 題的模擬退火演算法,00 年B 題的神經網路分類演算法,象01 年B 題這種難題也可以使用神經網路,還有美國競賽89 年A 題也和BP 演算法有關系,當時是86 年剛提出BP 演算法,89 年就考了,說明賽題可能是當今前沿科技的抽象體現。03 年B 題伽馬刀問題也是目前研究的課題,目前演算法最佳的是遺傳演算法。
2.7 網格演算法和窮舉演算法
網格演算法和窮舉法一樣,只是網格法是連續問題的窮舉。比如要求在N 個變數情況下的最優化問題,那麼對這些變數可取的空間進行采點,比如在[a; b] 區間內取M +1 個點,就是a; a+(b-a)/M; a+2 (b-a)/M; …… ; b 那麼這樣循環就需要進行(M + 1)N 次運算,所以計算量很大。比如97 年A 題、99 年B 題都可以用網格法搜索,這種方法最好在運算速度較快
的計算機中進行,還有要用高級語言來做,最好不要用MATLAB 做網格,否則會算很久的。窮舉法大家都熟悉,就不說了。
2.8 一些連續數據離散化的方法
大部分物理問題的編程解決,都和這種方法有一定的聯系。物理問題是反映我們生活在一個連續的世界中,計算機只能處理離散的量,所以需要對連續量進行離散處理。這種方法應用很廣,而且和上面的很多演算法有關。事實上,網格演算法、蒙特卡羅演算法、模擬退火都用了這個思想。
2.9 數值分析演算法
這類演算法是針對高級語言而專門設的,如果你用的是MATLAB、Mathematica,大可不必准備,因為象數值分析中有很多函數一般的數學軟體是具備的。
2.10 圖象處理演算法
01 年A 題中需要你會讀BMP 圖象、美國賽98 年A 題需要你知道三維插值計算,03 年B 題要求更高,不但需要編程計算還要進行處理,而數模論文中也有很多圖片需要展示,因此圖象處理就是關鍵。做好這類問題,重要的是把MATLAB 學好,特別是圖象處理的部分。
② 數學建模有哪些前沿演算法或者說新穎演算法
一、蒙特卡羅演算法
二、數據擬合、參數估計、插值等數據處理演算法
三、線版性規劃、權整數規劃、多元規劃、二次規劃等規劃類問題
四、圖論演算法
五、動態規劃、回溯搜索、分治演算法、分支定界等計算機演算法
六、最優化理論的三大經典演算法:模擬退火法、神經網路、遺傳演算法
七、網格演算法和窮舉法
八、一些連續離散化方法
九、數值分析演算法
十、圖象處理演算法
③ 數學建模的方法有哪些
這是網上來的,寫得還不錯:
要重點突破:
1 預測模塊:灰色預測、時間序列預測、神經網路預測、曲線擬合(線性回歸);
2 歸類判別:歐氏距離判別、fisher判別等 ;
3 圖論:最短路徑求法 ;
4 最優化:列方程組 用lindo 或 lingo軟體解 ;
5 其他方法:層次分析法 馬爾可夫鏈 主成分析法 等 ;
6 用到軟體:matlab lindo (lingo) excel ;
7 比賽前寫幾篇數模論文。
這是每年參賽的賽提以及獲獎作品的解法,你自己估量著吧……
賽題 解法
93A非線性交調的頻率設計 擬合、規劃
93B足球隊排名 圖論、層次分析、整數規劃
94A逢山開路 圖論、插值、動態規劃
94B鎖具裝箱問題 圖論、組合數學
95A飛行管理問題 非線性規劃、線性規劃
95B天車與冶煉爐的作業調度 動態規劃、排隊論、圖論
96A最優捕魚策略 微分方程、優化
96B節水洗衣機 非線性規劃
97A零件的參數設計 非線性規劃
97B截斷切割的最優排列 隨機模擬、圖論
98A一類投資組合問題 多目標優化、非線性規劃
98B災情巡視的最佳路線 圖論、組合優化
99A自動化車床管理 隨機優化、計算機模擬
99B鑽井布局 0-1規劃、圖論
00A DNA序列分類 模式識別、Fisher判別、人工神經網路
00B鋼管訂購和運輸 組合優化、運輸問題
01A血管三維重建 曲線擬合、曲面重建
01B 工交車調度問題 多目標規劃
02A車燈線光源的優化 非線性規劃
02B彩票問題 單目標決策
03A SARS的傳播 微分方程、差分方程
03B 露天礦生產的車輛安排 整數規劃、運輸問題
04A奧運會臨時超市網點設計 統計分析、數據處理、優化
04B電力市場的輸電阻塞管理 數據擬合、優化
05A長江水質的評價和預測 預測評價、數據處理
05B DVD在線租賃 隨機規劃、整數規劃
演算法的設計的好壞將直接影響運算速度的快慢,建議多用數學軟體(
Mathematice,Matlab,Maple, Mathcad,Lindo,Lingo,SAS 等),這里提供十種數學
建模常用演算法,僅供參考:
1、 蒙特卡羅演算法(該演算法又稱隨機性模擬演算法,是通過計算機模擬來解決
問題的演算法,同時可以通過模擬可以來檢驗自己模型的正確性,是比賽時必
用的方法)
2、數據擬合、參數估計、插值等數據處理演算法(比賽中通常會遇到大量的數
據需要處理,而處理數據的關鍵就在於這些演算法,通常使用Matlab 作為工具)
3、線性規劃、整數規劃、多元規劃、二次規劃等規劃類問題(建模競賽大多
數問題屬於最優化問題,很多時候這些問題可以用數學規劃演算法來描述,通
常使用Lindo、Lingo 軟體實現)
4、圖論演算法(這類演算法可以分為很多種,包括最短路、網路流、二分圖等算
法,涉及到圖論的問題可以用這些方法解決,需要認真准備)
5、動態規劃、回溯搜索、分治演算法、分支定界等計算機演算法(這些演算法是算
法設計中比較常用的方法,很多場合可以用到競賽中)
6、最優化理論的三大非經典演算法:模擬退火法、神經網路、遺傳演算法(這些
問題是用來解決一些較困難的最優化問題的演算法,對於有些問題非常有幫助,
但是演算法的實現比較困難,需慎重使用)
7、網格演算法和窮舉法(網格演算法和窮舉法都是暴力搜索最優點的演算法,在很
多競賽題中有應用,當重點討論模型本身而輕視演算法的時候,可以使用這種
暴力方案,最好使用一些高級語言作為編程工具)
8、一些連續離散化方法(很多問題都是實際來的,數據可以是連續的,而計
算機只認的是離散的數據,因此將其離散化後進行差分代替微分、求和代替
積分等思想是非常重要的)
9、數值分析演算法(如果在比賽中採用高級語言進行編程的話,那一些數值分
析中常用的演算法比如方程組求解、矩陣運算、函數積分等演算法就需要額外編
寫庫函數進行調用)
10、圖象處理演算法(賽題中有一類問題與圖形有關,即使與圖形無關,論文
中也應該要不乏圖片的,這些圖形如何展示以及如何處理就是需要解決的問
題,通常使用Matlab 進行處理)
④ 數學建模需要掌握哪些編程語言和技術
數學建模需要掌握MATLAB、Python、SAS、Lingo等編程語言。