Yalmip+Ipopt+Cplex使用手册

1.软件版本

2.Cplex添加方法

  • 官方下载地址: http://www-01.ibm.com/software/websphere/products/optimization/cplex-studio-community-edition/

  • 破解版下载地址:http://www.0daydown.com/02/140054.html
  • 其中community-edition可以免费试用,但最多只能计算1000个变量或1000个约束条件的优化问题。

  • 点击安装,安装步骤默认操作即可。

  • 点击Matlab中的,点击,找到路径并将其添加,最后点击即可。

  • 然后在Matlab命令行窗口输入,出现帮助文档,代表添加成功。

3.Ipopt添加方法

  • 需要的组件:VC_redist.x64和ww_ifort_redist_intel64_2017.0.109.msi

  • (组件下载地址链接:链接1:https://pan.baidu.com/s/1f-J5PBu1WsJO8uxyZzbcTQ 密码:crxv )

  • 链接2:
  • 在打开的界面中选择图1-1即可。

图1

图2

  • 打开MATLAB,设置路径-》添加并包含子文件夹-》选择Ipopt路径-》保存。见下图1-3。

图3

  • 右键运行图2中的opti_Install。
  • 出现提示让你安装optiMEXFiles_mexw64_2_27,回车几下,弹出窗口,找到optiMEXFiles_mexw64_2_27(不需要自己手动解压)选中即可。
  • VC_redist.x64和ww_ifort_redist_intel64_2017.0.109.msi ,这两个组件自己手动安装,注意版本即可。
  • 注意下图中框框中的组件我已经安装好了,如果没有安装,是会有提示的。

IPOPT 3.12.9

4.Yalmip添加方法

  • 下载地址:https://yalmip.github.io/(最新版本)
  • 下载链接:http://pan.baidu.com/s/1eRBhRlK 密码:dv4o(之前版本)
  • 将下载的文件解压,设置路径-》添加并包含子文件夹-》选择Yalmip路径-》保存。
  • 在Matlab的命令行窗口中输入或输入Yalmiptest,测试是否添加成功。

5.Yalmip建模常用语法

5.1  变量设置

  • 实数变量:sdpvar;
  • 0-1变量:binvar;
  • 整数变量:intvar。
  • 例如:x = sdpvar(1,1);    %x为1×1的实数变量

5.2  约束条件

  • Constraints = [];  %Constraints为自己定义的一个存储约束的矩阵
  • Constraints = [Constraints,0 <= x  <= 1];   %定义了一个变量x大于0且小于1的约束条件

5.3  目标函数

  • F = 0;    %F为目标函数
  • x = sdpvar(1,1);
  • Constraints = [Constraints, x >= 2];
  • F = F + x^2 + x^3;   %目标函数为x^2+x^3

5.4   查看变量或表达式的值

  • value(x);   %查看变量x的值
  • value(x^2+x^3);   %查看表达式x^2+x^3的值

5.5  设置Yalmip和求解器的options

  • 通过sdpsettings设置,(sdpsettings参数列表链接
  • options = sdpsettings('field',value,'field',value,.....);   %filed为参数名,value为设置值
  • 例如:options = sdpsettings('solver','cplex');   %设置求解器为cplex
  • 或者这样也可以:options.cplex.exportmodel = 'model.lp';   %设置求解器cplex输出lp格式的数学模型,文件名为model。

图4

图5   options

图6  options.cplex

图7     xxxx.lp格式的数学模型

5.6  常用求解函数optimize

  • sol = optimize(Constraints,Objective,options);  %Constraints为约束,Objective为目标函数,options为5.5节的options

5.7 输出Yalmip模型

  • export函数是将Yalmip模型按照求解器的格式输出。
  • [model,recoverymodel,diagnostic,internalmodel] = export(Constraints,Objective,options);  %Constraints为约束,Objective为目标函数,options为5.5节的options
  • 例如:
  • x = intvar(2,2);
  • Constraints = [];
  • Constraints = [Constraints,0 <= x  <= 1];
  • F = sum(x) * ones(2,1);
  • options = sdpsettings('solver','cplex');   %设置求解器为cplex
  • [model,recoverymodel,diagnostic,internalmodel] = export(Constraints,Objective,options);  %此时model中就会有符合cplex求解器格式的模型

图8  model中的参数列表

5.8  获取求解器的求解时间和Yalmip的建模时间

  • sol = optimize(Constraints,Objective,options);  %Constraints为约束,Objective为目标函数,options为5.5节的options
  • sol.yalmiptime;  %Yalmip的建模时间
  • sol.solvertime;  %求解器的求解时间

5.9  设置初值

  • P = sdpvar(2,2);
  • assign(P,double(Pit));  %P为2×2的实数变量,Pit为2×2的已知矩阵,将Pit的值赋值给P
  • options = sdpsettings('solver','cplex','usex0',1);  %usex0默认为0,1为开启设置初值功能

图9   Yalmip网站说明

5.10  获取对偶乘子

5.11  Yalmip输出模型,调用Cplex类求解

5.12  IPOPT参数设置说明

图10 IPOPT参数列表

『实践』Yalmip+Ipopt+Cplex使用手册的更多相关文章

  1. 『实践』Yalmip建模+Cplex类求解

    Yalmip建模+Cplex类求解 一.缘由 Yalmip只能设置部分Cplex的参数,所以需要调用Cplex类.而且optimize是Yalmip提供的常用函数,但此函数的返回结果参数有限. 图1 ...

  2. 『实践』Yalmip获取对偶函数乘子

    『实践』Yalmip获取对偶函数乘子 一.sdpsetting设置 Yalmip网站给出的说明 savesolveroutput默认为0,需要设置为1才会保存输出结果. 下面是我模型的约束个数: 二. ...

  3. 『实践』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分布式集群及基于HDFS的网盘实现

    『实践』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分布式集群及基于HDFS的网盘实现 1.基本设定和软件版本 主机名 ip 对应角色 mas ...

  4. 『实践』Matlab实现Flyod求最短距离及存储最优路径

    Matlab实现Flyod求最短距离及存储最优路径 一.实际数据 已知图中所有节点的X.Y坐标. 图中的节点编号:矩阵中的编号 J01-J62:1-62; F01-F60:63-122; Z01-Z0 ...

  5. 『实践』Android之短信验证码(用的Mob短信验证)

    1.参考资料 Mob网站:http://www.mob.com/ Mob在Github上的例子:https://github.com/MobClub/SMSSDK-for-Android 教程:htt ...

  6. 『实践』Java Web开发之分页(ajax)

    1.需要用到的jar包.js文件 JSONArray().fromObject()需要的jar包: (1)commons-beanutils-1.8.3.jar (2)commons-collecti ...

  7. 『实践』百度地图给map添加右键菜单(判断是否为marker)

      var map; var s;//经度 var w;//纬度 $(document).ready(function(){ $(".mune").load("jsp/c ...

  8. 『实践』百度地图给多个marker添加右键菜单(删除、更新)

    js: $.getJSON("./GetStationPlaceServlet",function(json){ for(var i=0;i<json.length;i++) ...

  9. 在Ubuntu 11.10工具栏上用数字显示网速、CPU负荷和内存占用量『译』

    基本上照抄了<How To Display Network Upload / Download Speed On The Panel In Ubuntu 11.04>,只不过我的实践环境是 ...

随机推荐

  1. [Week2 作业] 代码规范之争

    这四个问题均是出自 http://goodmath.scientopia.org/2011/07/14/stuff-everyone-should-do-part-2-coding-standards ...

  2. Beta版本冲刺(三)

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...

  3. Beta冲刺预备

    作业链接 Beta冲刺随笔集 github地址 讨论组长是否重选的议题和结论 在Alpha阶段我们由于没有项目经验,很多技术都仅限于书本上的知识,没有真正实践过,所以出现各种各样的问题,在组长的带领下 ...

  4. 转帖 OKR

    什么是OKR OKR全称是Objectives and Key Results,即目标与关键成果法.OKR是一套定义和跟踪目标及其完成情况的管理工具和方法.1999年Intel公司发明了这种方法,后来 ...

  5. SOA,SOAP,RPC,以及 RPC协议与 REST 协议之间的关系(搜狗)

    web service顾名思义这是一种提供service的形式,而且只能通过http(web)来提供service(web service三要素:SOAP.WSDL(WebServicesDescri ...

  6. react & monaco editor & vs code

    react & monaco editor & vs code monaco-editor https://microsoft.github.io/monaco-editor/inde ...

  7. Delphi中快速修改变量名称

    鼠标左键选择需要修改的范围,左侧会出现一个同步编辑模式(Sync Edit Mode),快捷键:CTRL+SHIFT+J,它可以让我们清楚地编写或改写多个同一参数.

  8. 关于django-rest-freamwork中的View

    view > views.APIView > generics.GenericAPIView > viewsets.GenericViewSet 1.APIView(继承 view) ...

  9. Session in BSU CodeForces - 1027F(思维 树 基环树 离散化)

    题意: 有n门考试,每门考试都有两个时间,存在几门考试时间冲突,求考完所有的考试,所用的最后时间的最小值 解析: 对于时间冲突的考试 就是一个联通块 把每个考试看作边,两个时间看作点,那么时间冲突的考 ...

  10. UVa 572 油田 (dfs)

    The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSu ...