线性规划模型的建立与求解—生产问题
某厂生产三种产品Ⅰ,Ⅱ,Ⅲ。每种产品要经过A,B两道工序加工。设该厂有两种规格的设备能完成A工序,它们以A1,A2 表示;有三种规格的设备能完成B工序,它们以B1,B2,B3,表示。产品Ⅰ可在A,B任何一种规格设备上加工。产品Ⅱ可在任何规格的A设备上加工,但完成B工序时,只能在B1设备上加工;产品Ⅲ只能在A2与B2设备上加工。已知在各种机床设备的单件工时、原材料费、产品销售单价、各种设备有效台时以及满负荷操作时机床设备的费用如下表,求最优的生产计划,使该厂利润最大。
设备 |
产品 |
设备有效台时 |
满负荷时的 设备费用/元 |
设备加工费(元/时台) |
||
Ⅰ |
Ⅱ |
Ⅲ |
||||
A1 |
5 |
10 |
|
6000 |
300 |
0.05 |
A2 |
7 |
9 |
12 |
10000 |
321 |
0.03 |
B1 |
6 |
8 |
|
4000 |
250 |
0.06 |
B2 |
4 |
|
11 |
7000 |
783 |
0.11 |
B3 |
7 |
|
|
4000 |
200 |
0.05 |
原料费/(元/件) |
0.25 |
0.35 |
0.50 |
|
|
|
单价/(元/件) |
1.25 |
2.00 |
2.80 |
|
|
1.问题分析
这是一个求最大利润的生产问题,通过建立模型求出一组最优解,使得该厂生产利润最大。已知对于产品I来说,以A1,A2完成A工序的产品分别为x1,x2件,转入B工序时,以B1,B2,B3完成B工序的产品分别为x3,x4,x5件;对于产品II来说,以A1、A2完成A工序的产品分别为x6,x7件,转入B工序时,以B1完成B工序的产品为x8件;对于产品III来说,以A2完成A工序的产品为x9件,则以B1完成B工序的产品也为x9件。
2.符号说明
设备 |
产品 |
设备有效台时 |
满负荷时的 设备费用/元 |
设备加工费(元/时台) |
||
Ⅰ |
Ⅱ |
Ⅲ |
||||
A1 |
x1 | x6 |
|
6000 |
300 |
0.05 |
A2 |
x2 | x7 | x9 |
10000 |
321 |
0.03 |
B1 |
x3 | x8 |
|
4000 |
250 |
0.06 |
B2 |
x4 |
|
x9 |
7000 |
783 |
0.11 |
B3 |
x5 |
|
|
4000 |
200 |
0.05 |
原料费/(元/件) |
0.25 |
0.35 |
0.50 |
|
|
|
单价/(元/件) |
1.25 |
2.00 |
2.80 |
|
|
|
x1 :产品I的A1参与生产的产品数量;
x2:产品I的A2参与生产的产品数量;
x3:产品I的B1参与生产的产品数量;
x4:产品I的B2参与生产的产品数量;
x5:产品I的B3参与生产的产品数量;
x6:产品II的A1参与生产的产品数量;
x7:产品II的A1参与生产的产品数量;
x8:产品II的B1参与生产的产品数量;
x9:产品III的A2参与生产的产品数量,
(产品III的B2参与生产的产品数量;)
3.模型假设
(1)生产的产品合格率不发生变化。
(2)不考虑在加工过程中产生的其他费用。
(3)工厂正常生产,销售连续不间断及各项费用等均不发生变化。
(4)各个设备之间运作相互独立。
(5)设备有效台时稳定不变。
4.模型建立
(1)利润 = (单价 - 原料费) * 数量 - 设备费用
这里的产品数量可以使用所有在A或者B加工的数量来表示。
(2)目标函数
Z = (1.25 - 0.25)(x1+x2)+(2 - 0.35)x8+(2.8 - 0.5)x9
-(300/6000)(5x1+10x6) - (321/10000)(7x2+9x7+12x9)
-(250/4000)(6x3+8x8) - (783/7000)(4x4+11x9) - (200/4000)7x5
因为这个产品必须要经过A,B两道工序,所以说使用一个产品参与的所有的A或者B工序数量就可以,
约束条件为:
又因为产品在对应的A设备加工的总和等于在对应的B设备加工的总和,
等式约束条件为:
5.模型的求解及分析
(1)求解
模型为
max Z = (1.25-0.25)(x1+x2) + (2-0.35)x8 + (2.8-0.5)x9
-(300/6000)(5x1+10x6) - (321/10000)(7x2+9x7+12x9)
-(250/4000)(6x3+8x8) - (783/7000)(4x4+11x9) - (200/4000)7x5
(1)相关程序如下: clc,clear,close all,format long g %将数据显示为长整型科学计数 %1.创建优化问题 prob = optimproblem('ObjectiveSense','max'); %2.创建变量 x = optimvar('x',9,1,'LowerBound',0); c = [1.00,1.65,2.30,300/6000,321/10000,250/4000,783/7000,200/4000]; q = [6000,10000,4000,7000,4000]; Aeq = [5,7,6,4,7,10,9,8,12,11]; %3.创建问题的目标函数 prob.Objective = c(1)*(x(1)+x(2))+c(2)*x(8)+c(3)*x(9)-c(4)*(5*x(1)+10*x(6))-... c(5)*(7*x(2)+9*x(7)+12*x(9))-c(6)*(6*x(3)+8*x(8))-... c(7)*(4*x(4)+11*x(9))-c(8)*7*x(5); %4.创建问题的约束条件 con1 = [Aeq(1)*x(1)+Aeq(6)*x(6) <= 6000 Aeq(2)*x(2)+Aeq(7)*x(7)+Aeq(9)*x(9) <= 10000 Aeq(3)*x(3)+Aeq(8)*x(8) <= 4000 Aeq(4)*x(4)+Aeq(10)*x(9) <= 7000 Aeq(5)*x(5) <= 4000]; con2 = [x(1)+x(2)==x(3)+x(4)+x(5) x(6)+x(7)==x(8)]; prob.Constraints.con1 = con1; prob.Constraints.con2 = con2; %5.求解问题 [sol,fval,flag,out] = solve(prob) sol.x, format
(2)结果分析:
fval =1146.56650246305
ans =
1200
230.049261083744
0
858.620689655173
571.428571428571
0
500
500
324.137931034483
求得最优解为
x1=1200,x2=230.049261083744,x3=0,x4=858.620689655173,
x5=571.428571428571,x6=0,x7=500,x8=500,x9=324.137931034483。
最优值为Z=1146.56650246305元。
由于结果必定是整数,我们需要把结果取整。
所以
从以上数据可以看出,生产计划为最优时,该厂的利润最大为1146.56650246305元;
最优的生产计划为:
产品I的A1参与生产的产品数量为1200件;
产品I的A2参与生产的产品数量为230件;
产品I的B1参与生产的产品数量为0件;
产品I的B2参与生产的产品数量为859件;
产品I的B3参与生产的产品数量为571件;
产品II的A1参与生产的产品数量为0件;
产品II的A1参与生产的产品数量为500件;
产品II的B1参与生产的产品数量为500件;
产品III的A2参与生产的产品数量为324件,即产品III的B2参与生产的产品数量为324件。
注意事项:
1.在输入系数矩阵Aeq、目标函数系数c、约束条件右端常数项和约束条件符号时,应注意对应的正确位置。
2.在输入目标函数系数c时﹐只需按照原目标函数进行输入,无需转换小数,程序会自动进行相应的调整。。
3.在进行每步的运行时,一定要按步骤进行。
4.如果问题较复杂,一定要注意正确输入,并在输入后进行检查。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具