『实践』Yalmip+Ipopt+Cplex使用手册_weixin_30363509的博客-程序员秘密

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参数列表

 

转载于:https://www.cnblogs.com/landiljy/p/6776434.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30363509/article/details/95504100

智能推荐

JavaScript Math.ceil() 函数_ply_09070066的博客-程序员秘密

Math.ceil(x) -- 返回大于等于数字参数的最小整数(取整函数),对数字进行上舍入ceil是ceiling的缩写,中文"上限"的意思引用网址:http://www.dreamdu.com/javascript/Math.ceil/ceil函数语法Math.ceil(x);ceil函数参数x -- 为number类型的数字ceil函数返回值返回大

opencv 轮廓面积 java_opencv轮廓求面积_蓝星神的博客-程序员秘密

官方给出求轮廓面积的函数是contourArea(),但是实际使用时发现该值并不是区域内亮点的像素值。contourArea是根据 Green formula计算得到的,具体计算上的差别可以参考这张图,实际7个像素,计算出来是2.5白线经过的像素是1,其余(2,1)(3,3)为0这让用惯halcon的我有点难以接受,于是寻思着怎么得到另一种面积(区域内亮像素的个数)。搜索了一遍发现opencv3....

CSS动画及过渡,调用动画,循环播放,反向播放,暂停动画_css动画倒放_debug_mode的博客-程序员秘密

CSS部分&lt;style type="text/css"&gt; /* 动画 */ /* 1.开始状态 */ @keyframes move { /* 开始状态 */ 0% { transform: translate(0px, 0px) rotate(0deg); } ...

iOS版本控制工具(SVN,GIT,SourceTree)_ThomasYB的博客-程序员秘密

公司的实际开发中,在天朝使用较多的还是SVN,因为SVN是集中式的,在天朝上班你们都懂的! -----------------svn-----------------   一:最常用基本步骤--- 下载(完整下载,第一次),将服务器的项目下载到本地开始开发svn checkout ip —uaerbane=? —password=?     //这里

boost::hana::make用法的测试程序_给我打包一份三十块钱的外卖的博客-程序员秘密

boost::hana::make用法的测试程序实现功能C++实现代码实现功能boost::hana::make用法的测试程序C++实现代码#include &lt;boost/hana/basic_tuple.hpp&gt;#include &lt;boost/hana/core/make.hpp&gt;#include &lt;type_traits&gt;namespace hana = boost::hana;constexpr hana::basic_tuple&lt;int, c

随便推点

Mplayer交叉编译_长生明水的博客-程序员秘密

Mplayer下载网址: http://www.mplayerhq.hu/MPlayer/releases/ 选择版本MPlayer-1.0rc3(rc3以上的版本使用相同的方式编译会出现闪屏现象,原因不详) 编译步骤: 1.检查、配置 ./configure –prefix=/home/lxy/build/mplayer-arm –cc=arm-linux-gcc –ar=

Core Image_一度_iOSDeveloper的博客-程序员秘密

利用Quartz 2D我们可以绘制各类图形、图像,功能确实强大。用过photoshop的朋友都知道,使用photoshop可以制作各种滤镜特效,那么在iOS中能否实现滤镜呢?在iOS5.0之前这些算法基本全部要靠程序员编程实现,实现过程相当复杂。从iOS5.0开始苹果官方已经提供了Core Image框架来帮助开发者进行特效制作。先来看一下滤镜使用过程中常用的基类对象:CIContext:

华恩JAVA班第12天_Amare丶的博客-程序员秘密

华恩JAVA班第12天一 基本类型:基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型。数据类型 大小 范围 默认值 byte(字节) 8 -128 - 127

java--servlet重点讲解_zhangxiaomin19921的博客-程序员秘密

生成随机验证码public classidentfify extends HttpServelet{public statcifinal char[] chars={'2','3','9','a','z'};//随机字符串public staticRandom random=new Random();//随机数public static StringgetRandomString(

PID算法控制平衡小车直立_直立小车pid控制方案_学习&笔记的博客-程序员秘密

1.平衡小车直立控制:如果我们要控制一根木棍在手上直立,需要两个步骤-&gt;托着木棒的手可以移动-&gt;眼睛能看到木棒的倾斜角度和倾斜趋势(角速度)类比到平衡小车中,同理想让小车保持平衡,同样需要一个负反馈机制,让小车角度回正,理想情况下,我们只需要控制电机的加速度和小车的倾角成正比就可保持平衡。(1)一般小车只需沿着轮胎方向前后移动保持平衡即可,我们把小车偏离平衡位置的角度作为偏差。(2)实际上小车到达平衡位置后,并没有我们设想的那样保持静止,而是因为钢体转动惯性,小.

[论文阅读] (24) 向量表征:从Word2vec和Doc2vec到Deepwalk和Graph2vec,再到Asm2vec和Log2vec(一)-程序员秘密

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。前一篇介绍了两个作者溯源的工作,从二进制代码和源代码两方面实现作者去匿名化或识别。这篇文章主要介绍六个非常具有代表性的向量表征算法,它们有特征词向量表示、文档向量表示、图向量表示,以及两个安全领域二进制和日志的向量表征。通过类似的梳理,让读者看看这些大佬是如何创新及应用到新领域的,希望能帮助到大家。

推荐文章

热门文章

相关标签