YALMIP工具箱使用说明【Matlab】

1,014 阅读1分钟

什么是YALMIP?

image.png YALMIP基于MATLAB符号工具箱编写,是一种定义和求解高级凸优化问题的语言,用于求解线性规划、整数规划、非线性规划、混合规划等标准化优化问题。 另外,YALMIP支持复变量运算,主函数为solvesdp.m,函数调用简洁方便。

安装

  1. 确保MATLAB版本在2015a及以上.
  2. 此处下载压缩包,随后解压到MATLAB目录下,例如

image.png

把YALMIP的目录加入到MATLAB的PATH中,其中包括:

image.png

验证

在MATLAB中输入yalmiptest,若出现

+++++++++++++++++++++++++++++++++++++++++++++++
|       Searching for installed solvers       |
+++++++++++++++++++++++++++++++++++++++++++++++
|        Solver|   Version/module|      Status|
+++++++++++++++++++++++++++++++++++++++++++++++
|       LINPROG|                 |       found|
|      QUADPROG|                 |       found|
|        LMILAB|                 |       found|
|       FMINCON|        geometric|       found|
|                .......                      |
|         FRLIB|                 |   not found|
+++++++++++++++++++++++++++++++++++++++++++++++

那么YALMIP安装成功

求解流程

image.png

注意事项:

  • 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 等式约束记作“==”;

例子

max(z)=𝑥12+𝑥22+3𝑥32+4𝑥42+2𝑥528𝑥12𝑥23𝑥3𝑥42𝑥5max⁡(z)=𝑥_1^2+𝑥_2^2+3𝑥_3^2+4𝑥_4^2+2𝑥_5^2−8𝑥_1−2𝑥_2−3𝑥_3−𝑥_4−2𝑥_5
𝑥1+𝑥2+𝑥3+𝑥4+𝑥5400𝑥1+2𝑥2+2𝑥3+𝑥4+6𝑥58002𝑥1+𝑥2+6𝑥3800𝑥3+𝑥4+5𝑥52000𝑥𝑖99𝑥_1+𝑥_2+𝑥_3+𝑥_4+𝑥_5≤400 \\ 𝑥_1+2𝑥_2+2𝑥_3+𝑥_4+6𝑥_5≤800 \\ 2𝑥_1+𝑥_2+6𝑥_3≤800 \\ 𝑥_3+𝑥_4+5𝑥_5≤200 \\ 0≤𝑥_𝑖≤99 \\

代码

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) %显示变量值