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