目录
一、基础知识
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。

本文是关于YALMIP与CPLEX结合使用的学习总结,涵盖下载安装、基础命令介绍,以及11个实际操作案例,包括线性规划、整数规划问题的解决,展示了如何在MATLAB中调用CPLEX求解器进行混合整数线性规划问题的求解。
&spm=1001.2101.3001.5002&articleId=106980136&d=1&t=3&u=0db9895896534843a629d652f2489273)
2万+

被折叠的 条评论
为什么被折叠?



