1、机械产品生产计划问题摘要:该问题属于线性单目标整数规划问题,本文从问题的提出到问题假设与分析,然后得到模型,最后用lingo求解,得出最优的生产、库存、销售方案,然后又进行了灵敏度分析,找到在不改变原计划的情况下,如何提高利润的办法。本文还从设备的角度分析了提高了利润的办法,并对设备检修计划建立了模型,并用lingo求解,解出了最优的设备检修计划,在该方案下得到的最大利润。关键字:单目标整数规划 最优生产方案 设备检修计划一、 问题的提出机械加工厂生产7种产品。该厂有以下设备: 四台磨床、两台立式钻床、三台水平钻床、一台镗床和一台刨床。 每种产品的利润( 单位:元/件, 在这里, 利润定义为销
2、售价格与原料成本之差)以及生产单位产品需要的各种设备的工时(小时/件)如表1所示,其中短划线表示这种产品不需要相应的设备加工。表1 产品的利润和需要的设备工时 产品 1234567单位产品利润10.006.003.004.001.009.003.00磨床0.500.70 -0.300.200.50立钻0.102.00 -0.30 -0.6 -水平钻0.206.000.80- - -0.60镗床0.050.03 -0.070.10 -0.08刨床 -0.01-0.05 -0.05从一月份至月份, 每个月中需要检修设备见表2所示(在检修月份,被检修设备全月不能用于生产)。每个月各种产品的市场销售量
3、上限如表3所示。每种产品的最大库存量为100件,库存费用为每件每月0.5元,在一月初,所有产品都没有库存;而要求在六月底,每种产品都至少要有50件库存。工厂每天开两班, 每班8小时,为简单计, 假定每月都工作24天 。表2 设备检修计划月份计划检修设备及台数月份计划检修设备及台数一 月一台磨床四月一台立式钻床二 月二台立式钻床五月一台磨床和一台立式钻床三 月一台镗床六月一台刨床和一台水平钻床表3 产品的市场销售量上限(件/月)产品1234567一月5001000300300800200100二月6005002000400300150三月30060000500400100四月2003004005
4、002000100五月010050010010003000六月500500100300110050060生产过程中,各种工序没有先后次序的要求 。(1) 制定六个月的生产、库存、销售计划, 使六个月的总利润最大。(2) 在不改变以上计划的前提下, 哪几个月中哪些产品的售价可以提高以达到增加利润的目的。价格提高的幅度是多大?(3) 哪些设备的能力应该增加? 请列出购置新设备的优先顺序。(4) 是否可以通过调整现有的设备检修计划来提高利润? 提出一个新的设备检修计划, 使原来计划检修的设备在这半年中都得到检修而使利润尽可能的 增加。(5) 构造一个最优设备检修计划模型,使在这半年中各设备的检修台数
5、满足案例中的要求且使利润为最大。二、问题的假设和符号的说明1、问题的假设(1)成本不会随着检修方案的改变而改变。(2)产品的生产不会随检修方案的改变而受影响。(3) 产品的生产和库存还有销售必须是整数2、符号的说明(1)假设Xij为第i种产品在第j个月的产量,i=1,27,j=1,26。(2)假设Yij为第i种产品在第j个月的库存量,i=1,27,j=1,26。(3)假设Sij为第i种产品在第j个月的库销售量,i=1,27,j=1,26。三、问题的分析工厂每天开两班, 每班8小时,为简单计, 假定每月都工作24天。则一个月的总工作时间为2482=384小时。由设备检修计划表,我们可得设备每个月
6、可以供工作的时间(单位:小时)为:表4月份123456磨床384338443844384438433844立钻384238403842384138413842水平钻384338433843384338433842镗床384138413840384138413841刨床384138413841384138413840我们先把上述表4和表1等数据化为数学符号: X11 X12 X13 X14 X15 X160.50 0.70 0.00 0.00 0.30 0.20 0.50 X21 X22 X23 X24 X25 X26 0.10 2.00 0.00 0.30 0.00 0.60 0.00 X31
7、 X32 X33 X34 X35 X360.20 6.00 0.80 0.00 0.00 0.00 0.60 X41 X42 X43 X44 X45 X460.05 0.03 0.00 0.07 0.10 0.00 0.08 X51 X52 X53 X54 X55 X560.00 0.00 0.01 0.00 0.05 0.00 0.05 X61 X62 X63 X64 X65 X66 X71 X72 X73 X74 X75 X76=(aij)56假设该矩阵为A,aij为第i种设备在第i个月被使用的时间。3843 3844 3844 3844 3843 3844 3842 3840 3842
8、3841 3841 3842 3843 3843 3843 3843 3843 3842 3841 3841 3840 3841 3841 3841 3841 3841 3841 3841 3841 3840=(bij)56假设该矩阵为B,bij为第i种设备在第i个月可以供使用的时间。则得到30个约束条件为: aij=bij(i=1,25,j=1,26)。 每种产品的最大库存量为100件,则得42个约束条件为:Yij=100(i=1,27,j=1,26)。 由生产量和库存量,可以得到每种产品每个月的销售量(单位:件)为:Si1=Xi1-Yi1;Sij=Xij+Yi,j-1-Yij;i=1,27
9、,j=2,36 将上述表3的相关销售量上限数据化为数学符号得: 500 600 300 200 0 500 1000 500 600 300 100 500 300 200 0 400 500 100 =(Cij)76,假设设该矩阵为C,Cij为 300 0 0 500 100 300 800 400 500 200 1000 1100 200 300 400 0 300 500 100 150 100 100 0 60第i种产品在第j个月的销售上限,其中i=1,27,j=1,26。则得到42个约束条件:Sij=50(i=1,27)。 我们把单位产品的利润化为数学符号得I=(10,6,3,4,
10、1,9,3)。X=(x1j,x2j, x3j, x4j, x5j, x6j, x7j)(i=1,26);则Xij=xij 是指第i种产品六个月的总生产量。S=(s1j,s2j, s3j, s4j, s5j, s6j, s7j)=(X1j- Y16, X2j- Y26, X3j- Y36, X4j- Y46, X5j- Y56, X6j- Y66,X7j- Y76)(j=1,26);则Si=sij 是指第i种产品六个月的总销售量。其中Si=Xij- Yi6是因为产品的总销售量等于总的生产量减去最后的库存量。T=(Yi1,Yi2, Yi3, Yi4, Yi5, Yi6)(i=1,27);则Tj=Y
11、ij 是指第j个月这七种产品的总库存量。 通过以上的分析,我们最终可得出利润为:Z=SI-0.5Yij。四、模型的建立和问题的求解1、制定六个月的生产、库存、销售计划, 使六个月的总利润最大通过问题的分析,我们可能得到模型如下:Max z=(X1j- Y16) 10+(X2j- Y26)6+(X3j- Y36)3+(X4j- Y46)4+(X5j- Y56)1+(X6j- Y66)9+(X7j- Y76) 3-0.5Yij;(i=1,27,j=1,26)S.t.0.50 X11+0.70 X21+0.00 X31+0.00 X41+0.30 X51+0.20 X61+0.50 X71= 384
12、30.10 X11+2.00 X21+0.00 X31+0.30 X41+0.00 X51+0.60 X61+0.00 X71= 38420.20 X11+6.00X21+0.80X31+ 0.00X41+ 0.00X51+ 0.00X61+ 0.60 X71=38430.05 X11+ 0.03 X21+ 0.00 X31+ 0.07 X41+ 0.10 X51+ 0.00 X61+ 0.08 X71=38410.00 X11+ 0.00 X21+ 0.01 X31+ 0.00 X41+ 0.05 X51+0.00 X61+ 0.05 X71=38410.50 X12+0.70 X22+0.
13、00 X32+0.00 X42+0.30 X52+0.20 X62+0.50 X72= 38440.10 X12+2.00 X22+0.00 X32+0.30 X42+0.00 X52+0.60 X62+0.00 X72= 38400.20 X12+6.00X22+0.80X32+ 0.00X42+ 0.00X52+ 0.00X62+ 0.60 X72=38430.05 X12+ 0.03 X22+ 0.00 X32+ 0.07 X42+ 0.10 X52+ 0.00 X62+ 0.08 X72=38410.00 X12+ 0.00 X22+ 0.01 X32+ 0.00 X42+ 0.05
14、X52+0.00 X62+ 0.05 X72=38410.50 X13+0.70 X23+0.00 X33+0.00 X43+0.30 X53+0.30 X63+0.50 X73= 38440.10 X13+3.00 X23+0.00 X33+0.30 X43+0.00 X53+0.60 X63+0.00 X73= 38420.30 X13+6.00X23+0.80X33+ 0.00X43+ 0.00X53+ 0.00X63+ 0.60 X73=38430.05 X13+ 0.03 X23+ 0.00 X33+ 0.07 X43+ 0.10 X53+ 0.00 X63+ 0.08 X73=38
15、400.00 X13+ 0.00 X23+ 0.01 X33+ 0.00 X43+ 0.05 X53+0.00 X63+ 0.05 X73=38410.50 X14+0.70 X24+0.00 X34+0.00 X44+0.40 X54+0.40 X64+0.50 X74= 38440.10 X14+4.00 X24+0.00 X34+0.40 X44+0.00 X54+0.60 X64+0.00 X74= 38410.40 X14+6.00X24+0.80X34+ 0.00X44+ 0.00X54+ 0.00X64+ 0.60 X74=38430.05 X14+ 0.04 X24+ 0.00
16、 X34+ 0.07 X44+ 0.10 X54+ 0.00 X64+ 0.08 X74=38410.00 X14+ 0.00 X24+ 0.01 X34+ 0.00 X44+ 0.05 X54+0.00 X64+ 0.05 X74=38410.50 X15+0.70 X25+0.00 X35+0.00 X45+0.50 X55+0.50 X65+0.50 X75= 38430.10 X15+5.00 X25+0.00 X35+0.50 X45+0.00 X55+0.60 X65+0.00 X75= 38410.50 X15+6.00X25+0.80X35+ 0.00X45+ 0.00X55+
17、 0.00X65+ 0.60 X75=38430.05 X15+ 0.05 X25+ 0.00 X35+ 0.07 X45+ 0.10 X55+ 0.00 X65+ 0.08 X75=38410.00 X15+ 0.00 X25+ 0.01 X35+ 0.00 X45+ 0.05 X55+0.00 X65+ 0.05 X75=38410.60 X16+0.70 X26+0.00 X36+0.00 X46+0.60 X56+0.60 X66+0.60 X76= 38440.10 X16+6.00 X26+0.00 X36+0.60 X46+0.00 X56+0.60 X66+0.00 X76=
18、38420.60 X16+6.00X26+0.80X36+ 0.00X46+ 0.00X56+ 0.00X66+ 0.60 X76=38420.06 X16+ 0.06 X26+ 0.00 X36+ 0.07 X46+ 0.10 X56+ 0.00 X66+ 0.08 X76=38410.00 X16+ 0.00 X26+ 0.01 X36+ 0.00 X46+ 0.06 X56+0.00 X66+ 0.06 X76=3840Yij=100, i=1,27,j=1,26X11- Y11=500X21- Y21=1000X31- Y31=300X41- Y41=300X51- Y51=800X5
19、1- Y61=200X71- Y71=100X12+ Y11- Y12=600X22+ Y21- Y22=500X32+ Y31- Y32=200X42+ Y41- Y42=0X52+ Y51- Y52=400X62+ Y61- Y62=300X72+ Y71- Y72=150X13+ Y12- Y13=300X23+ Y22- Y23=600X33+ Y32- Y33=0X43+ Y42- Y43=0X53+ Y52- Y53=500X63+ Y62- Y63=400X73+ Y72- Y73=100X14+ Y13- Y14=200X24+ Y23- Y24=300X34+ Y33- Y3
20、4=400X44+ Y43- Y44=500X54+ Y53- Y54=200X64+ Y63- Y64=0X74+ Y73- Y74=100X15+ Y14- Y15=0X25+ Y24- Y25=100X35+ Y34- Y35=500X45+ Y44- Y45=100X55+ Y54- Y55=1000X65+ Y64- Y65=300X75+ Y74- Y75=0X16+ Y15- Y16=0X26+ Y25- Y26=100X36+ Y35- Y36=500X46+ Y45- Y46=100X56+ Y55- Y56=1000X66+ Y65- Y66=300X76+ Y75- Y7
21、6=50, i=1,27Xij, Yij=0且都为整数, i=1,27,j=1,26根据模型,下面用lingo求解,程序如下:model:!机械产品生产计划问题;sets: machine/ma1.ma5/: need; goods/g1.g7/: interest; month/1.6/; links1(machine,goods): A; links2(goods,month):X,C,Y; alltimes(machine,month):B;endsets!目标函数;max = sum(goods(I):(sum(month(J):X(I,J) - Y(I,6) * interest(I
22、) - 0.5 * sum(links2(I,J):Y(I,J);!整数约束;for(links2(I,J):gin(X(I,J);for(links2(I,J):gin(Y(I,J);!设备使用时间约束;for(alltimes(I,K): sum(goods(J):A(I,J)*X(J,K)=B(I,K);!库存量约束;for(links2(I,J):Y(I,J)=50);!销售量约束;for(goods(I):X(I,1)-Y(I,1)=C(I,1);for(links2(I,J)|J#NE#1:X(I,J)+Y(I,J-1)-Y(I,J)=C(I,J);!这里是数据;data: int
23、erest=10 6 3 4 1 9 3; B = 1152 1536 1536 1536 1152 1536 768 0 768 384 384 768 1152 1152 1152 1152 1152 768 384 384 0 384 384 384 384 384 384 384 384 0; C = 500 600 300 200 0 500 1000 500 600 300 100 500 300 200 0 400 500 100 300 0 0 500 100 300 800 400 500 200 1000 1100 200 300 400 0 300 500 100 150
24、 100 100 0 60; A= 0.50 0.70 0.00 0.00 0.30 0.20 0.50 0.10 2.00 0.00 0.30 0.00 0.60 0.00 0.20 6.00 0.80 0.00 0.00 0.00 0.60 0.05 0.03 0.00 0.07 0.10 0.00 0.08 0.00 0.00 0.01 0.00 0.05 0.00 0.05;enddataend求解得到结果:目标函数值(即六个月最大利润:单位为:元)为41464.00,并可以制定六个月的生产、库存、销售计划(单位为:件)为:产品月份1月2月3月4月5月6月1生产量60000200055
25、0库存量100000050销售量500100020005002生产量12200107102109库存量0000250销售量12200107100613生产量30020004006000库存量000010050销售量3002000400500504生产量30000500100350库存量0000050销售量300005001003005生产量800500020011000库存量01000010050销售量8004001002001000506生产量30004500250550库存量10005050050销售量20010040003005007生产量10025001001000库存量0100001
26、0050销售量100150100100050其中这张表中的生产量直接由lingo算出的X可得,库存量直接由lingo算出的Y可得,而由问题分析中给出的销售量公式:Si1=Xi1-Yi1;Sij=Xij+Yi,j-1-Yij; 可以算出。i=1,27,j=2,36 2、在不改变以上计划的前提下, 哪几个月中哪些产品的售价可以提高以达到增加利润的目的。价格提高的幅度是多大? 因为以上的计划是整数规划下制定的,而在lingo中我们无法用lingo做灵敏度分析,所以我从另一个角度,即转换到另一个模型来分析这个问题。 如果这个模型(1)还未加上整数约束条件,则是一般的线性规划,则我们就可以用这个未加上整
27、数约束的模型(2)在lingo中用灵敏度分析来解答这题的问题。之所以能把问题转换到这个模型上,是因为模型(1)的最优解是在模型(2)的可行域中找到令目标函数值达到最优的整数解。只要在模型(2)中可行域不变,而只是目标函数的系数变化了,则表示目标直线的方向改变了,只要变化的直线在模型(2)中移动时仍是原来的最优点使其值达到最大,则在该方向移动找最优整数解,仍会得到原来的最优整数点。所以,只要目标函数的系数使模型(2)的最优解不变,则可保证模型(1)的最优解也不变。而且模型(2)只有X26= 109.6667 与模型(1)不同,也可以近似认为模型(2)求解。 因此,下面我将会用模型(2)在ling
28、o中进行灵敏度分析,只要选择LINGO|Range就能得出关于系数变化范围的数据如下:Ranges in which the basis is unchanged: Objective Coefficient Ranges Current Allowable Allowable Variable Coefficient Increase Decrease NEED( MA1) 0.0 0.0 INFINITY NEED( MA2) 0.0 0.0 INFINITY NEED( MA3) 0.0 0.0 INFINITY NEED( MA4) 0.0 0.0 INFINITY NEED( MA5
29、) 0.0 0.0 INFINITY X( G1, 1) 10.00000 INFINITY 9.300000 X( G1, 2) 10.00000 INFINITY 8.500000 X( G1, 3) 10.00000 INFINITY 0.0 X( G1, 4) 10.00000 1.100000 9.700000 X( G1, 5) 10.00000 0.5388889 INFINITY X( G1, 6) 10.00000 0.7000000 0.5388889 X( G2, 1) 6.000000 16.50000 6.000000 X( G2, 2) 6.000000 194.0
30、000 INFINITY X( G2, 3) 6.000000 0.0 INFINITY X( G2, 4) 6.000000 4.000000 4.333333 X( G2, 5) 6.000000 1.583333 2.166667 X( G2, 6) 6.000000 15.00000 6.000000 X( G3, 1) 3.000000 1.300000 2.200000 X( G3, 2) 3.000000 0.5000000 1.300000 X( G3, 3) 3.000000 0.5000000 0.5000000 X( G3, 4) 3.000000 0.2111111 0
31、.5000000 X( G3, 5) 3.000000 INFINITY 0.2111111 X( G3, 6) 3.000000 INFINITY 1.720000 X( G4, 1) 4.000000 0.6000000 3.000000 X( G4, 2) 4.000000 29.50000 INFINITY X( G4, 3) 4.000000 13.00000 INFINITY X( G4, 4) 4.000000 0.9000000 0.6000000 X( G4, 5) 4.000000 1.000000 0.9000000 X( G4, 6) 4.000000 0.500000
32、0 1.000000 X( G5, 1) 1.000000 0.5000000 1.000000 X( G5, 2) 1.000000 INFINITY 0.5000000 X( G5, 3) 1.000000 19.00000 INFINITY X( G5, 4) 1.000000 0.5000000 1.000000 X( G5, 5) 1.000000 INFINITY 0.5000000 X( G5, 6) 1.000000 10.00000 INFINITY X( G6, 1) 9.000000 INFINITY 8.500000 X( G6, 2) 9.000000 51.0000
33、0 INFINITY X( G6, 3) 9.000000 0.4750000 0.6500000 X( G6, 4) 9.000000 1.300000 INFINITY X( G6, 5) 9.000000 0.6500000 0.4750000 X( G6, 6) 9.000000 0.5000000 1.500000 X( G7, 1) 3.000000 1.100000 2.400000 X( G7, 2) 3.000000 INFINITY 1.100000 X( G7, 3) 3.000000 13.00000 INFINITY X( G7, 4) 3.000000 0.2833
34、333 3.000000 X( G7, 5) 3.000000 INFINITY 0.2833333 X( G7, 6) 3.000000 8.600000 INFINITY Y( G1, 1) -0.5000000 INFINITY 9.300000 Y( G1, 2) -0.5000000 0.5000000 INFINITY Y( G1, 3) -0.5000000 10.20000 INFINITY Y( G1, 4) -0.5000000 1.100000 INFINITY Y( G1, 5) -0.5000000 0.5388889 INFINITY Y( G1, 6) -10.50000 0.7000000 INFINITY Y( G2, 1) -0.5000000 0.50