Yalmip+Ipopt+Cplex使用手册
View Code
5.5 设置Yalmip和求解器的options
1.软件版本
2.Cplex添加方法
-
官方下载地址: http://www-01.ibm.com/software/websphere/products/optimization/cplex-studio-community-edition/
-
其中community-edition可以免费试用,但最多只能计算1000个变量或1000个约束条件的优化问题。
-
点击
安装,安装步骤默认操作即可。
-
点击Matlab中的
,点击
,找到
路径并将其添加,最后点击
即可。
-
然后在Matlab命令行窗口输入
,出现帮助文档,代表添加成功。
3.Ipopt添加方法
-
需要的组件:Visual C++ Redistributable for Visual Studio 2015和Redistributable Libraries for Intel® C++2016Compilers for Windows
-
(组件下载地址链接:http://pan.baidu.com/s/1o8p3xhg 密码:754n)
-
在打开的界面中选择图1-1即可。
图1
- Ipopt下载地址:https://www.inverseproblem.co.nz/OPTI/index.php/DL/DownloadOPTI(最新版本)
- Ipopt下载链接:http://pan.baidu.com/s/1crTxZC 密码:7xcs(以前的版本)
- 下载下来后解压缩,打开文件,目录如下图1-2。
图2
- 打开MATLAB,设置路径-》添加并包含子文件夹-》选择Ipopt路径-》保存。见下图1-3。
图3
- 右键运行图1-2中的opti_Install。MATLAB命令行窗口出现如下命令:


1 INSTALLING OPTI TOOLBOX ver 2.24 2 3 4 5 - Checking MATLAB version and operating system... 6 7 MATLAB (R2014a) 64bit (Windows x64) detected 8 9 10 11 - Checking for required pre-requisites... 12 13 Found the Microsoft VC++ 2015 x64 Redistributable 14 15 Found the Intel Fortran XE 2016 x64 Redistributable 16 17 18 19 - Checking for previous versions of OPTI Toolbox... 20 21 Could not find a previous installation of OPTI Toolbox 22 23 24 25 - Adding OPTI Paths to MATLAB Search Path...Done 26 27 28 29 - Would You Like To Save the Path Changes? (Recommended) (y/n): y 30 31 32 33 - Would You Like To Run Post Installation Tests? (Recommended) (y/n): y 34 35 36 37 Checking OPTI Toolbox Installation: 38 39 Checking Paths... Ok 40 41 Checking LP Solver Results... Ok 42 43 Checking MILP Solver Results... Ok 44 45 Checking QP Solver Results... Ok 46 47 Checking MIQP Solver Results... Ok 48 49 Checking SDP Solver Results... Ok 50 51 Checking NLS Solver Results... Ok 52 53 Checking NLP Solver Results... Ok 54 55 Checking MINLP Solver Results... Ok 56 57 58 59 Toolbox Checked Out Ok! - Enjoy 60 61 62 63 OPTI Toolbox Installation Complete! 64 65 ------------------------------------------------ 66 67 68 69 You now have the following solvers available to use: 70 71 72 73 ------------------------------------------------ 74 75 OPTI AVAILABLE SOLVERS: 76 77 78 79 BARON: Not Available 80 81 BONMIN: Available v1.8.4 82 83 CBC: Available v2.9.8 84 85 CLP: Available v1.16.10 86 87 CPLEX: Not Available 88 89 CSDP: Available v6.2 beta 90 91 DSDP: Available v5.8 92 93 FILTERSD: Available v1.0 94 95 GLPK: Available v4.48 96 97 GMATLAB: Available v3.2.5 98 99 HYBRJ: Available 100 101 IPOPT: Available v3.12.6 102 103 LBFGSB: Available v3.0 104 105 LEVMAR: Available v2.6 (November 2011) 106 107 LMDER: Available 108 109 LP_SOLVE: Available v5.5.2.0 110 111 M1QN3: Available v3.3 112 113 MATLAB: Available v7.0 114 115 MKLTRNLS: Available v2017.0 R2 116 117 MOSEK: Not Available 118 119 MUMPS: Available v4.10.0 120 121 NL2SOL: Available v2.3 122 123 NLOPT: Available v2.4.2 124 125 NOMAD: Available v3.7.2 126 127 OOQP: Available v0.99.22 128 129 PSWARM: Available v1.5 130 131 SCIP: Not Available 132 133 SEDUMI: Not Available
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输出模型为model.lp
图4
图5 options
图6 options.cplex
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求解器格式的模型
图7 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为开启设置初值功能
图8 Yalmip网站说明
5.10 获取对偶乘子
- 查看我的另一篇博客:『实践』Yalmip获取对偶函数乘子
5.11 Yalmip输出模型,调用Cplex类求解
- 查看我的另一篇博客::『实践』Yalmip建模+Cplex类求解