『實踐』Yalmip+Ipopt+Cplex使用手冊

Yalmip+Ipopt+Cplex使用手冊

1.軟件版本

  • Cplex 12.6.2,Matlab R2014a,Ipopt 3.12.9,Yalmipphp

 

2.Cplex添加方法

  • 官方下載地址: http://www-01.ibm.com/software/websphere/products/optimization/cplex-studio-community-edition/html

  • 破解版下載地址:http://www.0daydown.com/02/140054.html
  • 其中community-edition能夠免費試用,但最多隻能計算1000個變量或1000個約束條件的優化問題。git

  • 點擊安裝,安裝步驟默認操做便可。github

  • 點擊Matlab中的,點擊,找到路徑並將其添加,最後點擊便可。web

  • 而後在Matlab命令行窗口輸入,出現幫助文檔,表明添加成功。redis

 

3.Ipopt添加方法

  •  須要的組件:VC_redist.x64和ww_ifort_redist_intel64_2017.0.109.msi 函數

  • (組件下載地址連接:連接1:https://pan.baidu.com/s/1f-J5PBu1WsJO8uxyZzbcTQ 密碼:crxv )測試

  • 連接2:
  •  在打開的界面中選擇圖1-1便可。優化

 

圖1網站

 

圖2

  •  打開MATLAB,設置路徑-》添加幷包含子文件夾-》選擇Ipopt路徑-》保存。見下圖1-3

 

圖3

  • 右鍵運行圖2中的opti_Install。
  • 出現提示讓你安裝optiMEXFiles_mexw64_2_27,回車幾下,彈出窗口,找到optiMEXFiles_mexw64_2_27(不須要本身手動解壓)選中便可。
  • VC_redist.x64和ww_ifort_redist_intel64_2017.0.109.msi ,這兩個組件本身手動安裝,注意版本便可。
  • 注意下圖中框框中的組件我已經安裝好了,若是沒有安裝,是會有提示的。

IPOPT 3.12.9

 

4.Yalmip添加方法

  • 下載地址:https://yalmip.github.io/(最新版本)
  • 下載連接:http://pan.baidu.com/s/1eRBhRlK 密碼:dv4o(以前版本)
  • 將下載的文件解壓,設置路徑-》添加幷包含子文件夾-》選擇Yalmip路徑-》保存。
  •  在Matlab的命令行窗口中輸入或輸入Yalmiptest,測試是否添加成功。

 

5.Yalmip建模經常使用語法

5.1  變量設置

  • 實數變量:sdpvar;
  • 0-1變量:binvar;
  • 整數變量:intvar。
  • 例如:x = sdpvar(1,1);    %x爲1×1的實數變量

 

5.2  約束條件

  • Constraints = [];  %Constraints爲本身定義的一個存儲約束的矩陣
  • Constraints = [Constraints,0 <= x  <= 1];   %定義了一個變量x大於0且小於1的約束條件

 

5.3  目標函數

  • F = 0;    %F爲目標函數
  • x = sdpvar(1,1);
  • Constraints = [Constraints, x >= 2];
  • F = F + x^2 + x^3;   %目標函數爲x^2+x^3

 

5.4   查看變量或表達式的值

  • value(x);   %查看變量x的值
  • value(x^2+x^3);   %查看錶達式x^2+x^3的值

 

5.5  設置Yalmip和求解器的options

  • 經過sdpsettings設置,(sdpsettings參數列表連接
  • options = sdpsettings('field',value,'field',value,.....);   %filed爲參數名,value爲設置值
  • 例如:options = sdpsettings('solver','cplex');   %設置求解器爲cplex
  • 或者這樣也能夠:options.cplex.exportmodel = 'model.lp';   %設置求解器cplex輸出lp格式的數學模型,文件名爲model。

圖4  

圖5   options

圖6  options.cplex

圖7     xxxx.lp格式的數學模型

 

 

5.6  經常使用求解函數optimize

  • sol = optimize(Constraints,Objective,options);  %Constraints爲約束,Objective爲目標函數,options爲5.5節的options

 

5.7  輸出Yalmip模型

  • export函數是將Yalmip模型按照求解器的格式輸出。
  • [model,recoverymodel,diagnostic,internalmodel] = export(Constraints,Objective,options);  %Constraints爲約束,Objective爲目標函數,options爲5.5節的options
  • 例如:
  • x = intvar(2,2);
  • Constraints = [];
  • Constraints = [Constraints,0 <= x  <= 1]; 
  • F = sum(x) * ones(2,1);
  • options = sdpsettings('solver','cplex');   %設置求解器爲cplex
  • [model,recoverymodel,diagnostic,internalmodel] = export(Constraints,Objective,options);  %此時model中就會有符合cplex求解器格式的模型

 

圖8  model中的參數列表

 

5.8  獲取求解器的求解時間和Yalmip的建模時間

  • sol = optimize(Constraints,Objective,options);  %Constraints爲約束,Objective爲目標函數,options爲5.5節的options
  • sol.yalmiptime;  %Yalmip的建模時間
  • sol.solvertime;  %求解器的求解時間

 

5.9  設置初值

  • P = sdpvar(2,2);
  • assign(P,double(Pit));  %P爲2×2的實數變量,Pit爲2×2的已知矩陣,將Pit的值賦值給P
  • options = sdpsettings('solver','cplex','usex0',1);  %usex0默認爲0,1爲開啓設置初值功能

圖9   Yalmip網站說明

 

5.10  獲取對偶乘子

 

5.11  Yalmip輸出模型,調用Cplex類求解

 

5.12  IPOPT參數設置說明

圖10 IPOPT參數列表

相關文章
相關標籤/搜索