1. 數學建模全國獲獎的論文大多都採用的是什麼演算法是不是某些演算法獲獎的概率比較高
演算法的設計的好壞將直接影響運算速度的快慢,建議多用數學軟體(
Mathematice,Matlab,Maple, Mathcad,Lindo,Lingo,SAS 等),這里提供十種數學
建模常用演算法,僅供參考:
1、 蒙特卡羅演算法(該演算法又稱隨機性模擬演算法,是通過計算機模擬來解決
問題的演算法,同時可以通過模擬可以來檢驗自己模型的正確性,是比賽時必
用的方法)
2、數據擬合、參數估計、插值等數據處理演算法(比賽中通常會遇到大量的數
據需要處理,而處理數據的關鍵就在於這些演算法,通常使用Matlab 作為工具)
3、線性規劃、整數規劃、多元規劃、二次規劃等規劃類問題(建模競賽大多
數問題屬於最優化問題,很多時候這些問題可以用數學規劃演算法來描述,通
常使用Lindo、Lingo 軟體實現)
4、圖論演算法(這類演算法可以分為很多種,包括最短路、網路流、二分圖等算
法,涉及到圖論的問題可以用這些方法解決,需要認真准備)
5、動態規劃、回溯搜索、分治演算法、分支定界等計算機演算法(這些演算法是算
法設計中比較常用的方法,很多場合可以用到競賽中)
6、最優化理論的三大非經典演算法:模擬退火法、神經網路、遺傳演算法(這些
問題是用來解決一些較困難的最優化問題的演算法,對於有些問題非常有幫助,
但是演算法的實現比較困難,需慎重使用)
7、網格演算法和窮舉法(網格演算法和窮舉法都是暴力搜索最優點的演算法,在很
多競賽題中有應用,當重點討論模型本身而輕視演算法的時候,可以使用這種
暴力方案,最好使用一些高級語言作為編程工具)
8、一些連續離散化方法(很多問題都是實際來的,數據可以是連續的,而計
算機只認的是離散的數據,因此將其離散化後進行差分代替微分、求和代替
積分等思想是非常重要的)
9、數值分析演算法(如果在比賽中採用高級語言進行編程的話,那一些數值分
析中常用的演算法比如方程組求解、矩陣運算、函數積分等演算法就需要額外編
寫庫函數進行調用)
10、圖象處理演算法(賽題中有一類問題與圖形有關,即使與圖形無關,論文
中也應該要不乏圖片的,這些圖形如何展示以及如何處理就是需要解決的問
題,通常使用Matlab 進行處理)
2. 數學建模中,給出非常多的節點,求這些節點的最短路徑(類似一條線的路徑),應該用什麼演算法好
下面是我自己編寫的一段代碼,用來求過包含兩千多個點的最短路,速度很快,比遺傳、蟻群快而且最短路更短。你可以試試看,有問題再問我。
function [S,len]=short(P)
% 此程序用來求相同類型點間的最短路
% P表示某一類型的點的坐標矩陣
% p是最短路徑
% d是路徑權值和
%建立權值矩陣
n=length(P);%求該類型點的數量
W=zeros(n,n);
for i=1:n %計算權值並填充權值矩陣,由於各點聯通,此權值矩陣就是該圖的最短路矩陣
for j=(i+1):n
W(i,j)=sqrt((P(i,1)-P(j,1))^2+(P(i,2)-P(j,2))^2);
end
end
for i=2:n
for j=1:(i-1)
W(i,j)=W(j,i);
end
end
%求通過所有點的最短路
%先求從i點至j點,必須通過指定其他n-2個點的最短路,選出其中的的最短路
S=zeros(1,n);
S(1)=1; %先插入1,2點,以此為基準,每次插進一個新點
S(2)=2;
d1=2*W(1,2);
for i=3:n %新加入的點的標號
d1i=zeros(1,i); %插入第i個點,有i中可能的距離,其中最小值將為該輪的d1
for j=1:i %新加入點的位置,插入第i個點是有i個空位可供選擇
if j==1 %在第一個空位插入
d1i(j)=d1+W(i,S(1))+W(i,S(i-1))-W(S(1),S(i-1)); %插入點在首端時,距離為原距離與第i點與上一次插入後的第1位置的點之間距離之和
end
if j>1 & j<i %在中間的空位插入
d1i(j)=d1+W(S(j-1),i)+W(i,S(j))-W(S(j-1),S(j));
end
if j==i
d1i(j)=d1+W(S(i-1),i)+W(S(1),i)-W(S(1),S(i-1));
end
end
[d1,I]=min(d1i);
S((I+1):i)=S(I:(i-1)); %將第I位後面的點後移一位
S(I)=i;%將第i點插入在I位置
end
len=d1;
下面這段代碼是我用來把上面的結果保存到txt文件中的代碼,如果你需要,可以用用。代碼是我上次用過的沒有改,你自己按照需要自己改吧。
clear
close all
clc
loaddata
X=[C;E;I;J];
[S,len]=short(X);
DrawPath(S,X);
print(1,'-dpng','cmeiju3.png');
% 將結果保存至txt文件
fid=fopen('cmeijulujin.txt','wt'); %創建alunjin.txt文件
fprintf(fid,'c號刀具\n');
fprintf(fid,'%d %d\n',X(S));
save('cmeijus','S');
save('cmeijulen','len');
3. 數學建模的方法有哪些
預測模塊:灰色預測、時間序列預測、神經網路預測、曲線擬合(線性回歸);
歸類判別:歐氏距離判別、fisher判別等 ;
圖論:最短路徑求法 ;
最優化:列方程組 用lindo 或 lingo軟體解 ;
其他方法:層次分析法 馬爾可夫鏈 主成分析法 等 。
建模常用演算法,僅供參考:
蒙特卡羅演算法(該演算法又稱隨機性模擬演算法,是通過計算機模擬來解決 問題的演算法,同時間=可以通過模擬可以來檢驗自己模型的正確性,是比賽時必 用的方法) 。
數據擬合、參數估計、插值等數據處理演算法(比賽中通常會遇到大量的數 據需要處理,而處理數據的關鍵就在於這些演算法,通常使用Matlab 作為工具) 。
線性規劃、整數規劃、多元規劃、二次規劃等規劃類問題(建模競賽大多 數問題屬於最優化問題,很多時候這些問題可以用數學規劃演算法來描述,通 常使用Lindo、Lingo 軟體實現) 。
圖論演算法(這類演算法可以分為很多種,包括最短路、網路流、二分圖等算 法,涉及到圖論的問題可以用這些方法解決,需要認真准備) 。
動態規劃、回溯搜索、分治演算法、分支定界等計算機演算法(這些演算法是算 法設計中比較常用的方法,很多場合可以用到競賽中) 。
最優化理論的三大非經典演算法:模擬退火法、神經網路、遺傳演算法(這些 問題是用來解決一些較困難的最優化問題的演算法,對於有些問題非常有幫助, 但是演算法的實現比較困難,需慎重使用) 。
網格演算法和窮舉法(網格演算法和窮舉法都是暴力搜索最優點的演算法,在很 多競賽題中有應用,當重點討論模型本身而輕視演算法的時候,可以使用這種 暴力方案,最好使用一些高級語言作為編程工具) 。
一些連續離散化方法(很多問題都是實際來的,數據可以是連續的,而計 算機只認的是離散的數據,因此將其離散化後進行差分代替微分、求和代替 積分等思想是非常重要的) 。
數值分析演算法(如果在比賽中採用高級語言進行編程的話,那一些數值分 析中常用的演算法比如方程組求解、矩陣運算、函數積分等演算法就需要額外編 寫庫函數進行調用) 。
圖象處理演算法(賽題中有一類問題與圖形有關,即使與圖形無關,論文 中也應該要不乏圖片的,這些圖形如何展示以及如何處理就是需要解決的問 題,通常使用Matlab 進行處理)。
4. 數學建模演算法總結
無總結反省則無進步
寫這篇文章,一是為了總結之前為了准備美賽而學的演算法,而是將演算法羅列並有幾句話解釋方便以後自己需要時來查找。
數學建模問題總共分為四類:
1. 分類問題 2. 優化問題 3. 評價問題 4. 預測問題
我所寫的都是基於數學建模演算法與應用這本書
一 優化問題
線性規劃與非線性規劃方法是最基本經典的:目標函數與約束函數的思想
現代優化演算法:禁忌搜索;模擬退火;遺傳演算法;人工神經網路
模擬退火演算法:
簡介:材料統計力學的研究成果。統計力學表明材料中不同結構對應於粒子的不同能量水平。在高溫條件下,粒子的能量較高,可以自由運動和重新排列。在低溫條件下,粒子能量較低。如果從高溫開始,非常緩慢地降溫(此過程稱為退火),粒子就可以在每個溫度下達到熱平衡。當系統完全被冷卻時,最終形成處於低能狀態的晶體。
思想可用於數學問題的解決 在尋找解的過程中,每一次以一種方法變換新解,再用退火過程的思想,以概率接受該狀態(新解) 退火過程:概率轉化,概率為自然底數的能量/KT次方
遺傳演算法: 遺傳演算法是一種基於自然選擇原理和自然遺傳機制的搜索演算法。模擬自然界中的生命進化機制,在人工系統中實現特定目標的優化。
遺傳演算法的實質是通過群體搜索技術(?),根據適者生存的原則逐代進化,最終得到最優解或准最優解。
具體實現過程(P329~331)
* 編碼
* 確定適應度函數(即目標函數)
* 確定進化參數:群體規模M,交叉概率Pc,變異概率Pm,進化終止條件
* 編碼
* 確定初始種群,使用經典的改良圈演算法
* 目標函數
* 交叉操作
* 變異操作
* 選擇
改良的遺傳演算法
兩點改進 :交叉操作變為了以「門當戶對」原則配對,以混亂序列確定較差點位置 變異操作從交叉操作中分離出來
二 分類問題(以及一些多元分析方法)
* 支持向量機SVM
* 聚類分析
* 主成分分析
* 判別分析
* 典型相關分析
支持向量機SVM: 主要思想:找到一個超平面,使得它能夠盡可能多地將兩類數據點正確分開,同時使分開的兩類數據點距離分類面最遠
聚類分析(極其經典的一種演算法): 對樣本進行分類稱為Q型聚類分析 對指標進行分類稱為R型聚類分析
基礎:樣品相似度的度量——數量化,距離——如閔氏距離
主成分分析法: 其主要目的是希望用較少的變數去解釋原來資料中的大部分變異,將掌握的許多相關性很高的變數轉化成彼此相互獨立或不相關的變數。通常是選出比原始變數個數少,能解釋大部分資料中的變異的幾個新變數,及主成分。實質是一種降維方法
判別分析: 是根據所研究的個體的觀測指標來推斷個體所屬類型的一種統計方法。判別准則在某種意義下是最優的,如錯判概率最小或錯判損失最小。這一方法像是分類方法統稱。 如距離判別,貝葉斯判別和FISHER判別
典型相關分析: 研究兩組變數的相關關系 相對於計算全部相關系數,採用類似主成分的思想,分別找出兩組變數的各自的某個線性組合,討論線性組合之間的相關關系
三 評價與決策問題
評價方法分為兩大類,區別在於確定權重上:一類是主觀賦權:綜合資訊評價定權;另一類為客觀賦權:根據各指標相關關系或各指標值變異程度來確定權數
* 理想解法
* 模糊綜合評判法
* 數據包絡分析法
* 灰色關聯分析法
* 主成分分析法(略)
* 秩和比綜合評價法 理想解法
思想:與最優解(理想解)的距離作為評價樣本的標准
模糊綜合評判法 用於人事考核這類模糊性問題上。有多層次模糊綜合評判法。
數據包絡分析法 是評價具有多指標輸入和多指標輸出系統的較為有效的方法。是以相對效率為概念基礎的。
灰色關聯分析法 思想:計算所有待評價對象與理想對象的灰色加權關聯度,與TOPSIS方法類似
主成分分析法(略)
秩和比綜合評價法 樣本秩的概念: 效益型指標從小到大排序的排名 成本型指標從大到小排序的排名 再計算秩和比,最後統計回歸
四 預測問題
* 微分方程模型
* 灰色預測模型
* 馬爾科夫預測
* 時間序列(略)
* 插值與擬合(略)
* 神經網路
微分方程模型 Lanchester戰爭預測模型。。
灰色預測模型 主要特點:使用的不是原始數據序列,而是生成的數據序列 優點:不需要很多數據·,能利用微分方程來充分挖掘系統的本質,精度高。能將無規律的原始數據進行生成得到規律性較強的生成序列。 缺點:只適用於中短期預測,只適合指數增長的預測
馬爾科夫預測 某一系統未來時刻情況只與現在狀態有關,與過去無關。
馬爾科夫鏈
時齊性的馬爾科夫鏈
時間序列(略)
插值與擬合(略)
神經網路(略)
5. 參加數學建模有哪些必學的演算法
1. 蒙特卡洛方法:
又稱計算機隨機性模擬方法,也稱統計實驗方法。可以通過模擬來檢驗自己模型的正確性。
2. 數據擬合、參數估計、插值等數據處理
比賽中常遇到大量的數據需要處理,而處理的數據的關鍵就在於這些方法,通常使用matlab輔助,與圖形結合時還可處理很多有關擬合的問題。
3. 規劃類問題演算法:
包括線性規劃、整數規劃、多元規劃、二次規劃等;競賽中又很多問題都和規劃有關,可以說不少的模型都可以歸結為一組不等式作為約束條件,幾個函數表達式作為目標函數的問題,這類問題,求解是關鍵。
這類問題一般用lingo軟體就能求解。
4. 圖論問題:
主要是考察這類問題的演算法,包括:Dijkstra、Floyd、Prime、Bellman-Ford,最大流、二分匹配等。熟悉ACM的人來說,應該都不難。
5. 計算機演算法設計中的問題:
演算法設計包括:動態規劃、回溯搜索、分治、分支定界法(求解整數解)等。
6. 最優化理論的三大非經典演算法:
a) 模擬退火法(SA)
b) 神經網路(NN)
c) 遺傳演算法(GA)
7. 網格演算法和窮舉演算法
8. 連續問題離散化的方法
因為計算機只能處理離散化的問題,但是實際中數據大多是連續的,因此需要將連續問題離散化之後再用計算機求解。
如:差分代替微分、求和代替積分等思想都是把連續問題離散化的常用方法。
9. 數值分析方法
主要研究各種求解數學問題的數值計算方法,特別是適用於計算機實現的方法與演算法。
包括:函數的數值逼近、數值微分與數值積分、非線性返程的數值解法、數值代數、常微分方程數值解等。
主要應用matlab進行求解。
10. 圖像處理演算法
這部分主要是使用matlab進行圖像處理。
包括展示圖片,進行問題解決說明等。
6. 關於數學建模中用到的數學理論和編程演算法
關於程序,我建議你用matlab或者mathmaticas,用這類專用數學軟體比較好,因為我知道絕大多數人對C及C++的掌握還不至於到能夠熟練寫出你上述的各種演算法(當然一些的簡單的可以參考ACM的相關書籍),況且在實際工作中很多科學工作者或是工程師都是用Matlab之類的數學軟體,所以我也建議你用。
至於你是工科的(我也是),所以我也能夠理解你想學習上述各種演算法等的想法,但是我覺得這個真的不太現實,我自己也很愛好數學,在平時我也經常學習各種非自己專業的數學知識,但是實際上你學習了之後也要理解,更何況你要運用它到非常熟練的程度(絕非一般考試可比),所以我認為你就必須要非常有選擇的看,而且強烈建議你先做好規劃(一定要符合自己實際情況,不要貪心),然後抓緊學。
我看你上面列的,其中組合數學非常難,但是你一定要非常踏實地學好(這個會應用在許多連你自己都想不到的地方),另外圖論也是必須的,但這里我建議你先學習《離散數學》中的「圖論」,當你以後在運用中如果遇到更高深的理論再去參考專門的圖論書籍也不遲。另外微分方程我建議你先學習一些基礎的知識即可,因為在建模中大多數情況下我覺得你只要會建立就行了,這塊內容不用涉入太深,不然太費時間。至於你後面列的一些演算法,這個沒辦法迴避的,但也不是說你要一個個看過來,當然你可以考慮先走馬觀花地掃一遍,然後在仔細深入地學習集中重要的,相對出現幾率大的演算法。建議你多多拿題目來練習,在練題的過程中順帶學習相應知識,這樣效率比較高。
其他的我也幫不了什麼,關鍵你自己要抓緊,效率要大大提高。最後祝你好運!
7. 數學建模都有哪些方法
這些是以前在網上整理的:
要重點突破:
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 進行處理)