matlab min函数_Matlab+yalmip+cplex安装教程及算例

c5f20c08bc6a9bd5f996a27ef7d832c0.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这一个文件夹添加进去,如图所示:

3850fbae1e0e3d80667e4a00f243d54f.png

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

yalmip 安装教程:

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

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

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

b77f24ad32b56db51a6dee5aeaf67fc7.png

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

小算例:

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

780e12ccb3aa5ec48c358222e48565a6.png
%定义变量
x=sdpvar(2,1);
%目标函数
obj=2*x(1)+3*x(2);
%约束条件
constraint=[];
constraint=[constraint,x(1)+x(2)>350];
constraint=[constraint,x(1)>100];
constraint=[constraint,2*x(1)+x(2)<600];
constraint=[constraint,x(2)>0];
%求解
ops = sdpsettings('solver','cplex','verbose',1);
ops.cplex.display='on';
ops.cplex.timelimit=600;
ops.cplex.mip.tolerances.mipgap=0.001;
% 诊断求解可行性
disp('开始求解')
diagnostics=optimize(constraint,obj,ops);
if diagnostics.problem==0
    disp('Solver thinks it is feasible')
elseif diagnostics.problem == 1
    disp('Solver thinks it is infeasible')
    pause();
else
    disp('Timeout, Display the current optimal solution')
end

这里的常用语句:

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

value:变量或表达式的值

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

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值