導航:首頁 > 源碼編譯 > 數學建模人員分配用什麼演算法

數學建模人員分配用什麼演算法

發布時間:2023-01-25 18:17:24

① 數學建模演算法有哪些

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、數據擬合、參數估計、插值等數據處理演算法(比賽中通常會遇到大量的數據需要
處理,而處理數據的關鍵就在於這些演算法,通常使用Matlab作為工具)
3、線性規劃、整數規劃、多元規劃、二次規劃等規劃類問題(建模競賽大多數問題
屬於最優化問題,很多時候這些問題可以用數學規劃演算法來描述,通常使用Lindo、
Lingo軟體實現)
4、圖論演算法(這類演算法可以分為很多種,包括最短路、網路流、二分圖等演算法,涉
及到圖論的問題可以用這些方法解決,需要認真准備)
5、動態規劃、回溯搜索、分治演算法、分支定界等計算機演算法(這些演算法是演算法設計
中比較常用的方法,很多場合可以用到競賽中)
6、最優化理論的三大非經典演算法:模擬退火法、神經網路、遺傳演算法(這些問題是
用來解決一些較困難的最優化問題的演算法,對於有些問題非常有幫助,但是演算法的實
現比較困難,需慎重使用)
7、網格演算法和窮舉法(網格演算法和窮舉法都是暴力搜索最優點的演算法,在很多競賽
題中有應用,當重點討論模型本身而輕視演算法的時候,可以使用這種暴力方案,最好
使用一些高級語言作為編程工具)
8、一些連續離散化方法(很多問題都是實際來的,數據可以是連續的,而計算機只
認的是離散的數據,因此將其離散化後進行差分代替微分、求和代替積分等思想是非
常重要的)
9、數值分析演算法(如果在比賽中採用高級語言進行編程的話,那一些數值分析中常
用的演算法比如方程組求解、矩陣運算、函數積分等演算法就需要額外編寫庫函數進行調
用)
10、圖象處理演算法(賽題中有一類問題與圖形有關,即使與圖形無關,論文中也應該
要不乏圖片的,這些圖形如何展示以及如何處理就是需要解決的問題,通常使用Matlab
進行處理)

③ 圖論在數學建模中一般用於哪些類型的題

1 最短路問題(SPP-shortest path problem)
一名貨櫃車司機奉命在最短的時間內將一車貨物從甲地運往乙地。從甲地到乙地的公路網縱橫交錯,因此有多種行車路線,這名司機應選擇哪條線路呢?假設貨櫃車的運行速度是恆定的,那麼這一問題相當於需要找到一條從甲地到乙地的最短路。
2 公路連接問題
某一地區有若干個主要城市,現准備修建高速公路把這些城市連接起來,使得從其中任何一個城市都可以經高速公路直接或間接到達另一個城市。假定已經知道了任意兩個城市之間修建高速公路的成本,那麼應如何決定在哪些城市間修建高速公路,使得總成本最小?
3 指派問題(assignment problem)
一家公司經理准備安排 名員工去完成 項任務,每人一項。由於各員工的特點不同,不同的員工去完成同一項任務時所獲得的回報是不同的。如何分配工作方案可以使總回報最大?
4 中國郵遞員問題(CPP-chinese postman problem)
一名郵遞員負責投遞某個街區的郵件。如何為他(她)設計一條最短的投遞路線(從郵局出發,經過投遞區內每條街道至少一次,最後返回郵局)?由於這一問題是我國管梅谷教授1960年首先提出的,所以國際上稱之為中國郵遞員問題。
5 旅行商問題(TSP-traveling salesman problem)
一名推銷員准備前往若干城市推銷產品。如何為他(她)設計一條最短的旅行路線(從駐地出發,經過每個城市恰好一次,最後返回駐地)?這一問題的研究歷史十分悠久,通常稱之為旅行商問題。
6 運輸問題(transportation problem)
某種原材料有 個產地,現在需要將原材料從產地運往 個使用這些原材料的工廠。假定 個產地的產量和 家工廠的需要量已知,單位產品從任一產地到任一工廠的運費已知,那麼如何安排運輸方案可以使總運輸成本最低?
7.最短路已有成熟的演算法:迪克斯特拉(Dijkstra)演算法
8.計算賦權圖中各對頂點之間最短路徑,顯然可以調用Dijkstra演算法。具體方法是:每次以不同的頂點作為起點,用Dijkstra演算法求出從該起點到其餘頂點的最短路徑,反復執行n次這樣的操作,就可得到從每一個頂點到其它頂點的最短路徑。這種演算法的時間復雜度為O(n^3)。第二種解決這一問題的方法是由Floyd R W提出的演算法,稱之為Floyd演算法。(可以解決第一個問題)
9.prim演算法、Kruskal演算法構造最小生成樹(使所有點連通)
10.匈牙利演算法、Kuhn-Munkres演算法解決人員分配問題
11.Euler迴路的Fleury演算法(中國郵遞員問題)
12.最大流的一種演算法—標號法(用標號法尋求網路中最大流的基本思想是尋找可增廣軌,使網路的流量得到增加,直到最大為止。)

我的計算機不好,用的是MATLAB,網上很多資料可以網路到。程序好直接網路對應演算法搞成C的吧……
演算法很多網路能到……

④ 數學建模 分配問題

10/1000=1/100,所以大體上是從100人中選出一個委員來。
因各宿舍的人數均不是100的整數倍,所以,必有一人是從余數中選出的,在余數中,A舍的人數較多,為25,可從A舍中多選一人當委員。
如果是15名委員,15/1000=3/200,所以是從200人中選3人。
這樣,從A舍選3人,從B選5人,從C選7人。

⑤ 參加數學建模有哪些必學的演算法

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進行圖像處理。
包括展示圖片,進行問題解決說明等。

⑥ 關於數學建模中用到的數學理論和編程演算法

關於程序,我建議你用matlab或者mathmaticas,用這類專用數學軟體比較好,因為我知道絕大多數人對C及C++的掌握還不至於到能夠熟練寫出你上述的各種演算法(當然一些的簡單的可以參考ACM的相關書籍),況且在實際工作中很多科學工作者或是工程師都是用Matlab之類的數學軟體,所以我也建議你用。
至於你是工科的(我也是),所以我也能夠理解你想學習上述各種演算法等的想法,但是我覺得這個真的不太現實,我自己也很愛好數學,在平時我也經常學習各種非自己專業的數學知識,但是實際上你學習了之後也要理解,更何況你要運用它到非常熟練的程度(絕非一般考試可比),所以我認為你就必須要非常有選擇的看,而且強烈建議你先做好規劃(一定要符合自己實際情況,不要貪心),然後抓緊學。
我看你上面列的,其中組合數學非常難,但是你一定要非常踏實地學好(這個會應用在許多連你自己都想不到的地方),另外圖論也是必須的,但這里我建議你先學習《離散數學》中的「圖論」,當你以後在運用中如果遇到更高深的理論再去參考專門的圖論書籍也不遲。另外微分方程我建議你先學習一些基礎的知識即可,因為在建模中大多數情況下我覺得你只要會建立就行了,這塊內容不用涉入太深,不然太費時間。至於你後面列的一些演算法,這個沒辦法迴避的,但也不是說你要一個個看過來,當然你可以考慮先走馬觀花地掃一遍,然後在仔細深入地學習集中重要的,相對出現幾率大的演算法。建議你多多拿題目來練習,在練題的過程中順帶學習相應知識,這樣效率比較高。

其他的我也幫不了什麼,關鍵你自己要抓緊,效率要大大提高。最後祝你好運!

⑦ 數學建模公平合理的獲獎名額分配

一、 問題的提出
我們曾遇到下面一件事,在校學生200名,其中初一年級103名,初二年級63名,初三年級34名,若選20名發放獎學金,按人數比例分配,三個年級分別為10.3,6.3,3.4,將分配名額取整數分配完19人,剩下一個名額按常規分配給余數大的初三年級。於是三個年級分別佔有10,7,4個名額。若選21名發放獎學金,按上述方法計算得三個年級分別佔有11,7,3個名額,初三年級反而減少1個名額。故初三年級的學生認為不合理。為解決此矛盾,我們提出研究一種更「公平合理」的名額分配模型,再用計算機高級語言編程實現。
二、建立數學模型
設甲,乙雙方人數分別為 ,並分別佔有 個名額,則雙方每個名額所代表的人數分別為 ,顯然當
時,名額分配才是合理。但在一般情況下,此二數並不相等。為相對公平,引入「相對誤差」。xi ,△= ,x1,x2分別為甲乙的相對誤差。則有 當甲、乙各佔n1和n2個名額時,總名額增加1個,應分配給甲方還是乙方呢? 不失一般性,設p1>p2,即對甲方不公平,x1(n1,n2)有意義,再分配1個名額時,可能有三種情況:
,說明甲方增加一個名額後,仍對甲不公平,顯然新增的1個名額要歸甲。
說明甲方增加1個名額後對乙方不公平,這時應有
說明乙方增加1個名額後對甲方不公平,這時應有

(註:在p1>p2的假設下,不可能出現 情形,即在對甲方不公平的情況下,給乙增加1個名額後,仍對乙不公平。)
若x1(n1 ,n2+1)>x2(n1+1 ,n2),則新增的1個名額應分配給甲方,反之分給乙方。由此結合(1)、(2)、(3)式得

即當(4)式成立時,增加1個名額應分配給甲方,反之分給乙方。設 ,則新增的1個名額應分配給P=max{P1 ,P2}的一方。
我們可將問題推廣到更一般:Di方的人數為mi,已佔有ni≥1(i=1,2,…,k)個名額,當總名額增加1個時,計算 ,則新增的1個名額分配給Pi值中最大的一方。
三、程序設計
用數組存放各方的人數、各方分配到的名額,各方的P值。為使整個分配公平合理,每方至少有一個名額,故先給各方分1個名額。從第k+1個名額起,每1個名額都為新增的名額,通過計算P值後,將這個名額分配給這k個P值中最大的一個,同時修改這個最大的P值,再分配第k+2個名額,直到名額分完為止,此重復工作用循環語句來實現。為判斷名額是否分完,用yfrs記已分配的名額數,q為總名額數,當yfrs<q時繼續循環。其Authorware主要程序如下:
主程序如上圖。
在祝賀詞中有一電影圖標,播放一舞蹈,表祝賀。選擇交互中,有參研人員,課題內容,研究過程,課題軟體和結束子程序。
在參研人員子程序中,顯示參研人員的相片,當滑鼠指向人名時,顯示該同志的相片。

在研究過程子程序中,記錄了研究過程的時間段的研究內容,同時顯示相關資料圖片。

在課題軟體子程序中,按我們設計的演算法,編寫了計算程序。為讓計算機能接受輸入的數據,利用文本交互方式設計了子程序「輸入段」如右圖:

在「輸入各方人數」中有一計算圖標,它是計算分配名額的主要程序,其主要內容如下:
zc:=EntryText
len:=CharCount(zc)
zc1:=""
zc2:=""
ii:=1
weizi:=0
repeat while ii<=len
zc1:=SubStr(zc, ii,ii)
if zc1="," then
sz:=Real(zc2)
weizi:=weizi+1
ArraySet(weizi,sz)
zc2:=""
else
zc2:=zc2^zc1
end if
ii:=ii+1
end repeat
fangshu:=weizi
ii:=1
repeat while ii<=fangshu
ArraySet(ii+fangshu,1)
a:=ArrayGet(ii)
b:=1
c:=a*a/(b*(b+1))
ArraySet(2*fangshu+ii,c)
ii:=ii+1
end repeat
yfrs:=fangshu
repeat while yfrs<q
maxp:=0
kl:=1
l:=fangshu+1
repeat with i:=1 to fangshu
if ArrayGet(2*fangshu+i)>maxp then
maxp:=ArrayGet(2*fangshu+i)
l:=fangshu+i
kl:=i
end if
end repeat
b:=ArrayGet(l)+1
ArraySet(l,b)
a:=ArrayGet(kl)
c:=a*a/(b*(b+1))
ArraySet(2*fangshu+kl,c)
yfrs:=yfrs+1
end repeat
nn:=DeleteFile("aa.txt")
repeat with l:=fangshu+1 to 2*fangshu
ss:=ArrayGet(l)
AppendExtFile("aa.txt",ss)
AppendExtFile("aa.txt"," , ")
end repeat
jieguo:=ReadExtFile ("aa.txt")
通過運行程序可得前面的發放獎學金名額分配方案為一、二,三年級分別分配11,6,4個才合理

這是一個模板。你自己看一下。很容易的哦

閱讀全文

與數學建模人員分配用什麼演算法相關的資料

熱點內容
程序員代碼合適嗎 瀏覽:279
復利計演算法律保護 瀏覽:736
代號f2伺服器連接失敗怎麼搞 瀏覽:956
旋律雲我的世界伺服器靠譜嗎 瀏覽:63
pdf降低大小 瀏覽:230
魔獸世界中文如何外服伺服器 瀏覽:924
kindle轉pdf格式 瀏覽:60
單片機自動控制 瀏覽:673
需要很多文件夾怎麼快速的新建啊 瀏覽:67
演算法申請著作權 瀏覽:213
以前手機號換了要怎麼登錄農行app 瀏覽:192
線切割編程系統怎麼繪畫 瀏覽:234
如何搭建雲伺服器異地容災 瀏覽:923
黃金拐點指標源碼 瀏覽:92
演算法導論第九章 瀏覽:277
鴿子為什麼生成伺服器沒反應 瀏覽:491
freebsdnginxphp 瀏覽:216
雜訊消除演算法 瀏覽:608
vue類似電腦文件夾展示 瀏覽:114
後備伺服器有什麼功效 瀏覽:273