数学建模之运筹学问题
目錄
1、引言
2、常見模型與算法
3、問題描述
4、遺傳算法
5、仿真結果
1、引言
運籌學問題,包括任務規劃、分配、決策,是數學建模比賽中常見的問題(參見2018年“高教杯”數學建模B題、2019年美賽MCM B題)。今天小編就和大家分享一下數學建模中運籌學問題的常見解決方法與技巧。本文相對適用于剛剛入門的小白同學以及對于數學建模有些接觸的同學,當然也歡迎大神們交流討論。
本文主要概述一下比賽中可能出現的問題,同時分享了遺傳算法在運籌學問題中的應用。
另外小編也整理了一些參考文獻,也是數學建模比賽時非常有用的參考,論文里面加上一定能讓你脫穎而出的哦,想要的話請留言哦。
2、常見模型與算法
首先是運籌學中一些常見的模型與算法。大家如果不感興趣可以直接跳到第二部分哈。常見的運籌學模型包括車輛路由問題(Vehicle Routing Problem,VRP)、旅行商問題(Travelling Salesmen Problem,TSP)及多旅行商問題(Multiple Travelling Salesmen Problem,MTSP)、網絡優化問題(Network Flow Optimization,NFO)、混合整數線性規劃(Mixed Integer Linear Programming,MILP)、協同多任務分配問題(Cooperative Multiple Task Assignment Problem,CMTAP)等。
對于單一類型的運籌學問題,例如最大流、最短路徑問題,常常使用VRP、TSP 和 MTSP 模型。針對具體的任務需求以及任務約束,常常需要在基本的VRP、TSP 模型的基礎上建立相應的擴展模型,如考慮時間窗的 VRPTW 和 TWMTSP 模型。
NFO 以及動態 NFO 模型最早產生于郵遞行業的分配。其受實際物流網的啟發,以任務執行者為供應商,將待分配、執行的任務作為網格中的物流,以任務代價作為網絡流中流動的代價,建立商業供需網格并通過最小化網絡流的總代價實現多任務的協同分配。
MILP 模型和 CMTAP 模型主要適用于任務關系復雜、多種約束下的運籌學問題。MILP 模型中問題的是由二進制變量和連續變量共同描述的,可以有效解決任務分配中的約束問題,CMTAP 是一種建立在 NFO 和 MILP 模型基礎上的組合優化模型,能夠處理不同任務間的時序關系與促進關系,廣泛應用于多類型運籌學問題。
運籌學問題在數學上是一類組合優化問題,求解這類組合優化問題的方法包括經典整數規劃與現代智能算法。分支定界方法(Branch and Bound,BNB)是任務分配中應用最廣泛的一種經典整數規劃方法。BNB通過分枝-定界-剪枝,逐步縮小搜索區域,對于小規模的問題可以在較短時間內獲得滿意的可行解。然而由于任務分配問題的NP(Non-deterministic Polynomial)特性,隨著問題約束以及維度的增加,以BNB為首的經典整數規劃算法難以獲得較好的可行解。相比于確定性的經典算法,具有概率特性的智能優化算法在高維問題上體現出了一定的優勢。現代智能算法包括遺傳算法(Genetic Algorithm,GA)、差分進化(Differential Evolution Algorithm,DEA)等進化類算法和粒子群優化(Particle Swarm Optimization,PSO)、蟻群算法等群智能算法。本文主要講解一下遺傳算法在運籌學問題中的應用,當然一些局部優化算法也是可以使用的,而且在比賽時使用一些局部算法會有意想不到的驚喜,本文暫且不表,放到下一次進行講解。
3、問題描述
以一個任務分配為例,任務分配的優化變量通常為整數,在實際建模過程中通常有兩種表示:
一是采用分配序號向量:
二是采用0-1分配矩陣:
同時對于任務分配問題,還需要有優化的目標,通常為時間最優或者成本最少。
4、遺傳算法
遺傳算法是一種全局優化方法,理論上具備尋找到全局最優解的能力。通常使用遺傳算法需要對問題變量進行編碼,由于任務分配問題本身決策變量就是一串整數,因此可以直接用決策變量作為基因編碼進行優化。
5、仿真結果
下面給出一個旅行商問題的仿真計算。假設地圖上有50座城市,一個商人需要遍歷所有城市并最終回到起點,優化目標為總距離最短。這個問題的決策變量可以由1到50的排列序列的向量表示,該向量可以直接作為遺傳算法的基因編碼。在仿真中,城市位置隨機選取,種群個數為60個,迭代次數為10000次。
下圖給出了50個城市的坐標位置:
使用遺傳算法迭代過程:
最終優化結果:
以及使用遺傳算法迭代時的適應度曲線:
使用matlab運算大概只需要幾秒鐘就能算出啦。
總結
以上是生活随笔為你收集整理的数学建模之运筹学问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Maven-学习笔记05【基础-使用骨架
- 下一篇: Maven-学习笔记06【基础-Mave