使用yalmip工具箱可以像书写数学模型那样输入规划问题的约束和目标函数,非常方便。
以下为在Matlab R2018a下添加yalmip并简单使用的例子
一、下载解压
下载地址:https://yalmip.github.io/download/
我下载后解压在D盘
二、添加路径
注意!!!路径中最好没有中文
选择“添加并包含子文件夹”,将 yalmip 的路径添加进去
在命令行中输入which sdpvar
,which solvesdp
,which intvar
等命令,显示路径则表明添加成功
三、建模过程
1.定义变量:
sqdvar()
创建实数型决策变量;
intvar()
创建整数型决策变量;
binva()
创建0/1型决策变量;
在创建n*n的决策变量时,yalmip默认是对称方阵,所以要创建非对称方针时,需要这样写:xxxvar(n,n,'full')
.
2.设定目标函数 :f=目标函数
.
3.设定限定条件:F=set(限定条件)
.
4.多个限定条件用加号相连:F=set(限定条件)+set(限定条件1)+set(限定条件2)……
.事实上,现在的set()已经把不使用了,改为使用()或[]为限定条件的框.
5.求解:solvesdp(F,f)
.这里解得是F条件下目标函数f的最小值,如果一开始要求最大值那么需要f前面加个负号 solvesdp(F,-f)
.
6.求解之后查看数值 :double(变量名)
.
四、 整数规划的例子
这里求最大值,所以f前要加负号
x=intvar(1,3);
f=[17,72,35]*x';
F=(0<= x)+([10,41,20]*x'<=50);
solvesdp(F,-f);
disp(double(x));
disp(double(f));
结果就是x取值1,0,2时,得到f最大值为87
更多深入讲解可以浏览官方教程:https://yalmip.github.io/tutorials/