CPleX是一個神祕的求解器, 據說久了就想用, 可是直接用有些困難, 尤爲入門困難. 對初學者來講Leapms是一個好的通道.html
在Leapms內有一個cplex命令, 直接敲入cplex+回車就能夠調用Cplex求解. 然而網上下載的Leapms沒有這個功能. ide
可是這難不倒本尊, 由於leapms能夠輸出 lp 和 ms 文件, 這但是通用模型接口啊. 經過這個就好了唄.函數
什麼?那裏找Leapms? 百度唄。。。。。spa
一、首先從別處複製一個求解旅行商問題問題的leapms模型, 用記事本存成TSP.leap文件(點下面的view code打開代碼).code
什麼?這個模型怎麼理解?看本博客其餘文(https://www.cnblogs.com/leapms/p/10058798.html)htm
//The Traveling Salesman Problem min sum{i=1,...,n;j=1,...,n;i<>j}x[i][j]D[i][j] subject to sum{i=1,...,n;i<>j}x[i][j]=1 | j=2,...,n sum{j=1,...,n;i<>j}x[i][j]=1 | i=2,...,n u[1]=0 u[j]>=u[i]+1-n(1-x[i][j])|i=1,...,n;j=2,...,n;i<>j u[i]<=n-1|i=1,...,n where n is an integer Cd is a set D[i][j] is a number|i=1,...,n;j=1,...,n x[i][j] is a variable of binary|i=1,...,n;j=1,...,n;i<>j u[i] is a variable of nonnegative number|i=1,...,n data_relation n=_$(Cd)/2 D[i][j]=sqrt((Cd[2i-1]-Cd[2j-1])^2+(Cd[2i]-Cd[2j])^2) --> |i=1,...,n;j=1,...,n data //52個城市的座標 Cd={ 565 575 25 185 345 750 945 685 845 655 880 660 25 230 525 1000 580 1175 650 1130 1605 620 1220 580 1465 200 1530 5 845 680 725 370 145 665 415 635 510 875 560 365 300 465 520 585 480 415 835 625 975 580 1215 245 1320 315 1250 400 660 180 410 250 420 555 575 665 1150 1160 700 580 685 595 685 610 770 610 795 645 720 635 760 650 475 960 95 260 875 920 700 500 555 815 830 485 1170 65 830 610 605 625 595 360 1340 725 1740 245 }
二、假設模型保存在D盤的\TSP目錄裏, 路徑名: D:\TSP.blog
三、運行leapms軟件.接口
輸入命令shp, 改變工做路徑.博客
系統提示輸入路徑名, 輸入D\TSPio
四、在leampms裏輸入命令load調入模型.TSP.leap (見下圖,紅線處是須要輸入的地方)
五、輸入命令savemps
這時模型就已經被存爲mps格式了。在D:\TSP目錄下應該能看到一個叫TSP.mps的文件。
上面顯示模型有2704個變量,2756個約束。
六、假設你的機器已經安裝了cplex,這時打開一個DOS窗口,並把工做目錄設成D:\TSP, 然後用cplex命令啓動cplex, 就進入到cplex交互環境下了。
什麼?那裏找CPLEX正版安裝包? 必應國際唄。。。。。
什麼?如何打開Dos窗口?問問度娘。。。
七、在CPLEX環境下輸入read命令,輸入tsp.msp文件名, 而後輸入optimize啓動cplex求解。
八、CPLEX開始求解,求解完畢後。使用display 命令獲得目標函數最優值。
九、使用display solution variables *顯示變量