案例二:生产计划
线性规划方案最重要的应用是安排多个时期的计划,比如生产计划。根据生产计划问题的解,经理能够在一定的时间段(几星期或几个月内)为一个或多个产品制定一个高效低成本的生产计划。其实生产计划问题也可以看做是未来某个时期的生产调配问题。经理必须决定生产水平,使公司能够满足生产需求,在收到产品生产量、劳动力生产量以及贮藏空间上有所限制的同时,还要使生产成本最小。
利用线性规划解决生产计划问题的一个好处就是它们是周期性的。一个生产计划必定是为当月制定的,然后下个月又制定一次,再下个月又制定一次,如此周而复始。看一看每个月的问题,生产经理就可以发现,虽然生产需求已经发生了变化,生产次数、产品生产量、贮藏空间等限制大致还是一样的。因此,生产经理基本上可以按以前月份的管理方法解决同样的问题,而生产计划的一个总线性规划模型可能被频繁地使用。一旦这个模型被固定下来,经理只需要在特定的生产时期提供当时的需求量、生产量等有关数据就可以了,并且可重复利用此线性规划模型构想出生产计划。
让我们来看看Bollinger Electronics公司的案例,该公司为一个重要的飞机引擎制造公司生产两种不同的电子组件。飞机引擎制造商在下面3个月里每个月都会通知Bollinger Electronics公司的销售办公室,告诉他们每个星期对组件的需求量。每个月对组件的需求量变化可能很大,这要视飞机引擎制造商正在生产哪种类型的引擎情况而定。表4-7列出的是刚刚接到的订单,这批订单是下3个月的需求量。
表4-7 Bollinger Electronics公司3个月的需求一览表
组件四月五月六月332A100030005000802B10005003000接到订单之后,需求报告就被送到生产控制部门。生产控制部门则必须制定
出3个月生产组件的计划。为了制定出生产计划,生产经理需要弄清楚以下几点: 总生产成本, 存货成本。
改变生产力水平所需的经费。
接下来我们要介绍Bollinger Electronics公司如何建立公司的生产贮存线性规划,以使公司的成本最小。
为了制定出此模型,我们用Xim表示m月生产产品i的单位生产量。在这里i=1或2,m=1、2或3;i=1指的是332A组件,i=2指的是802B组件,m=1指的是四月份,m=2指的是五月份,m=3指的是六月份。双重下标的目的是规定一个更具描述性的符号。我们可以简单地用X6来代表三月份生产的产品2的单位生产量。但是X23更具描述性,它直接确定用变量代表的月份和产品。
如果生产一个332A组件的成本为20美元,生产一个802B组件的成本为10美元,那么目标函数中总成本部分是:
总生产成本=20X11+20X12+20X13+10X21+10X22+10X23
每个月每单位产品的生产成本是一样的,所以我们不需要在目标函数里涵盖生产成本。也就是说,不管选择的生产一览表是什么样的,总生产成本将会保持相同的水平。换句话说,生产成本不是相关成本,无需在制定生产计划时认真考虑。但是,如果每个月单位产品成本是改变的,那么单位产品成本变量就必须包含在目标函数里。对于Bollinger Electronics公司的问题来说,不管这些成本是不是包含在里面,它的解决方案将会是一样的。我们把它们包括在里面,这样线性规划问题的目标函数将包含所有与产品有关的成本。
为了把相关库存成本合并到模型里面,我们用Sim来表示产品i在第m月月底的存货水平。Bollinger Electronics公司已经决定,每月在基本存货上的成本占生产产品成本的1.5%。也就是说,0.015×20=0.30(美元/332A组件),0.015×10=0.15(美元/802B组件)。在利用线性规划方法来制定生产预期计划时一个普遍的假设是,每月末的存货近似等于整个月的平均存货水平。通过做这种假设,我们把目标函数中库存成本部分写下来:
库存成本=0.30S11+0.30S12+0.30S13+0.15S21+0.15S22+0.15S23
为了把每个月的生产水平波动所带来的成本容入模型,我们需要定义两个额外的变量:
Im=在m月的时候必要的总生产水平增长 Dm=在m月的时候必要的总生产水平下降
在评估完员工下岗、人员补缺、再分配培训所花的费用以及其他与波动的生产水平相关的费用所产生的影响后,Bollinger Electronics公司估计出每个月份中生产水平增长一个单位所带来的成本是0.5美元,生产水平下降一个单位所带来的成本是0.2美元。因此,我们可以写下第三部分的目标函数: 生产水平变化成本=0.50I1+0.50I2+0.50I3+0.20D1+0.20D2+0.20D3 注意,这里产量波动成本是通过m月的产量和m-1月的产量计算出来的。在其他的生产安排中,这个波动成本很可能是由机器工作时间或劳动力时间计算出来的。
把所有这些成本价起来,完整的目标函数变成: Min
20X11+20X12+20X13+10X21+10X22+10X23
+0.30S11+0.30S12+0.30S13+0.15S21+0.15S22+0.15S23+0.50I1+0.50I2+0.50I3+0.20D1+0.20D2+0.20D3
我们现在来考虑约束条件。首先我们必须保证此生产计划满足顾客的需要。由于已经装好货的产品肯能够来自于当月的生产,也可能来自前几个月里的库存,所以此需求变成:
前期月份的最后库存+现在生产量-本月最后库存=本月需求
假定此3个月预定生产时期刚开始时的存货量是332A组件500个单位,802B组件200个单位。这两种产品在第一个月(四月份)的需求是1000个单位,那么满足第一个月需求的约束条件是:
500+X11-S11=1000 200+X21-S21=1000
把常量移到等式右边,我们得到:
X11-S11=500 X21-S21=800
同样的,在第二个月和第三个月的时候我们也需要这两种产品需求的约束条件。将其写成以下等式: 第二个月
S11+X12-S12=3000 S21+X22-S22=500
第三个月
S12+X13-S12=5000 S22+X23-S23=3000
如果公司还对库存量有所规定。即三个月为一个周期的期末库存量最小为400个332A组件和200个802B组件,我们可以再加上两个约束条件: S13≥400 S23≥200
假设我们在机器、劳动力和贮存能力上的信息如表4-8所示。在机器、劳动力和贮存空间的要求上的信息如表4-9所示。
表4-8 Bollinger Electronics公司的机器生产能力、劳动力能力和库存能力 月份 四月份五月份 六月份机器生产能力(小时)400500600劳动力生产能力(小时)300300300
库存能力(平房英寸)100001000010000表4-9 组件332A和802B的机器、劳动力和贮存要求
组件机器(小时/单位)0.10 332A802B0.08
劳动力(小时/单位)0.050.07库存(平方英寸/单位)23为了反映这些限制,以下的约束条件很有必要: ? 机器生产能力
0.10X11+0.08X21≤400 第一个月 0.10X12+0.08X22≤500 第二个月 0.10X13+0.08X23≤600 第三个月 ? 劳动力能力
0.05X11+0.07X21≤300 第一个月 0.05X12+0.07X22≤300 第二个月 0.05X13+0.07X23≤300 第三个月 ? 库存能力
2S11+3S21≤10000 第一个月
2S12+3S22≤10000 第二个月 2S13+3S23≤10000 第三个月
我们必须加上一组约束条件以保证Im和Dm能反映出m月生产水平的变化。假定三月是新生产周期开始前的一个月,三月份的产量为1500个332A组件和1000个802B组件,总产量是1500+1000=2500。那么通过以下关系式我们可以得到四月份的产量变化。 四月份产量-三月份产量=变化量
利用四月份产量变量X11和X21,以及三月份2500个单位的生产量,我们得到:
(X11+X21)-2500=变化量
注意,这个变化值可能是正数也可能是负数。变化值为正数,反映总体生产水平是增长的;反之,变化值为负数,则反映总体生产水平是下降的。我们可以用四月份生产增长量I1和生产降低量D1来确定四月份总产量变化的约束条件。
(X11+X21)-2500=I1-D1
在五月份和六月份我们用同样的方法(始终用当月总生产量减去上个月的总生产量),可以得到预定生产期的第二个月和第三个月间的限定条件。 (X12+X22)-(X11+X21)=I2-D2 (X13+X23)-(X12+X22)=I3-D3
把变量放在等式左边,而把常量放在等式的右边,得出通常所指的一组完整的平衡生产约束条件。
X11+X21 -I1+D1=2500 -X11-X21+X12+X22 -I2+D2=0 -X12-X22+X13+X23-I3+D3=0
这个初看起来只有2种产品和3个月期的生产计划的简单问题现在演变成有18个变量,20个约束条件的线性规划问题了。注意,在这个问题上,我们只考虑一种机器工序,一种人工要求,一种库存区域。实际上,生产计划问题通常是包含若干个工序,若干劳动力级别,若干库存区域的问题,这就要求使用大规模的线性规划模型。比如说,一个包括12个月的生产时间,100单位生产量的生