matlab Cplex使用
安装cplex
示例
% value:5 constraint:2
% max z=2x1+x2+4x3+3x4+x5
% 2x2+x3+4x4+2x5<=54
% 3x1+4x2+5x3-x4-x5<=62
% x1,x2<=0,x3<=3.32,x4<=0.678,x5<=2.57
f=-[2 1 4 3 1]';%目标函数系数 (每条边对应的距离)
A=[0 2 1 4 2;3 4 5 -1 -1];%变量系数
B=[54;62];%约束右侧系数
xm=[0,0,3.32,0.678,2.57]';%变量约束
P=intvar(5,1);%创建m*n的连续型决策变量矩阵
g=f'*P;
set=[];
set=[set;A*P<=B;xm<=P];
options=sdpsettings('solver','cplex');
optimize(set,g);
P=double(P)% 查看各变量取值
double(g)% 查看目标函数
%% another
% max z=4x1+6x2+2x3
% -x1+3x2<=8
% -x2+3x3<=10
% 5x1-x3<=8
% x1,x2,x3>=0且为整数
% 目标函数 决策变量,整数型:intvar 连续型:sdpvar 二值型:binvar
x=intvar(1,3);
f=[4 6 2]*x';
% 约束x1,x2,x3
F=set(x>0)+set([-1 3 0]*x'<=8)+set([0 -1 3]*x'<=10)+set([5 0 -1]*x'<=8);
%在约束F下求目标函数f最大值
solvesdp(F,-f);
% 查看目标函数
double(f)
% 查看各变量取值
double(x)
x=intvar(1,5);
f=[1 1 3 4 2]*(x'.^2)-[8 2 3 1 2]*x';F=set(0<=x<=99);
F=F+set([1 1 1 1 1]*x'<=400)+set([1 2 2 1 6]*x'<=800)+set(2*x(1)+x(2)+6*x(3)<=800);
F=F+set(x(3)+x(4)+5*x(5)<=200);solvesdp(F,-f);