『實踐』Yalmip+Ipopt+Cplex使用手冊(文末附程序)


Yalmip+Ipopt+Cplex使用手冊(文末附程序)

1.軟件版本

 

2.Cplex添加方法

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

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

  • 點擊安裝,安裝步驟默認操作即可。

  • 點擊Matlab中的,點擊,找到路徑並將其添加,最后點擊即可。

  • 然后在Matlab命令行窗口輸入,出現幫助文檔,代表添加成功。

 

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參數列表

 

6.Yalmip+Cplex求解電力系統機組組合程序

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM