Matlab调用cplex必须通过yalmip嘛

Matlab,调 用,cplex,必 须 通 过 yalmip 嘛 , 新 手 提 问

Matlab 可以直接调用 Cplex 的 API 进行求解,但使用 YALMIP 可以更方便地实现面向对象的建模,并将问题转换成 Cplex 可识别的格式。

Matlab调用Cplex不必须通过YALMIP,但使用YALMIP可以方便地创建和解决数学规划问题。可以直接使用Cplex API,以Matlab为例:

cplex = Cplex('example'); 
cplex.Model.sense = 'minimize'; 
cplex.Model.obj = [1,2,3]; 
cplex.Model.A = [1,1,1;1,2,3]; 
cplex.Model.lhs = [5;6]; 
cplex.Model.rhs = [5;6]; 
cplex.Model.lb = [0,0,0]; 
cplex.Model.ub = [inf,inf,inf]; 
cplex.solve(); 
fprintf ('Solution status = %s\n', cplex.Solution.statusstring); 
fprintf ('Solution value = %f\n', cplex.Solution.objval); 
fprintf ('Solution vector =\n'); 
disp (cplex.Solution.x);

而使用YALMIP,可以用更简单的代码表示相同的问题:

x = sdpvar (3,1); 
obj = x' * [1;2;3]; 
constr = [sum(x) <= 5; x(2) + 2*x(3) <= 6]; 
sol = solvesdp (constr, obj, sdpsettings ('solver', 'cplex')); 
disp (double (obj)); 
disp (double (x));


这种方法可以更方便地编写复杂的数学规划模型。这里代价是指使用cplex解决某个优化问题所需要付出的资源,可以是计算时间,内存占用,计算资源的消耗等。通过yalmip可以简化模型建立过程,使得使用cplex更为简单方便,但是代价是需要更多的内存占用,不过微不足道。