题目:
某食品公司生产两种点心①和②,采用采用原料A和B。已知生产每盒点心①和②时消耗的原料数及原料单价、月供应量及两种点心的批发价如下表所示:
据对市场估计,②点心月销量不超过2000盒,且其销量不超过点心①1000盒。要求计算使销售收人最大的计划安排。
模型建立:
设①点心的销量为x 1 x_1x1盒,②点心的销量为x 2 x_2x2盒,设销售收入为S SS,那么可得
为了使销售收入最大,所以目标函数就是
约束条件:
根据表中数据可得原料的供应量约束为
根据两种点心的销量关系可得销量约束为
综上可得总的约束条件为
模型求解:
下面我们使用两种方法针对上述问题进行求解,一种是利用CPLEX求解器进行求解,还有一种是利用matlab自带的intlinprog求解(由于该问题是整数规划,所以使用intlinprog)。
CPLEX求解代码:
%CPLEX求解 clc,clear,close tic x=intvar(2,1); s=6.9*x(1)-6.4*x(2); c=[x(1)+2*x(2)<=6000 2*x(1)+x(2)<=8000 x(1)<=2000 -x(1)+x(2)<=1000 x(1),x(2)>=0]; options=sdpsettings('solver','cplex','verbose',2); result=solvesdp(c,-s,options);%由于本题是求最大值,所以加一个负号 if result.problem==0 xresult=value(x) sresult=value(s) else disp('求解错误') end toc;
求解结果:
Intlinprog求解代码:
%intlinprog求解 clc,clear s=[6.9;-6.4]; intcon=2; a=[1,2;2,1;0,1;-1,1]; b=[6000;8000;2000;1000]; lb=zeros(2,1); ub=[2000;2000]; [x,y]=intlinprog(-s,intcon,a,b,[],[],lb,ub) s=-y %由于intlinprog标准形式是求最小值,所以此处取相反数最大值。
求解结果:
对比两种结果发现:求解结果一致。
所以当点心①销售2000盒,点心②销售0盒,最大销售收入为13800元。