当前位置:   article > 正文

安装matlab_Matlab+yalmip+cplex安装教程及算例

matlab编程ops.cplex.mip.tolerances.mipgap=1e-6;啥意思

1d5f9b3a8bbed1bc9c88a05fe2a177ec.png

数学建模/科研学习推荐学习软件:Matlab+yalmip+cplex安装教程及算例

其实绝大多数本科生都是在用Matlab和LINGO求解优化问题,Matlab可以求解一般优化问题,但是当优化问题规模比较大或者在应对一些非线性问题时候,Matlab会出现求解时间长,求解效率低,甚至难以求解等问题。

Matlab+yalmip+cplex是Matlab通过调用商业软件cplex求解,求解时间短,这里简单介绍Matlab+yalmip+cplex安装教程及简单算例

CPLEX 安装教程:

1.在BIM官网下载CPLEX软件:CPLEX Optimizer.其中community-edition可以免费试用,但最多只能计算1000个变量或1000个约束条件的优化问题。而扩展版则需要购买,价格特别昂贵,一般优化问题其实community-edition足够了

2.在matlab菜单栏中找到设置路径(set path)的选项,选择“添加并包含子文件夹”,将cplex安装路径的cplexmatlab这一个文件夹添加进去,如图所示:

6d564f1b1ba46b7dd6f93aadfdbae1b6.png

3.验证是否成功,命令窗口输入: doc cplex,若出现帮助文档,则表示路径添加成功

yalmip 安装教程:

1.在yalmip官网下载软件:https://yalmip.github.io/.教程网址:https://yalmip.github.io/tutorials/

2.将文件解压,并放到 matlab 程序安装路径中的 toolbox 文件夹下

3. 在matlab菜单栏中找到设置路径(set path)的选项,选择“添加并包含子文件夹”,将 yalmip 的路径添加进去,如图所示:

5f4602affdabff915599937be62b36be.png

4.验证是否成功,命令窗口输入: doc yalmip,若出现帮助文档,则表示路径添加成功

小算例:

因为这里调用yalmip,所以编程语言其实和matlab有所不同,yalmip教程网址:https://yalmip.github.io/tutorials/,这里分享一个小算例和大家介绍常用语句:

d5d785cc74e77e8ba2ba2fcf47c7d553.png
  1. %定义变量
  2. x=sdpvar(2,1);
  3. %目标函数
  4. obj=2*x(1)+3*x(2);
  5. %约束条件
  6. constraint=[];
  7. constraint=[constraint,x(1)+x(2)>350];
  8. constraint=[constraint,x(1)>100];
  9. constraint=[constraint,2*x(1)+x(2)<600];
  10. constraint=[constraint,x(2)>0];
  11. %求解
  12. ops = sdpsettings('solver','cplex','verbose',1);
  13. ops.cplex.display='on';
  14. ops.cplex.timelimit=600;
  15. ops.cplex.mip.tolerances.mipgap=0.001;
  16. % 诊断求解可行性
  17. disp('开始求解')
  18. diagnostics=optimize(constraint,obj,ops);
  19. if diagnostics.problem==0
  20. disp('Solver thinks it is feasible')
  21. elseif diagnostics.problem == 1
  22. disp('Solver thinks it is infeasible')
  23. pause();
  24. else
  25. disp('Timeout, Display the current optimal solution')
  26. end

这里的常用语句:

sdpvar:实数变量,intvar:整数变量,binvar:0-1变量

value:变量或表达式的值

ops = sdpsettings('solver','cplex','verbose',1); 设置求解方法为调用 Cplex

如果用LINGO求解,是这样的:

  1. %目标函数
  2. min=2*x1+3*x2;
  3. x1+x2>=350;
  4. x1>=100;
  5. %约束条件
  6. 2*x1+x2<=600;

如果用Matlab求解,需要调用函数,这里就不赘述。

可以看出其实无论LINGO还是Matlab+yalmip+cplex编程,都有一个非常好的优点就是:程序很清晰,目标函数约束条件再到求解的三块很明确。所以我一般求解线性优化使用LINGO,复杂优化问题常用Matlab+yalmip+cplex。而单纯Matlab求解优化问题一般都先需要转化为矩阵格式,然后调用函数求解,就相对比较麻烦。

欢迎关注我哦(公众号小易成长屋),分享更多数学数模,甚至科研的干货问题。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/137980
推荐阅读
相关标签
  

闽ICP备14008679号