企业安全生产问题数学建模
企业的生产安排问题
摘要
在生产中,科学合理的安排生产能够很大提高企业的利润,对企业的发展具有重要的意义。本文针对工厂的产品的生产、库存和设备的维修更新等问题进行了讨论,并建立了相应的模型使企业的利益最大化。
首先,根据企业提供的数据,以7种产品为讨论对象,以每月的最大利润之和为最大总利润,然后将总目标转化为每月的目标,以每月的利润为目标函数,以工厂拥有的设备所能提供的最大生产用时和产品的最大需求量为约束条件,利用LINGO进行求解,得到最优安排计划,见下表。
关键词:最大利润, LINGO,最优安排计划
问题的重述
企业是一个有机的整体,企业管理是一个完整的系统,由许多子系统组成。在企业的管理中,非常关键的一部分是科学地安排生产。对于生产、库存与设备维修更新的合理安排对企业的生存和发展具有重要的意义。
已知某工厂要生产7种产品,以I,II,III,IV,V,VI,VII来表示,但每种产品的单件利润随市场信息有明显波动,现只能给出大约利润如下。
该厂有4台磨床、2台立钻、3台水平钻、1台镗床和1台刨床可以用来生产上述产品。已知生产单位各种产品所需的有关设备台时如下表。
从1月到6月,维修计划如下:1月—1台磨床,2月—2台水平钻,3月—1台镗床,4月—1台立钻,5月—1台磨床和1台立钻,6月—1台刨床和1台水平钻,被维修的设备当月不能安排生产。
又知从1—6月市场对上述7中产品最大需求量如下表所示:
每种产品当月销售不了的每件每月存储费为5元,但规定任何时候每种产品的存储量均不能超过100件。1月初无库存,要求6月末各种产品各储存50件。
若该工厂每月工作24天,每天两班,每班8小时,要求:
(1)该厂如何安排生产,使总利润最大;
(2)若对设备维修只规定每台设备在1—6月份内均需安排1个月用于维修(其中4台磨床只需安排2台在上半年维修),时间可灵活安排。重新为该厂确定一
个最优的设备维修计划。
问题的基本假设与符号说明
基本假设:
①假设产品的单件利润在这个时期内大约利润不变;
②假设在生产过程设备不会出现故障(除在维修中的设备);
③假设每种产品能够在预定的时间内满足生产,不存在其他因素影响;
④假设在该时期内生产单位产品耗的对应设备时间不变;
⑤假设市场的最大需求量在该时期不变;
⑥假设在总利润与单件产品的利润,库存的总费用相关,不考虑员工等其他的费用,同时也不
考虑设备的维修费用;
⑦假设每个月的库存量在该时期内的单件库存费用不变;
符号说明:
Xij: 表示第i月第j种产品的生产量;
Yij: 表示第i月第j种产品的销售量;
Z:表示总利润;
Sij:表示第i月第j种产品的剩余量;
Wj: 表示第j种产品的大约利润;
Tkj: 表示第k种设备生产第j种产品所需的台时;
Bik: 表示在第i个月内第k种需要维修的设备能投入生产的数量;
Rij: 表示第i月第j种产品的最大需求量;
Nij: 表示第i月第j种产品的单间库存费用;
Mik:表示第i个月第k种需要维修的设备进行维修的数目;
Dk:表示第k种设备需要维修的数目;
其中 (k=1 2 3 4 5 ; j=1 2 3 4 5 6 7 ; i=1 2 3 4 5 6).
模型的分析
对于问题一:企业要生产其中产品,以I,II,III,IV,V,VI,VII来表示,每种产品的单件
都有相对应的利润值,并在一定时期内稳定。在问题一中,企业的总利润只与各类产品总销售的产品类别和数量有关以及当月末的储存费有关。各类产品的产量受到每件产品耗不同设备的时间限定;月末的储存费只与当月末的库存量成正比关系,而每月各类产品的库存量都有相应的范围限定和要求。综合上述各个量之间的联系和对应条件可以建立相应的数学线性优化模型。
对于问题二:如果重新为该厂确定一个最优的设备维修计划,可以运用与0-1整数规划似的思路来确定每个月需要维修哪几种设备,这几种设备又需维修几台.在满足约束条件的情况下使得企业获得的总利润最大。
模型的建立
模型Ⅰ
ⅰ、决策变量Xij :第i 月第j 种产品的生产量;Yij :第i 月第j 种产品的销售量;Z :总利润;Sij 表示第i 月第j 种产品的剩余量;Wj :第j 种产品的大约利润;Tkj :第k 种设备生产第j 产品所需的台时;Bik :第i 月第k 种设备能投入生产的数量;Rij :第i 月第j 种产品的最大需求量;
ⅱ、决策目标 以总利润最大(即每月的利润最大)Max Z ;
∑∑∑∑====?-?=
617
1
6171
max i j i j Nij Sij wj Yij ;
ⅲ、约束条件
①使总台时满足工厂安排要求 ②使生产的产品量满足最大需求量 物流守恒
Tkj 、Bik 、Rij 的数值如下:
模型Ⅱ
由模型一可知在维修设备中的约束条件Bik 改变了,这里运用10-整数规划的思路对Bik 进行约束。
ⅰ、决策变量 决策变量Xij :第i 月第j 种产品的生产量;Yij :第i 月第j 种产品的销
售量;Z :总利润;Sij 表示第i 月第j 种产品的剩余量;
Wj :第j 种产品的大约利润;Tkj :第k 种设备生产第j 产品所需的台时;Bik :第i 月第k 种设备能投入生产的数量;Rij :第i 月第j 种产品的最大需求量;
Mik :表示第i 个月第k 种需要维修的设备进行维修的数目;Dk : 表示第k 种设备需要维修的数目;
ⅱ、决策目标 以总利润最大(即每月的利润最大)Max Z ;
① ∑∑∑∑====?-?=
617
1
6171
max i j i j Nij Sij wj Yij ;
ⅲ、约束条件
①使总台时满足工厂安排要求
②使生产的产品量满足最大需求量 物流守恒
③控制每月每种设备的维修约束条件
Mik Bik ,的数值如下:
模型的求解
模型Ⅰ
利用LINGO 进行求解,程序见附录一,可以得到最大利润MAX=元,在这种情况下按下表安排生产:
表2
想化状态,排除一切不相关的影响。若是单件产品利润在这个时期内波动性较大,则需要另外假设。在此模型假设,首先每个月的销售量与生产量,前月库存量有关,当月库存量满足Yij
=
+
-)1
(,既要使产品尽量满足市场的需求,同时库存费用较少,
S+
Sij
i
Xij
j
每月的库存量又只允许不超过100的情况下,某种设备全部维修,则生产有关的产品停止生产。由表可以看出:当第3月份镗床在维修中时,对应需要经过镗床加工的第I、II、IV、V和VII种产品就不能照常生产,直接导致该月没有此类产品的出产,这严重影响了公司利润;当第3月份市场对III、IV的需求量为0,即我们生产的产品在该月销售不了,这说明对于该产品的相关工作在这个月都要相应的停止,这对企业的安排具有很大的不利性。
模型Ⅱ
利用LINGO进行求解,程序见附录二,可以得到最大利润MAX=元,得到结果如下:
各种设备在维修时所剩余在运行的设备绘制成表4如下:
1台镗床和1台刨床,5月—2台磨床和1台立钻,6月—2台水平钻。
在安排相应的设备维修情况下得到最大的利润下企业在各个月的生产量表5如下:
与问题一相比较下多出5=151435元。对于重新安排维修计划可以比首次的维修计划中获取的总利润更大。但在4月份时生产量为0,这对于企业来说是一种损失,这样要尽量满足需求量就必在前一个月的库存量增加。市场需求量的限制不得不控制部分产品产量,其使企业生产资源浪费较大。
综合分析:
在问题一中得维修计划使企业的资源利用更充分,在每个月中都有生产,假如考虑其他因素的条件下,可以充分利用资源,以求达到更好的收益。而改变维修计划后,用运行结果显示,在4月停止了生产,对于企业来说是一笔巨大的损失。虽然在其他月份中可以获得更大利润,但同时也使资源,员工劳动时间等因素浪费。企业的最大效益是每个企业最求的最大目标,资源,能力和市场容量的多方面共同限制企业的最大效益。
模型的评价和推广
评价
1、模型的优点:
①该模型给出了企业的生产计划的一般通用算法,也涉及到了逆序推算。
②本模型反应的数据具有很好的参考性.
2、模型的缺点:
①由于每种产品的单件利润随市场信息有明显波动,本模型假设了每种产品的单件利润在这6个月不变。所以,最大总利润不是很准确。
②该模型没有对工序进行优化安排,不适于解决工序复杂,加工时间长的问题。
③机器在运行中不能确保一定不能出故障,微小的故障可能打乱了企业的整个计划,最后影响效益,即可变性较差。
④该模型基于不严格的假设与各项指标,假设和指标对结果的影响往往很大,这就要求对指标和各项指标进行合理的确认,实际上这也是很大的额外工作。
推广
问题一、问题二的运行结果显示,在对镗床、刨床这两种设备进行维修时,导致有关需要该设备生产的相关产品停产。这样的情况浪费了许多的资源,使我们的总利润达不到最大。在这种情况下企业可以考虑向外部租赁或购买该种设备,使生产计划进一步优化,再对增加该种设备后所获得的净增利润进行求解,如果增加该种设备的净增利润比租凭或购买的费用大,则租赁或购买该种设备。
我们还可以对各种设备的利用率进行分析、求解,从中挖掘潜在的价值,从而再重新安排生产计划和设备维修计划,以达到进一步的优化。
由于本模型假设了单位产品的利润在这个时期内不变,而实际情况是波动的。单位产品的利润和这种产品的产量有关,他们之间有一定的函数关系,如果知道两者的函数关系,我们可以在本模型的基础上做进一步的优化,得到的最大总利润更接近实际情况。
参考文献
[1] 姜启源,谢金星,叶俊:《数学模型(第三版)》,高等教育出版社,2003年版。
[2] 何瑞文等,高等数学,[M]西南交通大学出版社,2003年8月第1版
附录
附录一
程序一代码:
model:
max=100*y11+60*y12+80*y13+40*y14+110*y15+90*y16+30*y17-5*s11-5*s12-5*s13-5*s14-5*s15-5*s16-
5*s17;
*x11+*x12+*x15+*x16+*x17<=1152;
*x11+*x12+*x14+*x16<=768;
*x11+*x13+*x17<=1152;
*x11+*x12+*x14+*x15+*x17<=384;
*x13+*x15+*x17<=384;
x11=s11+y11;
x12=s12+y12;
x13=s13+y13;
x14=s14+y14;
x15=s15+y15;
x16=s16+y16;
x17=s17+y17;
s11<=100;
s12<=100;
s13<=100;
s14<=100;
s15<=100;
s16<=100;
s17<=100;
y12<=1000;
y13<=300;
y14<=300;
y15<=800;
y16<=200;
y17<=100;
@gin(x11);@gin(x12);@gin(x13);@gin(x14);
@gin(x15);@gin(x16);@gin(x17);@gin(s11);
@gin(s12);@gin(s13);@gin(s14);@gin(s15);
@gin(s16);@gin(s17);@gin(s1);@gin(y11);
@gin(y12);@gin(y13);@gin(y14);@gin(y15);
@gin(y16);@gin(y17);
程序二代码:
model:
max=100*y21+60*y22+80*y23+40*y24+110*y25+90*y26+30*y27-5*s21-5*s22-5*s23-5*s24-5*s25-5*s26-5*s27;
*x21+*x22+*x25+*x26+*x27<=1536;
*x21+*x22+*x24+*x26<=768;
*x21+*x23+*x27<=384;
*x21+*x22+*x24+*x25+*x27<=384;
*x23+*x25+*x27<=384;
s11+x21=s21+y21;
s12+x22=s22+y22;
s13+x23=s23+y23;
s14+x24=s24+y24;
s15+x25=s25+y25;
s16+x26=s26+y26;
s17+x27=s27+y27;
s21<=100;
s22<=100;
s23<=100;
s24<=100;
s25<=100;
s26<=100;
s27<=100;
y21<=600;
y22<=500;
y23<=200;
y24=0;
y25<=400;
y26<=300;
y27<=150;
s11=0;
s12=0;
s15=0;
s16=0;
s17=0;
@gin(x21);@gin(x22);@gin(x23);@gin(x24);
@gin(x25);@gin(x26);@gin(x27);@gin(s21);
@gin(s22);@gin(s23);@gin(s24);@gin(s25);
@gin(s26);@gin(s27);@gin(y21);@gin(y22);
@gin(y23);@gin(y24);@gin(y25);@gin(y26);
@gin(y27);
说明:程序三、程序四、程序五同程序二只需把j分别改为3,4,5且把能投入生产的设备数、各种产品的最大需求量、上月的存储量改为相应的值即可。
程序六代码:
model:
max=100*y61+60*y62+80*y63+40*y64+110*y65+90*y66+30*y67-5*s61-5*s62-5*s63-5*s64-5*s65-5*s66-5*s67;
*x61+*x62+*x65+*x66+*x67<=1536;
*x61+*x62+*x64+*x66<=768;
*x61+*x63+*x67<=768;
*x61+*x62+*x64+*x65+*x67<=384;
*x63+*x65+*x67=0;
s51+x61=s61+y61;
s52+x62=s62+y62;
s53+x63=s63+y63;
s54+x64=s64+y64;
s55+x65=s65+y65;
s56+x66=s66+y66;
s57+x67=s67+y67;
s61=50;
s62=50;
s63=50;
s64=50;
s65=50;
s66=50;
s67=50;
y11<=500;
y12<=500;
y13<=100;
y14<=300;
y15<=1100;
y16<=500;
y17=0;
s51=0;
s52=0;
s55=100;
s56=0;
s57=100;
@gin(x61);@gin(x62);@gin(x63);@gin(x64);
@gin(x65);@gin(x66);@gin(x67);@gin(y61);
@gin(y62);@gin(y63);@gin(y64);@gin(y65);
@gin(y66);@gin(y67);
附录二
程序一代码:
model:
max=100*y11+60*y12+80*y13+40*y14+110*y15+90*y16+30*y17-5*s11-5*s12-5*s13-5*s14-5*s15-5*s16-5*s17;
*x11+*x12+*x15+*x16+*x17<=384*(4-m11);
*x11+*x12+*x14+*x16<=384*(2-m12);
*x11+*x13+*x17<=384*(3-m13);
*x11+*x12+*x14+*x15+*x17<=384*(1-m14);
*x13+*x15+*x17<=384*(1-m15);
x11=s11+y11;
x12=s12+y12;
x13=s13+y13;
x14=s14+y14;
x15=s15+y15;
x16=s16+y16;
x17=s17+y17;
s11<=100;
s12<=100;
s13<=100;
s14<=100;
s15<=100;
s16<=100;
s17<=100;
y11<=500;
y12<=1000;
y13<=300;
y14<=300;
y15<=800;
y16<=200;
y17<=100;
m11<=9;
m12<=9;
m13<=9;
m14<=9;
m15<=9;
m13=d3;
m14=d4;
m15=d5;
@gin(x11);@gin(x12);@gin(x13);@gin(x14);
@gin(x15);@gin(x16);@gin(x17);@gin(s11);
@gin(s12);@gin(s13);@gin(s14);@gin(s15);
@gin(s16);@gin(s17);@gin(y11);@gin(y12);
@gin(y13);@gin(y14);@gin(y15);@gin(y16);
@gin(y17);@gin(m11);@gin(m12);@gin(m13);
@gin(m14);@gin(m15);
说明:程序二、程序三、程序四、程序五、程序六同程序一只需把月份、能投入生产的设备数、各种产品的最大需求量、上月的存储量、需要维修的设备能投入生产的量、需要维修的设备进行维修的数量根据题意改为相应的值即可。