yalmip使用指南

1.介绍

首先,yalmip是一个matlab的工具包,通过matlab实现各种操作和调用。

其次,它是一个建模工具,甚至可以称为一种“语言”,通过这种“语言”来描述模型,然后再调用其他求解器(如gurobi、cplex等)来求解模型。相当于一个将“yalmip语言”转换成其他求解器“语言”的语言转换器

不同的求解器有不同的专用语言,学习多个语言即冗余又浪费精力,所以,yalmip的珍贵之处就体现出来了。

更为可贵的是,yalmip真正实现了建模和算法二者的分离,它提供了一种统一的、简单的建模语言,针对所有的规划问题,都可以用这种统一的方式建模;至于用哪种求解算法,你只需要通过一次简单的参数配置指定就可以了,甚至不用你指定,yalmip会自动为你选择最适合的算法。

有了yalmip,你不再需要针对每一种工具包去学习特定的建模语言(比如用cplex要专门学习cplex的建模语言,用lingo要专门学习lingo的建模语言,还有GLPK、lpsolve、Matlab自带的求解器等等,如果每一种求解器都要学习新的建模语言的话,这个工作量是可想而知的)。相反,如果你选择使用yalmip,那么你只需要学习yalmip一种建模语法,因为yalmip真正实现了建模和算法的分离,所有的问题都可以用统一的方法建模,如果需要使用不同的求解器,只需要一句简单的配置即可。因此,yalmip不仅仅是一个线性规划求解器,更强大的地方在于,它提供了一个统一的建模平台,支持现有的几乎所有的求解算法。有了yalmip,一切都变得简单起来。

以上摘自博客《yalmip + lpsolve + matlab 求解混合整数线性规划问题(MIP/MILP)

2.安装

  1. 官网下载https://yalmip.github.io/
  2. 解压至matlab/toolbox
  3. matlab中设置路径,注意:要将压缩包内的子文件夹都加入路径,选择“添加并包含子文件夹”来添加路径;
  4. 检查是否配置成功:matlab中调用yalmitest命令,查看所有支持的求解器已经他们的安装状态。

3.使用

3.1 定义变量

       设置默认格式变量:x = sdpvar(m, n, [option])

        设置整数格式变量:x = intvar(m, n, [option])

        设置0-1格式变量:x = binvar(m, n, [option])

  3.2 设定目标函数

        举例:f = [4 2 1] * x;

  3.3 设定约束

          直接设置:Constraints = [sum(x) <= 10, x(1) == 0, 0.5 <= x(2) <= 1.5];

      增加新约束:Constraints = [Constraints, x(2) == 1,];

  3.4 设定求解要求及参数

       命令语句:sdpsettings(option1, value1, option2, value2, ……)

        举例:ops=sdpsettings('solver','gurobi','verbos',2)

       'solver' 参数指定程序用gurobi求解器(如果已经安装,否则会报错),如果不指定 ‘solver’ 参数,他会根据决策变量类型自动挑选已安装的、最适合的求解器;'verbose' 指定显示冗余度(冗余度越大,你就可以看到越详细的求解过程信息)。

  3.5 求解

    result = solvesdp(F, f, ops)或sol = optimize(Constraints,Objective,options);

    查看最优解x:solution=value(x)


问题探查:

% Analyze error flags
if sol.problem == 0
 % Extract and display value
 solution = value(x)
else
 display('Hmm, something went wrong!');
 sol.info
 yalmiperror(sol.problem)
end



  • 35
    点赞
  • 257
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值