YALMIP工具箱是基于MATLAB设计的一款免费的求解规划工具箱,可以帮助用户有效的解决各种规划问题,软件具有操作简单的特点,只要熟悉MATLAB语法的朋友都可以轻松操作,需要的朋友可以下载!

YALMIP工具箱安装方法
1、确保MATLAB版本在2015a及以上.
2、下载zip安装包,随后解压到MATLAB目录下,如果你的MATLAB安装在默认目录下,那么结果如下:
3、将YALMIP的目录加入到MATLAB的PATH中,其中包括:
4、验证YALMIP的安装工作
在MATLAB中输入 yalmiptest ,若出现
+++++++++++++++++++++++++++++++++++++++++++++++
| Searching for installed solvers |
+++++++++++++++++++++++++++++++++++++++++++++++
| Solver| Version/module| Status|
+++++++++++++++++++++++++++++++++++++++++++++++
| LINPROG| | found|
| QUADPROG| | found|
| LMILAB| | found|
| FMINCON| geometric| found|
| ....... |
| FRLIB| | not found|
+++++++++++++++++++++++++++++++++++++++++++++++
那么恭喜你,YALMIP安装成功!
5、安装基础的解析器
细心的朋友应该发现了,当我们执行 yalmiptest 时,实际上是检查可使用的解析器.下面就介绍一些常用的解析器以及安装
Gurobi/CPLEX:Gurobi和CPLEX适用的范围差不多,所以上只要装一个就行.性能的话还是CPLEX会好一点(毕竟IBM,但差别不大),两者都有针对学术的免费版本,CPLEX学术版本的获取需要以教师身份注册,而Gurobi是需要教育网IP验证.同时Gurobi还有免费的社区版本(半年).各版本的区别都在于支持的变量数上,然而Gurobi的社区版本个人以为完全可以满足国赛的需要了(超了那个数量自己想想思路有没有问题).
以下是Gurobi的安装流程.
先到 Gurobi 官网上注册账号.
申请对应版本的序列号.
下载对应版本 Gurobi ,安装后重启.
Win+R运行cmd回车后 输入激活码 grbgetkey xxx-xxx-xxx-xxx .
在MATLAB下运行Gurobi/win/matlab/gurobi_setup.m 同时保存PATH savepath
在运行 yalmiptest 应该看到Gurobi变成found了.
当然,如果你确实需要一个支持大量变量的解析器,那么你只能用mosek了,只需要edu邮箱验证,然而解题速度会慢很多.
YALMIP使用方法
1、设未知量
x = sdpvar(n,m); %生成a行b列的未知量
之前也说过YALMIP的未知量有3中类型.分别为
sdpvar %实型
intvar %整型
binvar %0-1型
需要混合规划多设几个变量就行了
2、约束条件
e.g.F = [-2 <= x <= 2];
3、写目标函数
obj = x(1)^2+x(2)^2;
4、求解
optimize(F,obj[,options]);
F为约束,obj为目标函数(默认求最小值),options可选择求解器,改变输出方式,如:
optimize(F,obj,sdpsettings('solver','gurobi','verbose',2));
指定solver为Gurobi,不打印解析过程
5、获取结果
opt=value(x); %x的值
YALMIP工具箱具体案例求 x^2+y^2在x,y∈[-2,2]上的最小值.
%生成2*1的矩阵变量
x = sdpvar(2,1);
%限制条件
F = [-2 <= x <= 2];
%目标函数
obj = x(1)^2+x(2)^2;
%求解
optimize(F,obj);
%取得值以及对应的x的值
optobj = value(obj)
optx = value(x)
结果如下(我的gurobi过期了,以下为MATLAB自带求解器结果)
optobj =
1.5449e-43
optx =
1.0e-21 *
0.2779 0.2779
YALMIP工具箱具体案例
求 x^2+y^2在x,y∈[-2,2]上的最小值.
%生成2*1的矩阵变量
x = sdpvar(2,1);
%限制条件
F = [-2 <= x <= 2];
%目标函数
obj = x(1)^2+x(2)^2;
%求解
optimize(F,obj);
%取得值以及对应的x的值
optobj = value(obj)
optx = value(x)
结果如下(我的gurobi过期了,以下为MATLAB自带求解器结果)
optobj =
1.5449e-43
optx =
1.0e-21 *
0.2779 0.2779