什么是YALMIP?
YALMIP基于MATLAB符号工具箱编写,是一种定义和求解高级凸优化问题的语言,用于求解线性规划、整数规划、非线性规划、混合规划等标准化优化问题。
另外,YALMIP支持复变量运算,主函数为solvesdp.m,函数调用简洁方便。
安装
- 确保MATLAB版本在2015a及以上.
- 此处下载压缩包,随后解压到MATLAB目录下,例如
把YALMIP的目录加入到MATLAB的PATH中,其中包括:
验证
在MATLAB中输入yalmiptest,若出现
+++++++++++++++++++++++++++++++++++++++++++++++
| Searching for installed solvers |
+++++++++++++++++++++++++++++++++++++++++++++++
| Solver| Version/module| Status|
+++++++++++++++++++++++++++++++++++++++++++++++
| LINPROG| | found|
| QUADPROG| | found|
| LMILAB| | found|
| FMINCON| geometric| found|
| ....... |
| FRLIB| | not found|
+++++++++++++++++++++++++++++++++++++++++++++++
那么YALMIP安装成功
求解流程
注意事项:
- 1.1 默认 F 条件下求目标函数 f 的最小值,如需求最大值 f 前面加个负号即可;
- 1.2 求解之后查看数值,double(f) double(变量);
- 1.3 为了更好的理解 YALMIP 工具箱,希望读者对 set.m、cone.m、sos.m、trace.m 等函数先 有一定的理解;
- 1.4 以上给出了求解非线性整数规划问题的实例分析,当变量定义、solvesdp(F,f)、限定条件等改变时,求解问题也相应改变;
- 1.5 等式约束记作“==”;
例子
代码
x=intvar(1, 5);
f=[1 1 3 4 2 ]*(x'.^2)-[8 2 3 1 2]*x'; %设定目标函数
F=set(0<=x)&&(x<=99)+set([1 1 1 1 1]*x'<=400) + set([1 2 2 1 6]*x'<=800) + set(2*x(1) + x(2) + 6*x(3) <= 800) + set(x(3) + x(4) + 5*x(5) <= 200);
solvesdp (F, -f) %求解问题
double (f) %显示目标函数值
double(x) %显示变量值