优化建模与LINGO第05章.ppt
《优化建模与LINGO第05章.ppt》由会员分享,可在线阅读,更多相关《优化建模与LINGO第05章.ppt(160页珍藏版)》请在三一办公上搜索。
1、生产与服务运作管理中的优化问题,优化建模与LINDO/LINGO软件,第5章,内容提要,5.1 生产与销售计划问题5.2 有瓶颈设备的多级生产计划问题5.3 下料问题5.4 面试顺序与消防车调度问题5.5 飞机定位和飞行计划问题,5.1 生产与销售计划问题,问题实例,例5.1某公司用两种原油(A和B)混合加工成两种汽油(甲和乙)。甲、乙两种汽油含原油A的最低比例分别为50%和60%,每吨售价分别为4800元和5600元。该公司现有原油A和B的库存量分别为500吨和1000吨,还可以从市场上买到不超过1500吨的原油A。原油A的市场价为:购买量不超过500吨时的单价为10000元/吨;购买量超过
2、500吨但不超过1000吨时,超过500吨的部分8000元/吨;购买量超过1000吨时,超过1000吨的部分6000元/吨。该公司应如何安排原油的采购和加工。,5.1.2建立模型,问题分析 安排原油采购、加工的目标是利润最大,题目中给出的是两种汽油的售价和原油A的采购价,利润为销售汽油的收入与购买原油A的支出之差。这里的难点在于原油A的采购价与购买量的关系比较复杂,是分段函数关系,能否及如何用线性规划、整数规划模型加以处理是关键所在。,模型建立设原油A的购买量为x(吨),根据题目所给数据,采购的支出c(x)可表为如下的分段线性函数(以下价格以千元/吨为单位):,(1),设原油A用于生产甲、乙两
3、种汽油的数量分别为x11和x12(吨),原油B用于生产甲、乙两种汽油的数量分别为x21和x22(吨),则总的收入为4.8(x11+x21)+5.6(x12+x22)(千元)。于是本例的目标函数(利润)为,(2),约束条件包括加工两种汽油用的原油A、原油B库存量的限制,和原油A购买量的限制,以及两种汽油含原油A的比例限制,它们表示为,(3),(4),(5),(6),(7),(8),由于(1)式中的c(x)不是线性函数,(1)(8)给出的是一个非线性规划。而且,对于这样用分段函数定义的c(x),一般的非线性规划软件也难以输入和求解。能不能想办法将该模型化简,从而用现成的软件求解呢?,5.1.3 求
4、解模型,3种解法,第1种解法 将原油A的采购量x分解为三个量,即用x1,x2,x3分别表示以价格10、8、6千元/吨采购的原油A的吨数,总支出为c(x)=10 x1+8x2+6x3,且,(9),这时目标函数(2)变为线性函数:,(10),应该注意到,只有当以10千元/吨的价格购买x1=500(吨)时,才能以8千元/吨的价格购买x2(0),这个条件可以表示为,(11),同理,只有当以8千元/吨的价格购买x2=500(吨)时,才能以6千元/吨的价格购买x3(0),于是,(12),此外,x1,x2,x3的取值范围是,(13),由于有非线性约束(11),(12),(3)(13)构成非线性规划模型。LI
5、NGO程序:,Model:Max=4.8*x11+4.8*x21+5.6*x12+5.6*x22-10*x1-8*x2-6*x3;x11+x12 0;0.4*x12-0.6*x22 0;x=x1+x2+x3;(x1-500)*x2=0;(x2-500)*x3=0;bnd(0,x1,500);bnd(0,x2,500);bnd(0,x3,500);end,将文件存储并命名为exam0501a.lg4,执行菜单命令“LINGO|Solve”,运行该程序得到:,Local optimal solution found.Objective value:4800.000 Total solver ite
6、rations:26,Variable Value Reduced Cost X11 500.0000 0.000000 X21 500.0000 0.000000 X12 0.000000 0.000000 X22 0.000000 0.000000 X1 0.000000 0.000000 X2 0.000000 0.000000 X3 0.000000 0.000000 X 0.000000 0.000000,最优解:用库存的500吨原油A、500吨原油B生产1000吨汽油甲,不购买新的原油A,利润为4800(千元),但是此时LINGO得到的结果只是一个局部最优解,可以用菜单命令“LIN
7、GO|Options”在“Global Solver”选项卡上启动全局优化(Use Global Solver)选项,然后重新执行菜单命令“LINGO|Solve”,得到:,Global optimal solution found.Objective value:5000.002 Extended solver steps:3 Total solver iterations:187,Variable Value Reduced CostX11 0.000000 0.000000X21 0.000000 0.000000X12 1500.000 0.000000X22 1000.000 0.0
8、00000X1 500.0000 0.000000X2 499.9990 0.000000X3 0.9536707E-03 0.000000X 1000.000 0.000000,此时LINGO得到的结果是一个全局最优解(Global optimal solution):购买1000吨原油A,与库存的500吨原油A和1000吨原油B一起,共生产2500吨汽油乙,利润为5000(千元),高于刚刚得到的局部最优解对应的利润4800(千元)。,第2种解法:引入0-1变量将(11)和(12)转化为线性约束,令y1=1,y2=1,y3=1分别表示以10千元/吨、8千元/吨、6千元/吨的价格采购原油A,则
9、约束(11)和(12)可以替换为,(14),(15),(16),y1,y2,y3=0或1,(17),(3)(10),(13)(17)构成混合整数线性规划模型,将它输入LINDO软件:,Max 4.8x11+4.8x21+5.6x12+5.6x22-10 x1-8x2-6x3stx-x1-x2-x3=0 x11+x12-x0 0.4x12-0.6x220 x1-500y10 x2-500y30 endint y1int y2int y3,运行该程序得到:OBJECTIVE FUNCTION VALUE 1)5000.000 VARIABLE VALUE REDUCED COST Y1 1.000
10、000 0.000000 Y2 1.000000 2200.000000 Y3 1.000000 1200.000000 X11 0.000000 0.800000 X21 0.000000 0.800000 X12 1500.000000 0.000000 X22 1000.000000 0.000000 X1 500.000000 0.000000 X2 500.000000 0.000000 X3 0.000000 0.400000 X 1000.000000 0.000000,这个结果与前面非线性规划模型用全局优化得到的结果相同。,第3种解法 直接处理分段线性函数c(x)。(1)式表示
11、的函数c(x)如图5-1。,记x轴上的分点为b1=0,b2=500,b3=1000,b4=1500。当x在第1个小区间 b1,b2时,记x=z1b1+z2b2,z1+z2=1,z1,z20,因为c(x)在b1,b2是线性的,所以c(x)=z1c(b1)+z2c(b2)。同样,当x在第2个小区间 b2,b3时,x=z2b2+z3b3,z2+z3=1,z2,z30,c(x)=z2c(b2)+z3c(b3)。当x在第3个小区间 b3,b4时,x=z3b3+z4b4,z3+z4=1,z3,z40,c(x)=z3c(b3)+z4c(b4)。为了表示x在哪个小区间,引入0-1变量yk(k=1,2,3),当
12、x在第k个小区间时,yk=1,否则,yk=0。这样,z1,z2,z3,z4,y1,y2,y3应满足,(18),(19),(20),此时x和c(x)可以统一地表示为,(2)(10),(18)(22)也构成一个混合整数线性规划模型,可以用LINDO求解。不过,我们还是将它输入LINGO软件,因为其扩展性更好(即当分段函数的分段数更多时,只需要对下面程序作很小的改动)。输入的LINGO模型如下:,(22),输入的LINGO模型如下:,Model:SETS:Points/1.4/:b,c,y,z;!端点数为4,即分段数为3;ENDSETSDATA:b=0 500 1000 1500;c=0 5000
13、9000 12000;y=,0;!增加的虚拟变量y(4)=0;ENDDATA,Max=4.8*x11+4.8*x21+5.6*x12+5.6*x22-sum(Points:c*z);x11+x12 0;0.4*x12-0.6*x22 0;sum(Points:b*z)=x;for(Points(i)|i#eq#1:z(i)=y(i);for(Points(i)|i#ne#1:z(i)=y(i-1)+y(i);sum(Points:y)=1;sum(Points:z)=1;for(Points:bin(y);end,求解,得到的结果如下(略去已知参数b和c的显示结果):Global optima
14、l solution found.Objective value:5000.000 Extended solver steps:0 Total solver iterations:28,Variable Value Reduced Cost X11 0.000000 0.000000 X21 0.000000 1.600000 X12 1500.000 0.000000 X22 1000.000 0.000000 X 1000.000 0.000000 Y(1)0.000000-4600.000 Y(2)0.000000-1200.000 Y(3)1.000000 0.000000 Y(4)0
15、.000000 0.000000 Z(1)0.000000 0.000000 Z(2)0.000000 0.000000 Z(3)1.000000 0.000000 Z(4)0.000000 200.0000,可见,得到的最优解和最优值与第2种解法相同。,备注 这个问题的关键是处理分段线性函数,我们推荐化为整数线性规划模型的第2,3种解法,第3种解法更具一般性,其做法如下。,设一个n段线性函数f(x)的分点为,引入zk 将x和f(x)表示为,(23),(24),zk 和0-1变量yk满足,(25),(26),(27),5.2 有瓶颈设备的多级生产计划问题,5.2.1 问题实例,在给定的外部需求
16、和生产能力等限制条件下,按照生产总费用最小编制未来若干个生产周期的最优生产计划,这种问题在文献上一般称为批量问题(Lotsizing Problems)。我们通过下面的具体例子来说明这种多级生产计划问题的优化模型。这里“多级”的意思是需要考虑产品是通过多个生产阶段(工艺过程)生产出来的。,例5.2 某工厂的主要任务是通过组装生产产品A,用于满足外部市场需求。,A产品的产品构成与组装过程见图5-2:即D、E、F、G是从外部采购的零件,先将零件D、E组装成部件B,零件F、G组装成部件C,然后将部件B、C组装成产品A出售。,图中弧上的数字表示的是组装时部件(或产品)中包含的零件(或部件)的数量(可以
17、称为消耗系数),例如DB弧上的数字“9”表示组装1个部件B需要用到9个零件D;BA弧上的数字“5”表示组装1件产品A需要用到5个部件B;,依此类推。,图5-2 产品构成与组装过程图,表5-1 生产计划的原始数据,假设该工厂每次生产计划的计划期为6周(即每次制定未来6周的生产计划),只有最终产品A有外部需求,目前收到的订单的需求件数按周的分布如表5-1第2行所示。部件B、C是在该工厂最关键的设备(可以称为瓶颈设备)上组装出来的,瓶颈设备的生产能力非常紧张,具体可供能力如表5-1第3行所示(第2周设备检修,不能使用)。B、C的能力消耗系数分别为5和8,即生产1件B需要占用5个单位的能力,即生产1件
18、C需要占用8个单位的能力。,对于每种零部件或产品,如果工厂在某一周订购或者生产该零部件或产品,工厂需要付出一个与订购或生产数量无关的固定成本(称为生产准备费用);如果某一周结束时该零部件或产品有库存存在,则工厂必须付出一定的库存费用(与库存数量成正比)。这些数据在表5-1第5、6行给出。,按照工厂的信誉要求,目前接收的所有订单到期必须全部交货,不能有缺货发生;此外,不妨简单地假设目前该企业没有任何零部件或产品库存,也不希望第6周结束后留下没有任何零部件或产品库存。最后,假设不考虑生产提前期,即假设当周采购的零件马上就可用于组装,组装出来的部件也可以马上用于当周组装成品A。在上述假设和所给数据下
19、,如何制定未来6周的生产计划?,5.2.2 建立模型 问题分析 这个例子考虑的是在有限的计划期内,给定产品结构、生产能力和相关费用及零部件或成品(以下统称为生产项目)在离散的时间段上(这里是周,也可以是天、月等)的外部需求之后,确定每一生产项目在每一时间段上的生产量(即批量),使总费用最小.由于每一生产项目在每一时间段上生产时必须经过生产准备(Setup),所以通常的讨论中总费用至少应考虑生产准备费用和库存费用.其实,细心的读者一定会问:是否需要考虑生产的直接成本(如原材料成本、人力成本、电力成本等)?,符号说明为了建立这类问题的一般模型,我们定义如下数学符号:N-生产项目总数(本例中N=7)
20、;T-计划期长度(本例中T=6);K-瓶颈资源种类数(本例中K=1);M-一个充分大的正数,在模型中起到使模型线性化的作用;,-项目i在t时段的外部需求(本例中只有产品A有外部需求);,-项目i在t时段的生产批量;,-项目i在t时段的库存量;,-项目i在t时段是否生产的标志(0:不生产,1:生产);,-产品结构中项目j对项目i的消耗系数;,S(i)-产品结构中项目i的直接后继项目集合;,-项目i在t时段生产时的生产准备费用;,-项目i在t时段的单件库存费用;,-资源k在t时段的能力上限;,-项目i在t时段生产时,生产单个产品占用资源k 的能力;,(x)-这个函数当且仅当x0时取值1,否则取值0
21、.,其余均为已知的计划参数。,目标函数,这个问题的目标是使生产准备费用和库存费用的总和最小。因此,目标函数应该是每个项目在每个时段上的生产准备费用和库存费用的总和,即,(28),约束条件,这个问题中的约束有这么几类:每个项目的物流应该守恒、资源能力限制应该满足、每时段生产某项目前必须经过生产准备和非负约束(对Yi,j是0-1约束)。,(29),资源能力限制比较容易理解,即,(30),所谓物流守恒(假设Ii,0=0),(31),每时段生产某项目前必须经过生产准备,也就是说当Xit=0时Yit=0;Xit0时Yit=1。这本来是一个非线性约束,但是通过引入参数M(很大的正数,表示每个项目每个时段的
22、最大产量)可以化成线性约束,即:,总结:这个问题的优化模型就是在约束(29)(30)(31)下使目标函数(28)达到最小。,5.2.3 求解模型,本例生产项目总数N=7(A、B、C、D、E、F、G),计划期长度T=6(周),瓶颈资源种类数K=1。只有A有外部需求,所以di,t中只有d1,t可以取非零需求,即表5-1中的第2行的数据,其他全部为零。参数si,t、hi,t只与项目i有关,而不随时段t变化,所以可以略去下标t,其数值就是表5-1中的最后两行数据。,由于只有一种资源,参数Ck,t可以略去下标k,其数值就是表5-1中的第3行的数据;而ak,I,t只与项目i有关,而不随时段t变化,所以可以
23、同时略去下标k和t,即a2=5,a3=8(其他ai为0)。从图6-2中容易得到项目i的直接后继项目集合S(i)和消耗系数。,准备以下的数据文件(文本文件exam0502.LDT,可以看到其中也可以含有注释语句):,!项目集合;ABCDEFG!计划期集合;123456!需求;400100090100 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 0,!能力;1000005000500010001000!生产准备费;4005001000300200400100!库存费;120.61.00.040.030.040.04!
24、对能力的消耗系数;0580000,!项目间的消耗系数:req(i,j)表示j用到多少i;0 0 0 0 0 0 05 0 0 0 0 0 07 0 0 0 0 0 00 9 0 0 0 0 00 11 0 0 0 0 00 0 13 0 0 0 00 0 15 0 0 0 0!数据结束;,对本例,A的外部总需求为240,所以任何项目的产量不会超过24071525000(从图6-2可以知道,这里715已经是每件产品A对任意一个项目的最大的消耗系数了),所以取M=25000就已经足够了。本例中的具体模型可以如下输入LINGO软件:,MODEL:TITLE 瓶颈设备的多级生产计划;!从文本文件exa
25、m0502.LDT中读取数据;,SETS:!PART=项目集合,Setup=生产准备费,Hold=单件库存成本,A=对瓶颈资源的消耗系数;PART/FILE(exam0502.LDT)/:Setup,Hold,A;!TIME=计划期集合,Capacity=瓶颈设备的能力;TIME/FILE(exam0502.LDT)/:Capacity;!USES=项目结构关系,Req=项目之间的消耗系数;USES(PART,PART):Req;!PXT=项目与时间的派生集合,Demand=外部需求,X=产量(批量),Y=0/1变量,INV=库存;PXT(PART,TIME):Demand,X,Y,Inv;E
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 优化 建模 LINGO 05
链接地址:https://www.31ppt.com/p-5224045.html