流行算法類工具盤點(一):混合整數(shù)線性規(guī)劃(MILP)解算器lpsolve
2017-01-17 by:CAE仿真在線 來源:互聯(lián)網
名稱:lpsolve解決問題:純線性問題,混合的整型和二進制問題,半蟬聯(lián)性與特別命令集(SOS) 板型
應用平臺:由ANSI C編著,可應用于Linux和WINDOWS等不一樣平臺。
使役案例:解決下圖所示的最大流問題(這幅圖已經標注出求解結果了):
lpsolve IDE背景中只需輸入如次的文本,是不是十分簡單直觀:
而后按一個運行按鍵(紅框標注),出現(xiàn)以下的求解結果,紅框標注的是結果,藍框標注的是求解信息,涵蓋浪費時間等等:
關于lpsolve IDE背景的詳細使役申說可以參考其使役手冊(lpsolve下載主頁上可自由下載),看見這搭或許有人會問,上頭的例子很簡單,假如對于復雜的網絡拓撲,自個兒手動輸入這些表現(xiàn)式顯然是不事實的, 那該怎么辦,好在lpsolve可以集成在別的開發(fā)背景中,它提供了一全副API,可供調用,具體也請參考使役手冊,上頭提到的博客里對于matlab調用lpsolve有簡單的申說,這搭補給說一下,mxlpsolve('write_lp',lp,'a.lp')這個語句可以生成IDE背景里可直接執(zhí)行的腳本文件(C,JAVA等接口也有類似語句),這么復雜的問題可以用高級編程語言建模,而后生成LP腳本文件單獨在IDE中運行,是不是很便捷。
以上這個Max Flow的例子直接用matlab自帶的linprog工具箱求解,開具代碼是:
f = [ -1 -1 -1 0 0 0 0 0 0 0 0 0 ]; A = ; b = ; Aeq = [1 0 0 -1 -1 0 0 0 0 0 0 0 0 1 0 0 0 -1 -1 -1 0 0 0 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 0 0 1 0 1 0 0 0 -1 0 0 0 0 0 0 1 0 1 0 1 0 -1 0 0 0 0 0 0 0 0 1 0 0 0 -1 ]; beq = zeros(6,1); lb = zeros(12,1); ub = [3;2;2;5;1;1;3;1;1;4;2;4]; x = linprog(f,A,b,Aeq,beq,lb,ub);求解結果如次,可以看見雖然最大流的值是不錯的,但其他邊上的流卻與lpsolve求解結果有巨大差異:
原文地址(轉載請注明):體育比分直播 www.a9988.net
開放分享:優(yōu)質有限元技術文章,助你自學成才
相關標簽搜索:流行算法類工具盤點(一):混合整數(shù)線性規(guī)劃(MILP)解算器lpsolve MatLab培訓 MatLab培訓課程 MatLab在線視頻教程 MatLab技術學習教程 MatLab軟件教程 MatLab資料下載 MatLab代做 MatLab基礎知識 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓 Abaqus培訓
編輯