我是靠谱客的博主 疯狂烤鸡,最近开发中收集的这篇文章主要介绍matlab让sdpvar转成数字,『实践』Yalmip+Ipopt+Cplex使用手册,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Yalmip+Ipopt+Cplex使用手册

1.软件版本

Cplex 12.6.2,Matlab R2014a,Ipopt 3.12.9,Yalmip

2.Cplex添加方法

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

其中community-edition可以免费试用,但最多只能计算1000个变量或1000个约束条件的优化问题。

点击

ab45f20f7bbf48bb42411e4be96db4a2.png安装,安装步骤默认操作即可。

点击Matlab中的

8aa00070d112aff47a66a2c79717f579.png,点击

b0e2a0f53289132e02f446dbd8ff5c74.png,找到

1f085aa1b27527261551116835bc05ca.png路径并将其添加,最后点击

d266079980e48dcacd47d08c20d70804.png即可。

然后在Matlab命令行窗口输入

13d771c9670093dfc2472aa5cce4db51.png,出现帮助文档,代表添加成功。

3.Ipopt添加方法

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

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

链接2:

0adf9b36598bf432cae52fa81142149a.png

在打开的界面中选择图1-1即可。

4d36469c89f58af4fc8b9b82f6d0807c.png

图1

Ipopt下载链接:链接:https://pan.baidu.com/s/1tWBRJ7syW-WctcL1LkB06w 密码:1n3m (以前的版本3.12.6)

下载下来后解压缩,打开文件,目录如下图1-2。

48ded55c4611014f3d5218740528baf7.png

图2

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

64c4a6d1cb2fd75a08727f1d6da9be16.png

图3

右键运行图2中的opti_Install。

出现提示让你安装optiMEXFiles_mexw64_2_27,回车几下,弹出窗口,找到optiMEXFiles_mexw64_2_27(不需要自己手动解压)选中即可。

VC_redist.x64和ww_ifort_redist_intel64_2017.0.109.msi ,这两个组件自己手动安装,注意版本即可。

注意下图中框框中的组件我已经安装好了,如果没有安装,是会有提示的。

8c5c4575e91be641fd3662bd4640eb03.png

f391a2da31367a0eaf9c0c41f79da1a0.png

IPOPT 3.12.9

4.Yalmip添加方法

下载地址:https://yalmip.github.io/(最新版本)

下载链接:http://pan.baidu.com/s/1eRBhRlK 密码:dv4o(之前版本)

将下载的文件解压,设置路径-》添加并包含子文件夹-》选择Yalmip路径-》保存。

在Matlab的命令行窗口中输入

54ecc87963c6249c5b5fabb18945479f.png或输入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。

3eea5919b9706074d9cb77cb52874247.png

图4

34d51aeb688752ea4f1651e4db9b679d.png

图5   options

48be9db905835af61149b54e1cdac2a7.png

图6  options.cplex

42c86144f874a735b6dbfdfab1f0bf57.png

b1abc8dafac5c35b29bcdf1ed7f223e3.png

04de50c840a5e84627a8b0fc7ba2d6e4.png

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

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

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求解器格式的模型

9ca9f2da61fb0cc3ea7fbf472cf98941.png

图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为开启设置初值功能

58ec2d1c1532c66c8fcb49a76d9cc911.png

图9   Yalmip网站说明

5.10  获取对偶乘子

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

5.12  IPOPT参数设置说明

bb42e70a8f5bdfd7d85989a7ad3c3ed1.png

图10 IPOPT参数列表

6.Yalmip+Cplex求解电力系统机组组合程序

来源:https://www.cnblogs.com/landiljy/p/6776434.html

最后

以上就是疯狂烤鸡为你收集整理的matlab让sdpvar转成数字,『实践』Yalmip+Ipopt+Cplex使用手册的全部内容,希望文章能够帮你解决matlab让sdpvar转成数字,『实践』Yalmip+Ipopt+Cplex使用手册所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部