1、 -738- 第三十章 生产与服务运作管理中的优化问题 本章主要介绍生产和服务运作管理方面的一些优化问题。实际上,生产和服务运作管理的内容也是非常丰富的,几乎包含了企业管理的所有方面,本章中只是介绍几个实例而已。 1 有瓶颈设备的多级生产计划问题 1.1 问题实例 在制造企业的中期或短期生产计划管理中,常常要考虑如下的生产计划优化问题:在给定的外部需求和生产能力等限制条件下,按照一定的生产目标(通常是生产总费用最小)编制未来若干个生产周期的最优生产计划,这种问题在文献上一般称为批量问题( lot sizing problems) 。所谓某一产品的生产批量( lot size) ,就是每通过一次
2、生产准备(订货或换产)生产该产品时的生产数量,它同时决定了库存水平。由于实际生产环境的复杂性,如需求的动态性,生产费用的非线性,生产工艺过程和产品网络结构的复杂性,生产能力的限制,以及车间层生产排序的复杂性等,批量问题是一个非常复杂、非常困难的问题。 我们通过下面的具体实例来说明这种多级生产计划问题的优化模型。这里“多级”的意思是需要考虑产品是通过多个生产阶段(工艺过程)生产出来的。 例 1 某工厂的主要任务是通过组装生产产品 A, 用于满足外部市场需求。 产品 A的构成与组装过程见图 1,即 GFED , 是从外部采购的零件,先将零件 ED, 组装成部件 B ,零件 GF, 组装成部件 C
3、,然后将部件 CB, 组装成产品 A出售。图中弧上的数字表示的是组装时部件(或产品)中包含的零件(或部件)的数量(可以称为消耗系数) ,例如 DB弧上数字“ 9”表示组装 1 个部件 B 需要用到 9 个零件 D; BA弧上的数字“ 5”表示组装 1 件产品 A需要用到 5 个部件 B ;依此类推。 图 1 产品构成与组装过程图 假设该工厂每次生产计划的计划期为 6 周(即每次制定未来 6 周的生产计划) ,只有最终产品 A有外部需求,目前收到的订单的需求件数按周的分布如表 1 第 2 行所示。部件 CB, 是在该工厂最关键的设备(可以称为瓶颈设备)上组装出来的,瓶颈设备的生产能力非常紧张,
4、具体可供能力如表 1 第 3 行所示 (第 2 周设备检修, 不能使用) 。 CB,的能力消耗系数分别为 5 和 8, 即生产 1 件 B 需要占用 5 个单位的能力, 生产 1 件 C 需要占用 8 个单位的能力。 表 1 生产计划的原始数据 周次 1 2 3 4 5 6 A 的外部需求 40 0 100 0 90 10 瓶颈能力 10000 0 5000 5000 1000 1000 零件编号 A B C D E F G 生产准备费用 400 500 1000 300 200 400 100 -739-单件库存费用 12 0.6 1.0 0.04 0.03 0.04 0.04 对于每种零部
5、件或产品,如果工厂在某一周订购或者生产该零部件或产品,工厂需要一个与订购或生产数量无关的固定成本(称为生产准备费用) ;如果某一周结束时该零部件或产品有库存存在,则工厂必须付出一定的库存费用(与库存数量成正比) 。这些数据在表 1 第 5 、 6 行给出。 按照工厂的信誉要求,目前接收的所有订单到期必须全部交货,不能有缺货;此外,不妨简单地假设目前该企业没有任何零部件或产品库存,也不希望第 6 周结束后留下任何零部件或产品库存。最后,假设不考虑生产提前期,即假设当周采购的零件马上就可用于组装,组装出来的部件也可以马上用于当周组装成品 A。 在上述假设和所给数据下,如何制定未来 6 周的生产计划
6、。 1.2 建立模型 ( 1)问题分析 这个实例考虑的是在有限的计划期内,给定产品结构、生产能力和相关费用及零部件或成品(以下统称为生产项目)在离散的时间段上(这里是周,也可以是天、月等)的外部需求之后,确定每一生产项目在每一时间段上的生产量(即批量) ,使总费用最小。由于每一生产项目在每一时间段上生产时必须经过生产准备( setup) ,所以通常的讨论中总费用至少应考虑生产准备费用和库存费用。其实,细心的读者一定会问:是否需要考虑生产的直接成本(如原材料成本、人力成本、电力成本等)?这是因为本例中假设了不能有缺货发生,且计划初期和末期的库存都是 0,因此在这个 6 周的计划期内A的总产量一定
7、正好等于 A的总需求, 所以可以认为相应的直接生产成本是一个常数,因此就不予考虑了。只要理解了我们下面建立优化模型的过程和思想,对于放松这些假定条件以后的情形,也是很容易类似地建立优化模型的。 ( 2)符号说明 为了建立这类问题的一般模型,我们定义如下数学符号: N :生产项目总数(本例中 7=N ) ; T :计划期长度(本例中 6=T ) ; K :瓶颈资源种类数(本例中 1=K ) ; M :一个充分大的正数,在模型中起到使模型线性化的作用; tid,:项目 i在 t时段的外部需求(本例中只有产品 A有外部需求) ; tiX,:项目 i在 t时段的生产批量; tiI,:项目 i在 t时段
8、的库存量; tiY,:项目 i在 t时段是否生产的标志( 0:不生产, 1:生产) ; )(iS :产品结构中项目 i的直接后继项目集合; jir,:产品结构中项目 j 对项目 i的消耗系数; tis,:项目 i在 t时段生产时的生产准备费用; tih,:项目 i在 t时段的单件库存费用; tkC,:资源 k 在 t时段的能力上限; tika,:项目 i在 t时段生产时,生产单个项目占用资源 k 的能力; 在上述数学符号中,只有tiX,,tiI,,tiY,为决策变量,其余均为已知的计划参数。-740- 其实,真正的生产计划只是要求确定tiX,就可以了,因为知道tiX,以后,tiI,,tiY,也
9、就自然确定了。另外,在我们的具体例子中参数tis,,tih,,tika,其实只与项目 i有关,而不随时段 t变化,我们这里加上下标 t只是为了使模型能够更一般化。 ( 3)目标函数 这个问题的目标是使生产准备费用和库存费用的总和最小。因此,目标函数应该是每个项目在每个阶段上的生产准备费用和库存费用的总和,即 =+NiTttitititiIhYs11,)( ( 1) ( 4)约束条件 这个问题中的约束有如下几类:每个项目的物流应该守恒、资源能力限制应该满足、每时段生产某项目前必须经过生产准备和非负约束(对tiY,是 10 约束) 。 所谓物流守恒,是指对每个时段、每个项目(图中一个节点)而言,该
10、项目在上一个时段的库存量加上当前时段的生产量, 减去该项目当前时段用于满足外部需求的量和用于组装其它项目(直接后继项目)的量,应当等于当前时段的库存量。具体可以写成如下表达式(假设 00,=iI ) : tjiSjjititititiXrdIXI,)(,1, +=+ Ni ,2,1 L= , Tt ,2,1 L= ( 2) 资源能力限制比较容易理解,即 tktiNitikCXa,1,=, Kk ,2,1 L= , Tt ,2,1 L= ( 3) 每时段生产某项目前必须经过生产准备, 也就是说当 0,=tiX 时 0,=tiY ; 0,tiX时 1,=tiY 。这本来是一个非线性约束,但是通过引
11、入参数 M (很大的正数,表示每个项目每个时段的最大产量)可以化成线性约束,即 titiMYX,0 , 1,0,tiY , Ni ,2,1 L= , Tt ,2,1 L= ( 4) 另外有 0,tiI , Ni ,2,1 L= , Tt ,2,1 L= , ( 5) 总结上面的讨论,这个问题的优化模型就是在约束( 2) ( 5)下使目标函数( 1)达到最小。 这可以认为是一个混合整数规划模型 (因为产量一般较大, 可以把tiX,和tiI,看成连续变量(实数)求解,而只有tiY,为 10 变量) 。 1.3 求解模型 本例中生产项目总数 7=N (分别用 1 7 表示项目 GFEDCBA , )
12、 ,计划期长度 6=T (周) ,瓶颈资源种类数 1=K 。只有 A有外部需求,所以tid,中只有td,1可以取非零需求,即表 1 中的第 2 行的数据,其它tid,全部为零。参数tis,,tih,只与项目i有关,而不随时段 t变化,所以可以略去下标 t,其数值就是表 1 中的最后两行数据。由于只有一种资源,参数tkC,可以略去下标 k ,其数值就是表 1 中的第 3 行的数据;而tika,只与项目 i有关,而不随时段 t 变化,所以可以同时略去下标 k 和 t ,即 52=a ,-741-83=a (其它ia 为 0) 。从图 1 中容易得到项目 i的直接后继项目集合 )(iS 和消耗系数j
13、ir,。 对本例, A 的外部总需求为 240 ,所以任何项目的产量不会超过25000157240 = (从图 1 可以知道,这里 157 已经是每件产品 A对任意一个项目的最大的消耗系数了) ,所以取 25000=M 就已经足够了。 MODEL: TITLE 瓶颈设备的多级生产计划 ; SETS: ! PART=项目集合 ,Setup=生产准备费, Hold=单件库存成本, A=对瓶颈资源的消耗系数 ; PART/A B C D E F G/:Setup,Hold,A; ! TIME=计划期集合, Capacity=瓶颈设备的能力 ; TIME/16/:Capacity; ! USES=项目
14、结构关系, Req=项目之间的消耗系数 ; USES(PART,PART):Req; ! PXT=项目与时间的派生集合, Demand=外部需求 , X=产量(批量) , Y=0/1变量, INV=库存 ; PXT(PART,TIME):Demand,X,Y,Inv; ENDSETS ! 目标函数 ; OBJMin=sum(PXT(i,t):setup(i)*Y(i,t)+hold(i)*Inv(i,t); ! 物流平衡方程 ; FOR(PXT(i,t)|t #eq# 1:Ba0X(i,t)-Inv(i,t)= Demand(i,t)+SUM(USES(i,j):Req(i,j)*X(j,t)
15、; FOR(PXT(i,t)|t #NE# 1:BalInv(i,t-1)+X(i,t)-Inv(i,t)= Demand(i,t)+SUM(USES(i,j):Req(i,j)*X(j,t); ! 能力约束 ; FOR(TIME(t):CapSUM(PART(i):A(i)*X(i,t)=b(i); for(col:gin(x); end 求得按照模式 2 切割 12 根原料钢管,按照模式 5 切割 15 根原料钢管,共 27 根,总余料量为 27m。但 4m 长的钢管比要求多切割了 1 根, 6m 长的钢管比要求多切割了7 根。显然,在总余料量最小的目标下,最优解将是使用余料尽可能小的切割
16、方式(模式 2 和模式 5 的余料为 1m) ,这会导致切割原料钢管的总根数较多。 ii)将式( 7)( 10)构成的整数线性规划模型输入 LINGO: model: TITLE 钢管下料最小钢管数 ; sets: col/17/:c0,c,x; row/13/:b; link(row,col):a; endsets data: c0=3 1 3 3 1 1 3; c=1 1 1 1 1 1 1; b=50 20 15; a=4 3 2 1 1 0 0 0 1 0 2 1 3 0 0 0 1 0 1 0 2; enddata min=sum(col:c*x); for(row(i):con1s
17、um(col(j):a(i,j)*x(j)=b(i); for(col:gin(x); -746- remaindery=sum(col:c0*x); end 求得按照模式 2 切割 15 根原料钢管,按模式 5 切割 5 根,按模式 7 切割 5 根,共25 根,可算出总余料量为 35m。但各长度的钢管数恰好全部满足要求,没有多切割。与上面得到的结果比较,总余料量增加了 8m,但是所用的原料钢管的总根数减少了 2根。在余料没有什么用途的情况下,通常选择总根数最少为目标。 2.1.2 问题( 2)的求解 ( 1)问题分析 按照问题( 1)的思路,可以通过枚举法首先确定哪些切割模式是可行的。但由
18、于需要的钢管规格增加到 4 种,所以枚举法的工作量较大。下面介绍的整数非线性规划模型,可以同时确定切割模式和切割计划,是带有普遍性的方法。 同问题( 1)类似,一个合理的切割模式的余料不应该大于或等于客户需要的钢管的最小尺寸(本题中为 4m) ,切割计划中只使用合理的切割模式,而由于本题中参数都是整数,所以合理的切割模式的余量不能大于 3m。此外,这里我们仅选择总根数最少为目标进行求解。 ( 2)模型建立 决策变量:由于不同切割模式不能超过 3 种,可以用jx 表示按照第 j 种模式( 3,2,1=j )切割的原料钢管的根数,显然它们应当是非负整数。设所使用的第 j 种切割模式下每根原料钢管生
19、产 4m 长, 5m 长, 6m 长和 8m 长的钢管数量分别为jjjjrrrr4321, (非负整数) 。 记客户需求的 4 种钢管的长度为il , 数量为ib( 4,3,2,1=i ) 。 决策目标:以切割原料钢管的总根数最少为目标,即目标为 =31minjjx ( 11) 约束条件:为满足客户的需求,应有 ijjijbxr =31, 4,3,2,1=i ( 12) 每一种切割模式必须可行、合理,所以每根原料钢管的成品量不能超过 19m,也不能少于 16m(余量不能大于 3m) ,于是 191641=iijirl , 3,2,1=j ( 13) ( 3)模型求解 式( 11)( 13)构成
20、这个问题的优化模型。由于在式( 11)( 13)中出现了决策变量的乘积, 所以这是一个整数非线性规划模型, 虽然用 LINGO 软件可以直接求解,但我们发现有时 LINGO 软件运行很长时间也难以得到最优解。为了减少运行时间,可以增加一些显然的约束条件,从而缩小可行解的搜索范围。 例如,由于 3 种切割模式的排列顺序是无关紧要的,所以不妨增加以下约束: 321xxx ( 14) 又如,我们注意到所需原料钢管的总根数有着明显的上界和下界。首先,无论如何,原料钢管的总根数不可能少于 2619/)158206105504( =+ (根) 。其次,考虑一种非常特殊的生产计划:第一种切割模式下只生产 4
21、m 钢管, 1 根原料钢管切割成 4 根 4m 钢管,为满足 50 根 4m 钢管的需求,需要 13 根原料钢管;第二种切割模式下只生产 5m、 6m 钢管,一根原料钢管切割成 1 根 5m 钢管和 2 根 6m 钢管,为满足 10-747-根 5m 钢管和 20 根 6m 钢管的需求, 需要 10 根原料钢管; 第三种切割模式下只生产 8m钢管, 1 根原料钢管切割成 2 根 8m 钢管,为满足 15 根 8m 钢管的需求,需要 8 根原料钢管。于是满足要求的这种生产计划共需 3181013 =+ 根原料钢管,这就得到了最优解的一个上界。所以可增加以下约束: 312631=iix ( 15)
22、 将式( 11)( 15)构成的模型输入 LINGO 如下: model: Title 钢管下料-最小化钢管根数的 LINGO模型; SETS: NEEDS/14/:LENGTH,b; CUTS/13/:X; PATTERNS(NEEDS,CUTS):R; ENDSETS DATA: LENGTH=4 5 6 8; b=50 10 20 15; CAPACITY=19; ENDDATA min=SUM(CUTS: X); FOR(NEEDS(I):SUM(CUTS(J):X(J)*R(I,J)b(I) ); FOR(CUTS(J):SUM(NEEDS(I):LENGTH(I)*R(I,J)CA
23、PACITY-MIN(NEEDS:LENGTH)+1); SUM(CUTS:X)26; SUM(CUTS:X) X(I+1) ); !人为增加约束 ; FOR(CUTS: GIN(X) ; FOR(PATTERNS:GIN(R); end 得到按照模式 1, 2, 3 分别切割 10, 10, 8 根原料钢管,使用原料钢管总根数为28 根。第一种切割模式下 1 根原料钢管切割成 3 根 4m 钢管和 1 根 6m 钢管;第二种切割模式下 1 根原料钢管切割成 2 根 4m 钢管、 1 根 5m 钢管和 1 根 6m 钢管;第三种模式下 1 根原料钢管切割成 2 根 8m 钢管。 2.2 易拉罐
24、下料问题 例 3 某公司采用一套冲压设备生产一种罐装饮料的易拉罐, 这种易拉罐是用镀锡板冲压制成的(参见图 2) 。易拉罐为圆柱形,包括罐身、上盖和下底,罐身高 10cm,上盖和下底的直径均为 5cm。该公司使用两种不同规格的镀锡板原料,规格 1 的镀锡板为正方形,边长 24cm;规格 2 的镀锡板为长方形,长、宽分别为 32cm 和 28cm。由于生产设备和生产工艺的限制,对于规格 1 的镀锡板原料,只可以按照图 2 中的模式 1、2 或 3 进行冲压;对于规格 2 的镀锡板原料只能按照模式 4 进行冲压。使用模式 1、 2、3、 4 进行每次冲压所需要的时间分别为 1.5s、 2s、 1s
25、、 3s。 -748- 图 2 易拉罐下料模式 该工厂每周工作 40h,每周可供使用的规格 1、 2 的镀锡板原料分别为 5 万张和 2万张。目前每只易拉罐的利润为 0.10 元,原料余料损失为 0.001 元 /cm2(如果周末有罐身、上盖或下底不能配套组装成易拉罐出售,也看作是原料余料损失) 。工厂应如何安排每周的生产? ( 1)问题分析 与钢管下料问题不同的是,这里的切割模式已经确定,只需计算各种模式下的余料损失。已知上盖和下底的直径 5=d cm,可得其面积为 6.194/21= dS cm2。周长为 7.15= dL cm;已知罐身高 10=h cm,可得其面积为 1.1572= h
26、LS cm2。于是模式 1 下的余料损失为 242.2924212 SS 。 同理计算其它模式下的余料损失,并可将 4 种冲压模式的特征归纳如表 4。 表 4 4 种冲压模式的特征 罐身个数 底、盖个数 余料损失( cm2) 冲压时间( s) 模式 1 1 9 242.2 1.5 模式 2 2 3 202.9 2 模式 3 0 12 340.4 1 模式 4 4 4 189.1 3 问题的目标显然应是易拉罐的利润扣除原料余料损失后的净利润最大,约束条件除每周工作时间和原料数量外,还要考虑罐身和底、盖的配套组装。 ( 2)模型建立 决策变量:用ix 表示按照第 i种模式的冲压次数( 4,3,2,
27、1=i ) ,1y 表示一周生产的易拉罐个数。为计算不能配套组装的罐身和底、盖造成的原料损失,用2y 表示不配套的罐身个数,3y 表示不配套的底、盖个数。虽然实际上ix 和321, yyy 应该是整数,但是由于生产量相当大,可以把它们看成是实数,从而用线性规划模型处理。我们的计量单位是万。 决策目标:假设每周生产的易拉罐能够全部售出,公司每周的销售利润是11.0 y 。原料余料损失包括两部分: 4 种冲压模式下的余料损失,和不配套的罐身和底、盖造成的原料损失。按照前面的计算及表 4 的结果,总损失为 )6.191.1571.1894.3409.2022.242(001.0324321yyxxx
28、x + 于是,决策目标为 )6.191.1571.189 4.3409.2022.242(001.01.0max3243211yyxxxxy+( 16) -749-约束条件: i)时间约束。每周工作时间不超过 40h=144000s=14.4(万秒) ,由表 4 最后一列得 4.14325.14321+ xxxx ( 17) ii)原料约束。每周可供使用的规格 1、 2 的镀锡板原料分别为 5 万张和 2 万张,即 5321+ xxx ( 18) 24x ( 19) iii)配套约束。由表 4 知,一周生产的罐身个数为42142 xxx + ,一周生产的底、盖个数为432141239 xxxx
29、 + , 因为应尽可能将它们配套组装成易拉罐销售。 所以1y满足 2/)41239(,42min43214211xxxxxxxy += ( 20) 这时不配套的罐身个数2y 和不配套的底、盖个数3y 应为 1421242 yxxxy += ( 21) 143213241239 yxxxxy += ( 22) 式( 16)( 22)就是我们得到的模型,其中式( 20)是一个非线性关系,不易直接处理,但是它可以等价为以下两个线性不等式: 421142 xxxy + ( 23) 2/)41239(43211xxxxy + ( 24) ( 3)模型求解 在 LINGO 程序中,我们没有必要把式( 20
30、)线性化, LINGO 能够自动线性化的。编写 LINGO 程序如下: max=0.1*y1-0.2422*x1-0.2029*x2-0.3404*x3-0.1891*x4-0.1571*y2 -0.0196*y3; 1.5*x1+2*x2+x3+3*x4=max(PXS(i,j)|j#EQ#size(stage):x(i,j)+t(i,j); !只有参加完前一个阶段的面试后才能进入下一个阶段 ; for(PXS(i,j)|j#LT#size(stage):ORDERx(i,j)+t(i,j)tan(cita-sigma); for(VOR:(x-x0)/(y-y0)(x-x4)2+(y-y4
31、)2).5 ; END 注意:用 LINGO9 求解非线性问题,必须对决策变量进行初始化,否则 LINGO 可能找不到可行解。决策变量的初值也有范围限制,取的不合适也可能找不到可行解。 求得的 x 的最小值为 974. 8433。类似地(只需要换目标函数就可以了),可得到 x 的最大值为 982.2005, y 的最小值为 717.1614, y 的最大值为 733.1582。 因此,最后得到的解是一个比较大的矩形区域,大致为 717,733975,982 。 ( 4)模型 3 及求解 模型 2 得到的只是一个很大的矩形区域,仍不能令人满意。实际上,模型 2 假设设备的测量误差是均匀分布的,这
32、是很不合理的。一般来说,在多次测量中,应该假设设备的测量误差是正态分布的,而且均值为 0。本例中给出的精度i 可以认为是测量误差的标准差。 在这种理解下,用各自的误差限i 对测量误差进行无量纲化(也可以看成是一种加权法)处理是合理的,即求解如下的无约束优化问题更合理。 231 4242442)()(),(min=+ =i iiiyyxxdyxE( 46) 其中 iiiyyxx=tan , 3,2,1=i ( 47) 由于目标函数是平方和的形式,因此这是一个非线性最小二乘拟合问题。相应的LINGO 程序为: MODEL: TITLE 飞机定位模型 3; SETS: VOR/13/:x0,y0,c
33、ita,sigma,alpha; ENDSETS INIT: x=1000; y=900; ENDINIT DATA: x0, y0, cita, sigma = 746 1393 161.2 0.8 629 375 45.1 0.6 1571 259 309.0 1.3; x4 y4 d4 sigma4=155,987,864.3,2.0; ENDDATA calc: -758- for(VOR:cita=cita*3.14159/180;sigma=sigma*3.14159/180); endcalc min=sum(VOR:(alpha-cita)/sigma)2)+ (d4-(x-x
34、4)2+(y-y4)2).5 )/sigma4 )2; for(VOR: tan(alpha)=(x-x0)/(y-y0) ); END 启动 LINGO 的全局最优求解程序求解,得到全局最优解 978.3071=x ,723.9841=y ,对应的目标函数的值为 0.668035。 这里得到的误差比模型 1 的大,这是因为模型 1 中使用的是绝对误差,而这里使用的是相对于精度i 的误差。对角度而言,分母i 很少,所以相对误差比绝对误差大,这是可以理解的。 4.2 飞行计划问题 例 7 这个问题是以第二次世界大战中的一个实际问题为背景, 经过简化而提出来的。在甲、乙双方的一场战争中,一部分甲方
35、部队被乙方部队包围长达 4 个月。由于乙方封锁了所有水陆交通要道,被包围的甲方部队只能依靠空中交通维持供给。运送 4个月的供给分别需要 2, 3, 3, 4 次飞行,每次飞行编队由 50 架飞机组成(每架飞机需要 3 名飞行员) ,可以运送 10 万吨物资。每架飞机每个月只能飞行一次,每名飞行员每个月也只能飞行一次。在执行完运输任务后的返回途中有 20的飞机会被乙方部队击落,相应的飞行员也因此牺牲或失踪。在第 1 个月开始时,甲方拥有 110 架飞机和 330名熟练的飞行员。在每个月开始时,甲方可以招聘新飞行员和购买新飞机。新飞机必须经过一个月的检查后才可以投入使用, 新飞行员必须在熟练飞行员
36、的指导下经过一个月的训练才能投入飞行。 每名熟练飞行员可以作为教练每个月指导 19 名飞行员进行训练。每名飞行员在完成一个月的飞行任务后,必须有一个月的带薪假期,假期结束后才能再投入飞行。已知各项费用(单位略去)如表 10 所示,请为甲方安排一个飞行计划。 如果每名熟练飞行员可以作为教练每个月指导不超过 20 名飞行员进行训练,模型和结果有哪些改变? 表 10 飞行计划的原始数据 第 1 个月 第 2 个月 第 3 个月 第 4 个月 新飞机价格 200.0 195.0 190.0 185.0 闲置的熟练飞行员报酬 7.0 6.9 6.8 6.7 教练和新飞行员报酬(包括培训费用) 10.0
37、9,9 9.8 9.7 执行飞行任务的熟练飞行员报酬 9.0 8.9 9.8 9.7 休假期间的熟练飞行员报酬 5.0 4.9 4.8 4.7 ( 1)问题分析 这个问题看起来很复杂,但只要理解了这个例子中所描述的事实,其实建立优化模型并不困难。首先可以看出,执行飞行任务以及执行飞行任务后休假的熟练飞行员数量是常数,所以这部分费用(报酬)是固定的,在优化目标中可以不考虑。 ( 2)决策变量 设 4 个月开始时甲方新购买的飞机数量分别为ix 架, 闲置的飞机数量分别为iy 架,4 个月中,飞行员中教练和新飞行员数量分别为iu 人,闲置的熟练飞行员数量分别为iv人, 4,3,2,1=i 。 ( 3
38、)目标函数 -759-优化目标是 4321432143217.68.69.67 7.98.99.910185190195200minvvvvuuuuxxxx+( 4)约束条件 需要考虑的约束包括: i)飞机数量限制。 4 个月中执行飞行任务的飞机分别为 100, 150, 150, 200(架) ,但只有 80, 120, 120, 160(架)能够返回供下个月使用。 第 1 个月 1101001=+ y ( 48) 第 2 个月 11280150 xyy +=+ ( 49) 第 3 个月 223120150 xyy +=+ ( 50) 第 4 个月 334120200 xyy +=+ ( 5
39、1) ii)飞行员数量限制。 4 个月中执行飞行任务的熟练飞行员分别为 300, 450, 450,600(人) ,但只有 240, 360, 360, 480(人)能够返回(下个月一定休假) 。 第 1 个月 33005.030011=+ vu ( 52) 第 2 个月 112205.0450 vuvu +=+ ( 53) 第 3 个月 24005.04502233+=+ vuvu ( 54) 第 4 个月 36005.06003343+=+ vuvu ( 55) ( 5)求解 编写 LINGO 程序如下: model: sets: col/14/:c1,c2,c3,x,u,v,y; row
40、/13/:b1,b2; endsets data: c1=200 195 190 185; c2=10 9.9 9.8 9.7; c3=7 6.9 6.8 6.7; b1=70 30 80; b2=450 210 240; enddata min=sum(col:c1*x+c2*u+c3*v); y(1)=10; for(col(i)|i#lt#4:y(i)+x(i)-y(i+1)=b1(i); 0.05*u(1)+v(1)=30; for(col(i)|i#lt#4:u(i)+v(i)-0.05*u(i+1)-v(i+1)=b2(i); for(col:gin(x);gin(u);gin(v
41、);gin(y); end 求得的最优解为 601=x , 302=x , 803=x , 04=x , 4601=u , 2202=u ,2403=u , 04=u , 71=v , 62=v , 43=v , 44=v , 101=y , 0432= yyy ;目标函数值为 42324.4。 ( 6)问题讨论 如果每名熟练飞行员可以作为教练每个月指导不超过 20 名飞行员进行训练,则应-760- 将教练与新飞行员分开。设 4 个月飞行员中教练为4321, uuuu (人) ,新飞行员数量分别为4321, wwww (人) 。其它符号不变。飞行员的数量限制约束为 第 1 个月 3303001
42、1=+ vu ; 第 2 个月 11122450 wvuvu +=+ ,1120uw ; 第 3 个月 22233240450 wvuvu +=+ ,2220uw ; 第 4 个月 33343360600 wvuvu +=+ ;3320uw ; 目标函数作相应修改,输入 LINGO 如下: model: sets: col/14/:c1,c2,c3,x,u,v,w,y; row/13/:b1,b2; endsets data: c1=200 195 190 185; c2=10 9.9 9.8 9.7; c3=7 6.9 6.8 6.7; b1=70 30 80; b2=450 210 240
43、; enddata min=sum(col:c1*x+c2*(u+w)+c3*v); y(1)=10; for(col(i)|i#lt#4:y(i)+x(i)-y(i+1)=b1(i); u(1)+v(1)=30; for(col(i)|i#lt#4:u(i)+v(i)+w(i)-u(i+1)-v(i+1)=b2(i); for(col(i)|i#lt#4:w(i)20*u(i); for(col:gin(x);gin(u);gin(v);gin(w);gin(y); end 求得最优解为 0,12,11,224321= uuuu , 0,84321= vvvv ,0,228,211,4314
44、321= wwww (4141, yyxx 不变) ;目标函数的值为42185.8。 习题三十 1某农户拥有 100 亩土地和 25000 元可供投资,每年冬季( 9 月中旬至来年 5 月中旬) ,该家庭的成员可以贡献 3500h 的劳动时间,而夏季为 4000h。如果这些劳动时间有富裕,该家庭中的年轻成员将去附近的农场打工,冬季每小时 6.8 元,夏季每小时7.0 元。 现金收入来源于三种农作物(大豆、玉米和燕麦)以及两种家禽(奶牛和母鸡) 。农作物不需要付出投资,但每头奶牛需要 400 元的初始投资,每只母鸡需要 3 元的初始投资。每头奶牛需要使用 1.5 亩土地,并且冬季需要付出 100
45、h 劳动时间,夏季付出 50h劳动时间,每年产生的净现金收入为 450 元;每只母鸡的对应数字为:不占用土地,冬季 0.6h,夏季 0.3h,年净现金收入 3.5 元。养鸡厂房最多只能容纳 3000 只母鸡,栅栏的大小限制了最多能饲养 32 头奶牛。 根据估计,三种农作物每种植一亩所需要的劳动时间和收入如表 11 所示。建立数学模型,帮助确定每种农作物应该种植多少亩,以及奶牛和母鸡应该各蓄养多少,使年净现金收入最大。 -761-表 11 种植一亩农作物所需要的劳动时间和收入 农作物 冬季劳动时间( h) 夏季劳动时间( h) 年净现金收入(元 /亩) 大豆 20 30 175.0 玉米 35 75 300.0 燕麦 10 40 120.0 2如图 4,有若干工厂的排污口流入某江,各口有污水处理站,处理站对面是居民点。工厂 1 上游江水流量和污水浓度,国家标准规定的水的污染浓度,以及各个工厂的污水流量和污水浓度均已知道。 设污水处理费用与污水处理前后的浓度差和污水流量成正比, 使每单位流量的污水下降一个浓度单位需要的处理费用 (称处理系数) 为已知。处理后的污水与江水混合,流到下一个排污口之前,自然状态下的江水也会使污水浓度降低一个比例系数(称自净系数) ,该系数可以估计。试确定各污水处理站出口的污水浓度,使在符合国家标准规定的条件下总的处理费用最小