yalmip-cplex学习总结+亲测算例(一)

本文是关于YALMIP与CPLEX结合使用的学习总结,涵盖下载安装、基础命令介绍,以及11个实际操作案例,包括线性规划、整数规划问题的解决,展示了如何在MATLAB中调用CPLEX求解器进行混合整数线性规划问题的求解。
该文章已生成可运行项目,

目录

一、基础知识

1.下载安装过程

2.比较好的命令

3.yalmip + lpsolve + matlab

4.#Matlab# Yalmip & CPLEX使用

5.YALMIP学习总结

6.YALMIP学习笔记-基础知识

7.yalmip简单的例子

二、亲测案例11个

1.案例一

2.案例二

3.案例三

4.案例四

5.案例五

6.案例六

 7.案例七

8.案例八

9.案例九

10.案例十

11.案例十一


一、基础知识

1.下载安装过程

请看:matlab中调用cplex 以及使用 Yalmip 工具箱https://blog.csdn.net/robert_chen1988/article/details/44464369

2.比较好的命令

教程在yalmip官网上有:https://yalmip.github.io/tutorials/

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

check:可以检查约束条件是否被满足(检查约束条件的余值)

value:可以查看变量或表达式的值

assign: 可以给变量赋值,这个命令调试时很重要

options=sdpsettings('solver','cplex'); 设置求解方法为调用 CPLEX
optimize(constraints,f,options);  Yalmip求解的命令。

3.yalmip + lpsolve + matlab

求解混合整数线性规划问题(MIP/MILP) https://blog.csdn.net/a_learning/article/details/53337335

4.#Matlab# Yalmip & CPLEX使用

https://blog.csdn.net/qq_22476313/article/details/100937540

5.YALMIP学习总结

https://blog.csdn.net/qq_15651815/article/details/79615664

6.YALMIP学习笔记-基础知识

https://blog.csdn.net/qq_16309049/article/details/91549610

7.yalmip简单的例子

https://blog.csdn.net/cj461733387/article/details/101694103

二、亲测案例11个

1.案例一

max 4x1 + 2x2 + x3

s. t. 2x1 + x2 <= 1,x1 + 2x3 <= 2,x1 + x2 + x3 = 1,

x1 >= 0,x1 <= 1,x2 >= 0,x2 <= 1,x3 >= 0,x3 <= 2

clear;clear all;clc;close all;
tic;
%案例一
x=sdpvar(3,1);
f=[4 2 1]*x;
F=(2*x(1)+x(2)<=1);
F=F+(x(1)+2*x(3)<=2);
F=F+(x(1)+x(2)+x(3)==1);
F=F+(0<=x(1)<=1)+(0<=x(2)<=1)+(0<=x(3)<=2);
ops=sdpsettings('solver','cplex','verbose',2);
result=solvesdp(F,-f,ops);
if result.problem==0
    xresult=value(x)
    zresult=value(f)
else
    disp('求解错误')
end
toc;

Iteration:     1   Dual objective     =            -2.500000

xresult =

    0.5000

         0

    0.5000

 

zresult =

    2.5000

时间已过 1.452390 秒。

2.案例二

clear;clear all;clc;close all;
tic;
x=sdpvar(3,1);
f=[2 3 1]*x;
F=[x(1)+4*x(2)+2*x(3)>=8;3*x(1)+2*x(2)>=6;x(1)>=0;x(2)>=0;x(3)>=0];
opt=sdpsettings('solver','cplex');
result=solvesdp(F,f,opt);
if result.problem==0 %求解成功
    resultx=double(x)
    resultz=double(f)
else
    disp('求解出错')
end
toc;

Iteration:     1   Dual objective     =             4.000000

resultx =

     2
     0
     3


resultz =

     7

时间已过 1.462861 秒。

3.案例三

求解题目与2相同,但使用默认求解器,可以不用人为选择cplex。

 

本文章已经生成可运行项目
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值