线性规划模型的建立与求解—生产问题

某厂生产三种产品,,Ⅲ。每种产品要经过A,B两道工序加工。设该厂有两种规格的设备能完成A工序,它们A1,A2 表示;有三种规格的设备能完成B工序,它们B1,B2,B3,表示。产品Ⅰ可在A,B任何一种规格设备上加工。产品Ⅱ可在任何规格的A设备上加工,但完成B工序时,只能在B1设备上加工;产品Ⅲ只能在A2B2设备上加工。已知在各种机床设备的单件工时、原材料费、产品销售价、各种设备有效台时以及满负荷操作时机床设备的费用如,最优的生产计划,使该厂利润最大。

设备

产品

设备有效台时

满负荷时的

设备费用/

设备加工费(元/时台)

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来说,以A1A2完成A工序的产品分别为x1x2件,转入B工序时,以B1B2B3完成B工序的产品分别为x3x4x5件;对于产品II来说,以A1A2完成A工序的产品分别为x6x7件,转入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:产品IA2与生产的产品数量;

x3:产品IB1与生产的产品数量;

x4:产品IB2与生产的产品数量;

x5:产品IB3与生产的产品数量;

x6:产品IIA1与生产的产品数量;

x7:产品IIA1与生产的产品数量;

x8:产品IIB1与生产的产品数量;

x9:产品IIIA2与生产的产品数量,

  (产品IIIB2与生产的产品数量;)

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.如果问题较复杂,一定要注意正确输入,并在输入后进行检查。

posted @   cszcoder  阅读(1309)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示