1. 程式人生 > >數學建模中十大演算法實現步驟與程式碼

數學建模中十大演算法實現步驟與程式碼

步驟

數學建模中常用的方法:類比法、二分法、差分法、變分法、圖論法、層次分析法、資料擬合法、迴歸分析法、數學規劃(線性規劃,非線性規劃,整數規劃,動態規劃,目標規劃)、機理分析、排隊方法、對策方法、決策方法、模糊評判方法、時間序列方法、灰色理論方法、現代優化演算法(禁忌搜尋演算法,模擬退火演算法,遺傳演算法,神經網路)。

這些方法可以解一些模型:優化模型、微分方程模型、統計模型、概率模型、圖論模型、決策模型。

擬合與插值方法(給出一批資料點,確定滿足特定要求的曲線或者曲面,從而反映物件整體的變化趨勢): matlab可以實現一元函式,包括多項式和非線性函式的擬合以及多元函式的擬合,即迴歸分析,從而確定函式; 同時也可以用matlab實現分段線性、多項式、樣條以及多維插值。

優化方法中,決策變數、目標函式(儘量簡單、光滑)、約束條件、求解方法是四個關鍵因素。其中包括無約束規則(用fminserch、fminbnd實現)線性規則(用linprog實現)非線性規則、( 用fmincon實現)多目標規劃(有目標加權、效用函式)動態規劃、整數規劃。

迴歸分析:對具有相關關係的現象,根據其關係形態,選擇一個合適的數學模型,用來近似地表示變數間的平均變化關係的一種統計方法 (一元線性迴歸、多元線性迴歸、非線性迴歸),迴歸分析在一組資料的基礎上研究這樣幾個問題:建立因變數與自變數之間的迴歸模型(經驗公式);對迴歸模型的可信度進行檢驗;判斷每個自變數對因變數的影響是否顯著;判斷迴歸模型是否適合這組資料;利用迴歸模型對進行預報或控制。相對應的有 線性迴歸、多元二項式迴歸、非線性迴歸。

逐步迴歸分析:從一個自變數開始,視自變數作用的顯著程度,從大到地依次逐個引入迴歸方程:當引入的自變數由於後面變數的引入而變得不顯著時,要將其剔除掉;引入一個自變數或從迴歸方程中剔除一個自變數,為逐步迴歸的一步;對於每一步都要進行值檢驗,以確保每次引入新的顯著性變數前回歸方程中只包含對作用顯著的變數;這個過程反覆進行,直至既無不顯著的變數從迴歸方程中剔除,又無顯著變數可引入迴歸方程時為止。(主要用SAS來實現,也可以用matlab軟體來實現)。

聚類分析:所研究的樣本或者變數之間存在程度不同的相似性,要求設法找出一些能夠度量它們之間相似程度的統計量作為分類的依據,再利用這些量將樣本或者變數進行分類。

系統聚類分析—將n個樣本或者n個指標看成n類,一類包括一個樣本或者指標,然後將性質最接近的兩類合併成為一個新類,依此類推。最終可以按照需要來決定分多少類,每類有多少樣本(指標)。

系統聚類方法步驟:
1. 計算n個樣本兩兩之間的距離
2. 構成n個類,每類只包含一個樣品
3. 合併距離最近的兩類為一個新類
4. 計算新類與當前各類的距離(新類與當前類的距離等於當前類與組合類中包含的類的距離最小值),若類的個數等於1,轉5,否則轉3
5. 畫聚類圖
6. 決定類的個數和類。
7.

判別分析

在已知研究物件分成若干型別,並已取得各種型別的一批已知樣品的觀測資料,在此基礎上根據某些準則建立判別式,然後對未知型別的樣品進行判別分類。
距離判別法—首先根據已知分類的資料,分別計算各類的重心,計算新個體到每類的距離,確定最短的距離(歐氏距離、馬氏距離)。

Fisher判別法

—利用已知類別個體的指標構造判別式(同類差別較小、不同類差別較大),按照判別式的值判斷新個體的類別。

Bayes判別法

—計算新給樣品屬於各總體的條件概率,比較概率的大小,然後將新樣品判歸為來自概率最大的總體。

模糊數學

研究和處理模糊性現象的數學 (概念與其對立面之間沒有一條明確的分界線)與模糊數學相關的問題:模糊分類問題—已知若干個相互之間不分明的模糊概念,需要判斷某個確定事物用哪一個模糊概念來反映更合理準確;

模糊相似選擇 —按某種性質對一組事物或物件排序是一類常見的問題,但是用來比較的性質具有邊界不分明的模糊性;

模糊聚類分析—根據研究物件本身的屬性構造模糊矩陣,在此基礎上根據一定的隸屬度來確定其分類關係 ;模糊層次分析法—兩兩比較指標的確定;模糊綜合評判—綜合評判就是對受到多個因素制約的事物或物件作出一個總的評價,如產品質量評定、科技成果鑑定、某種作物種植適應性的評價等,都屬於綜合評判問題。由於從多方面對事物進行評價難免帶有模糊性和主觀性,採用模糊數學的方法進行綜合評判將使結果儘量客觀從而取得更好的實際效果 。

時間序列–我的拿手好菜~-~

是按時間順序排列的、隨時間變化且相互關聯的資料序列—通過對預測目標自身時間序列的處理,來研究其變化趨勢(長期趨勢變動、季節變動、迴圈變動、不規則變動)

自迴歸模型

一般自迴歸模型AR(n)—系統在時刻t的響應X(t)僅與其以前時刻的響應X(t-1),…, X(t-n)有關,而與其以前時刻進入系統的擾動無關 ;

移動平均模型MA(m)—系統在時刻t的響應X(t) ,與其以前任何時刻的響應無關,而與其以前時刻進入系統的擾動a(t-1),…,a(t-m)存在著一定的相關關係 ;

自迴歸移動平均模型 ARMA(n,m)—系統在時刻t的響應X(t),不僅與其前n個時刻的自身值有關,而且還與其前m個時刻進入系統的擾動存在一定的依存關係 。

時間序列建模的基本步驟
1. 資料的預處理:資料的剔取及提取趨勢項
2. 取n=1,擬合ARMA(2n,2n-1)(即ARMA(2,1))模型
3. n=n+1,擬合ARMA(2n,2n-1)模型
4. 用F準則檢驗模型的適用性。若檢驗顯著,則轉入第2步。若檢驗不顯著,轉入第5步。
5. 檢查遠端時刻的係數值的值是否很小,其置信區間是否包含零。若不是,則適用的模型就是ARMA(2n,2n-1) 。若很小,且其置信區間包含零,則擬合ARMA(2n-1,2n-2) 。
6. 利用F準則檢驗模型ARMA(2n,2n-1)和ARMA(2n-1,2n-2) ,若F值不顯著,轉入第7步;若F值顯著,轉入第8步。
7. 捨棄小的MA引數,擬合m<2n-2的模型ARMA(2n-1,m) ,並用F準則進行檢驗。重複這一過程,直到得出具有最小引數的適用模型為止
8. 捨棄小的MA引數,擬合m<2n-1的模型ARMA(2n,m) ,並用F準則進行檢驗。重複這一過程,直到得出具有最小引數的適用模型為止。

圖論方法

最短路問題

兩個指定頂點之間的最短路徑—給出了一個連線若干個城鎮的鐵路網路,在這個網路的兩個指定城鎮間,找一條最短鐵路線 (Dijkstra演算法 )每對頂點之間的最短路徑 (Dijkstra演算法、Floyd演算法 )。

最小生成樹問題

連線問題

—欲修築連線多個城市的鐵路設計一個線路圖,使總造價最低(prim演算法、Kruskal演算法 )。

圖的匹配問題

人員分派問題:n個工作人員去做件n份工作,每人適合做其中一件或幾件,問能否每人都有一份適合的工作?如果不能,最多幾人可以有適合的工作?(匈牙利演算法)。

遍歷性問題

中國郵遞員問題—郵遞員傳送郵件時,要從郵局出發,經過他投遞範圍內的每條街道至少一次,然後返回郵局,但郵遞員希望選擇一條行程最短的路線
最大流問題。

運輸問題

最小費用最大流問題:在運輸問題中,人們總是希望在完成運輸任務的同時,尋求一個使總的運輸費用最小的運輸方案
在數學建模中常用的演算法:
1:蒙特卡羅演算法;
2:資料擬合、引數估計、插值等資料處理演算法(常用matlab實現);
3:線性規劃、整數規劃、多元規劃、二次規劃(用lingo、lingdo、matlab即可實現);
4:圖論演算法(包括最短路、網路流、二分圖);
5:動態規劃、回溯搜尋、分治演算法、分支界定;
6:最優化理論的三大經典演算法(模擬退火演算法、神經網路演算法、遺傳演算法);
7:網格演算法和窮舉法;
8:連續資料離散化;
9:數值分析演算法;
10:圖象處理演算法(常用matlab來實現)。
各種演算法程式碼地址:點選此處十大演算法 .

密碼:x9tk