使用MATLAB2019b进行的求解,使用的是基于问题的求解方法
clc,clear
prob=optimproblem('ObjectiveSense','max');%ObjectiveSense用于指定求最大值还是最小值,prob=optimproblem是默认求最小值
x=optimvar('x',2,3,'LowerBound',0);%上下界可用x的同形矩阵来定义,‘UpperBound’用来规定上界
prob.Objective=24*sum(x(1,:))+15*sum(x(2,:))-20*sum(x(:,1))-12*sum(x(:,2))-8*sum(x(:,3));
prob.Constraints.con1=[sum(x(:,1))<=500;sum(x(:,2))<=750;sum(x(:,3))<=625];%同一个约束条件里的符号要相同,行向量或者列向量均可
prob.Constraints.con2=[sum(x(1,:))>=600;sum(x(2,:))>=800];
prob.Constraints.con3=[0.5*sum(x(1,:))<=x(1,1);0.25*sum(x(1,:))<=x(1,2);x(1,3)<=0.1*sum(x(1,:))];
prob.Constraints.con4=[x(2,1)<=0.4*sum(x(2,:));x(2,2)<=0.4*sum(x(2,:));0.15*sum(x(2,:))<=x(2,3)];
[sol,fval]=solve(prob)
sol.x
sx=sum(sol.x,2)