數學中求解整數規劃在matlab中怎麼使用呢?
2016 7 28第二次更新
評論中有問到能否用於非線性規劃,答案是不能。畢竟MATLAB自身不太適合做很複雜的規劃,如果有這方面需求的請參考其他答案中的工具包,或者用LINGO。原答案反對樓上所有答案。題主要的就是用MATLAB實現整數規劃嘛,萬一規劃完成後再畫個圖啥的,用MATLAB不比LINGO啥的方便多了。
下面進入正題。首先,以下內容一定適用於MATLAB2014b及以上版本,早期版本沒測試過。intlinprog 函數,用於進行整數規劃和整數非整數的混合規劃。使用形式如下:- x = intlinprog(f,intcon,A,b)
- x = intlinprog(f,intcon,A,b,Aeq,beq)
- x = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub)
- x = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub,options)
- x = intlinprog(problem)
- [x,fval,exitflag,output] = intlinprog(___)
其中,f為規劃目標,intcon為包含整數變數下標的向量。A、b為不等式約束條件,Aeq、Beq為等式約束條件,lb、ub為規劃變數的上下限,有關其他幾項參數的具體介紹可以在任意版本MATLAB中輸入help linprog回車來查看,這裡只介紹與linprog函數有所不同的intcon參數。
包含整數變數下標的向量,顧名思義,就是你的規劃變數{x1,x2,x3,...,xn},其中哪一項是整數,intcon里就加上哪一項。如x2,x3是整數,intcon=[2 3]。一般使用的話,知道上面這些就足夠了,更詳細的用法貼一個網頁Mixed-integer linear programming (MILP)MATLAB官方的介紹,英文的。在matlab上最推薦的模型語言(modeling language)應該是非YALMIP(YALMIP Wiki | Main / HomePage)莫屬了, 而且是免費的. 至於解法器, 免費的可以考慮GLPK(參考YALMIP Wiki | Solvers / GLPK ) . 如果是學生或者教育機構的話, 也可以免費使用大名鼎鼎的CPLEX和GUROBI.
簡單來說, 解法器就是個發動機, 模型語言是在發動機上裝個殼做成汽車讓你方便輸入各種模型開去任何地方. 用yalmip的好處是1非常簡單且非常可讀 上官網看幾個例子就能對付大部分情況 2換解法器只是一句話的事.謝邀
個人感覺規劃可以用LINGO軟體,小巧方便。它使用的是描述性語言,調用的求解演算法也是一流數學家編寫的.樓主放心,學習成本很低的,一下子就ok了跑題完畢,現在開始答題,,,
MATLAB使用整數規劃,我學的是司守奎老師的那本數學建模及應用,裡面好多PDF的那個.規劃中的變數(部分或全部)限制為整數時,稱為整數規劃。若在線性規劃模型中,
變數限制為整數,則稱為整數線性規劃。目前所流行的求解整數規劃的方法,往往只適用於整數線性規劃。目前還沒有一種方法能有效地求解一切整數規劃。運籌學理論上,如不加特殊說明,一般指整數線性規劃。對於整數線性規劃模型大致可分為兩類:
1、變數全限制為整數時,稱純(完全)整數規劃。
2、變數部分限制為整數的,稱混合整數規劃。理論求解方法分類: (i )分枝定界法—可求純或混合整數線性規劃。 (ii )割平面法—可求純或混合整數線性規劃。 (iii )隱枚舉法—求解「0-1」整數規劃: ①過濾隱枚舉法; ②分枝隱枚舉法。 (iv )匈牙利法—解決指派問題(「0-1」規劃特殊情形)。 (v )蒙特卡洛法—求解各種類型規劃。整數線性規劃可以用linprog函數,help里有超級詳細的說明
0-1整數規劃可以用bintprog函數對於非線性整數規劃,蒙特卡洛登場好了,根據具體問題編寫相應的M文件吧不想用自帶的函數,可以點這裡: http://sincerewfeng.blog.hexun.com/30114441_d.html 不知何方大神做的一個規劃工具箱。整數規劃我基本不用,有本《數學建模演算法全收錄》,裡面有一章專門講整數規劃,有matlab代碼示例,鏈接是百度文庫的,可以百度,有很多下載地址數學建模演算法全收錄799頁
一般用CPlex或者Gurobi或者FICO Xpress。
這些可以理解為優化的函數庫,然後用matlab或任何其他編程語言調用這些函數庫求解。
歡迎關注我的專欄:
[運籌帷幄]大數據和人工智慧時代下的運籌學 - 知乎專欄
MATLAB求解線性規劃(含整數規劃和0-1規劃)問題
用YALMIP加cplex是個不錯的選擇!用於求解整數規劃和混合整數規劃非常不錯!
整數規劃用LINGO啊,比MATLAB簡單超級多。變數定義好了也就幾行就可以得到答案,而且非常精簡只管一目了然。學數學到現在我最愛的軟體也就是LINGO了。
熟讀matlab的函數用法的介紹,把對應的方法的論文也要看了,想掌握好編程和演算法的任何一樣都沒有捷徑。Linear Programming and Mixed-Integer Linear Programming
推薦閱讀:
※MATLAB做圖像處理到社會上實用嗎?
※為什麼談論深度學習工具時,很少有人討論matlab的神經網路工具包?
※Mathematica和c++是探索 宇宙萬物 本質規律最好的工具嗎?
※為什麼數學軟體要用自己的語言?
※MATLAB和Python 相互無法替代的地方有哪些,對於以後一直做科研的人,兩種語言到底哪家強?
TAG:MATLAB |