版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、优化方法建模侯为根安徽工业大学数理学院Email:优化模型和算法的重要意义最优化: 在一定条件下,寻求使目标最大(小)的决策最优化是工程技术、经济管理、科学研究、社会生活中经常遇到的问题, , 如: :运输方案结构设计 资源分配 生产计划 经验积累,主观判断 作试验,比优劣 建立数学模型,求解最优策略解决优化问题的手段CUMCM赛题:约有一半为优化问题须用软件求解(最)优化理论是运筹学的重要内容OR/MS/DS运筹学(OR: Operations/Operational Research)管理科学(MS: Management Science)决策科学(DS: Decision Science
2、)优化(Optimization), 规划(Programming)线性规划无约束优化非线性规划网络优化组合优化整数规划多目标规划目标规划动态规划优化问题的一般形式优化问题三要素:决策变量;目标函数;约束条件njiDxljxgmixhtsxf, 2 , 1, 0)(, 2 , 1, 0)(. .)(min目标函数约束条件决策变量可行解(满足约束条件),可行域(可行解的集合),最优解(使目标达到最大/最小的可行解)无约束优化:只有目标函数; 约束优化:有目标函数和约束条件。实际问题一般总有约束。例1 加工奶制品的生产计划获利24元/公斤获利16元/公斤1桶牛奶12小时8小时3公斤A14公斤A2或
3、每天: 50桶牛奶 时间480小时 A1至多加工100公斤制订生产计划,使每天获利最大35元可买到1桶牛奶,买吗?若买,每天最多买多少?可聘用临时工人,付出的工资最多是每小时几元?A1的获利增加到30元/公斤,应否改变生产计划?获利24元/公斤获利16元/公斤1桶牛奶12小时8小时3公斤A14公斤A2或每天: 50桶牛奶 时间480小时 A1至多加工100公斤决策变量x1桶牛奶生产A1x2桶牛奶生产A2目标函数获利243x1获利164x2每天获利 Max z =72x1 +64 x2约束条件原料供应劳动时间加工能力非负约束x1+x250线性规划模型(LP)12x1+8x24803x1100 x
4、1, x20模型求解图解法约束条件x1+x25012x1+8x24803x1100 x1, x20l1:x1+x2=50l2:12x1+8x2=480l3: 3x1=100l4: x1=0, l5: x2=0目标函数Max z =72x1 +64 x2z=c(常数)等值线在B(20,30)点得到最优解最优解一定在凸多边形的某个顶点取得目标函数和约束条件是线性函数可行域为直线段围成的凸多边形目标函数的等值线为直线4l5l1l2l3lc01x2xABCD0Z2400Z3600Z模型求解软件实现 Objective value: 3360.000 Variable Value Reduced Cos
5、t X1 20.00000 0.000000 X2 30.00000 0.000000 Row Slack or Surplus Dual Price 1 3360.000 1.000000 2 0.000000 48.00000 3 0.000000 2.000000 4 40.00000 0.000000max=72*x1+64*x2;x1+x2=50;12*x1+8*x2=480;3*x1=100;endLingo 8.020桶牛奶生产A1,30桶生产A2,利润3360元。未做敏感性分析结果解释Global optimal solution found at iteration:4 Ob
6、jective value: 3360.000 Variable Value Reduced Cost X1 20.00000 0.000000 X2 30.00000 0.000000 Row Slack or Surplus Dual Price 1 3360.000 1.000000 2 0.000000 48.00000 3 0.000000 2.000000 4 40.00000 0.000000max=72*x1+64*x2;x1+x2=50;12*x1+8*x2=480;3*x1=100;end三种资源原料无剩余时间无剩余加工能力剩余40“资源”剩余为零的约束为紧约束(有效约束)
7、结果解释 Objective value: 3360.000Variable Value Reduced Cost X1 20.00000 0.000000 X2 30.00000 0.000000 Row Slack or Surplus Dual Price 1 3360.000 1.000000 2 0.000000 48.00000 3 0.000000 2.000000 4 40.00000 0.000000最优解下 “资源”增加1单位时“效益”的增量。影子价格原料增加1单位,利润增长48。时间增加1单位,利润增长2。加工能力增长不影响利润。聘用临时工人付出的工资最多每小时几元?35
8、元可买到1桶牛奶,要买吗?35 48,应该买!2元!Ranges in which the basis is unchanged: Objective Coefficient Ranges Current Allowable AllowableVariable Coefficient Increase Decrease X1 72.00000 24.00000 8.000000 X2 64.00000 8.000000 16.00000 Righthand Side Ranges Row Current Allowable Allowable RHS Increase Decrease 2 5
9、0.00000 10.00000 6.666667 3 480.0000 53.33333 80.00000 4 100.0000 INFINITY 40.00000结果解释作敏感性分析最优解不变时,目标函数系数允许变化范围(约束条件不变)x1系数范围(64,96)x2系数范围(48,72)x1系数为303=90 在允许范围内A1的获利增加到30元/公斤,应否改变生产计划?生产计划不变!Ranges in which the basis is unchanged: Objective Coefficient Ranges Current Allowable AllowableVariable
10、Coefficient Increase Decrease X1 72.00000 24.00000 8.000000 X2 64.00000 8.000000 16.00000 Righthand Side Ranges Row Current Allowable Allowable RHS Increase Decrease 2 50.00000 10.00000 6.666667 3 480.0000 53.33333 80.00000 4 100.0000 INFINITY 40.00000结果解释 影子价格有意义时约束右端的允许变化范围(目标函数不变)原料最多可增加10时间最多可增加
11、5335元可买到1桶牛奶,每天最多买多少?最多买10桶!Lingo软件包能求解的优化模型优化模型连续优化整数规划线性规划(LP)二次规划QP非线性规划NLPLingo软件的求解过程1、确定常数Lingo预处理程序线性规划求解程序非线性规划求解程序分支定界管理程序LPNLPQPIP全局优化ILPIQPINLP2、识别类型1、单纯形算法2、内点算法1、顺序线性规划法2、广义既约梯度法3、多点搜索建模时要注意的几个基本问题1、尽量使用实数优划,减少整数约束和整数变量2、尽量使用光滑优划,减少非光滑约束个数如:尽量少使用绝对值、符号函数、多个变量求最大值/最小值,四舍五入,取整函数等3、尽量使用线性模
12、型、减少非线性约束和非线性变量的个数 (如:x/y5改为x5y)4、合理设定变量上下界,尽可能给出变量初始值。5、模型中使用的参数数量级要适当(如小于103)。Lingo模型的优点包含Lindo的全部功能提供了灵活的编程语言(矩阵生成器)Lingo模型的构成目标与约束段集合段 (SETS ENDSETE)数据段(DATA ENDDATA)初始段(INTT ENDINTT)计算段(CALC ENDCALC) LINGO9.0例2、运输问题某公司有6个货栈,分别向8个销售点供应商品,每一个货栈的供应量都是有限的,每个销售点需求量必须满足,不同的货栈向不同的销售点运输单位货物的成本是不一样的,问该公
13、司如何调配各货栈和销售点之间的物资运量,才能使运输费用最小? wh1wh2wh3wh4wh5wh6V1V2V3V4V5V6V7V8销售网示意图48条运输路线运费V1V2V3V4V5V6V7V8供应量wh16267425960wh24953858255wh35219743351wh47673927143wh52395726541wh65522814352需求量3537223241324338货栈供应量、销售点需求量以及各点之间的运费如下表设xij、 cij分别表示从i货栈向j销售点运送的货物量和单位货物量的运费,目标是总运费为最小:6181ijijijxczMin约束条件:约束条件:每个货栈运往
14、各销售点的货物总量应小于货栈的可供应量,设货栈i的可供应量为wi,则有)6 , 2 , 1( ,81iwxijij每个销售点的需求量必须满足,设销售点j的需求量为vj,则有)8 , 2 , 1( ,61jvxjiijmodel:sets: warehouses/wh1.wh6/: capacity; vendors/v1.v8/: demand; links(warehouses,vendors): cost, volume;endsetsdata: capacity=60 55 51 43 41 52; demand=35 37 22 32 41 32 43 38; cost=6 2 6 7
15、 4 2 9 5 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3 7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3;enddata!目标函数; min=sum(links: cost*volume);!需求约束; for(vendors(J): sum(warehouses(I): volume(I,J)=demand(J);!产量约束; for(warehouses(I):sum(vendors(J): volume(I,J)=capacity(I);end集合段 (SETS ENDSETE)数据段(DATA ENDDATA)目标
16、与约束段例3:选址问题某公司有6个建筑工地,位置坐标为(ai,bi)(单位:公里)水泥日用量di(单位:顿)i123456a1.258.750.55.7537.25b1.250.754.7556.57.75c3547611假设:料场与工地之间有直线道路1)现有两个料场,位于A(5,1),B(2,7) ,记(xj,yj),j=1,2 日储存量ej各20吨。目标:制定每天的供应计划,即从A,B两料场分别向各工地运送多少吨水泥,使总吨公里数最小。决策变量:cij料场j到工地i的运量12维21612/122)()(minjiijijijbyaxc612121j621. .ijijjiijecidcts
17、,线性规划模型用例中数据计算,最优解为i123456ci1(料场料场A)350701ci2 (料场料场B)0040610总吨公里数为136.2选址问题:NLP2)重建两个新料场,需要确定新料场的位置(xj,yj) 和运量cij,在其他条件不变下使总吨公里数最小。21612/122)()(minjiijijijbyaxc612121j621. .ijijjiijecidcts,决策变量:cij,xj,yj16维非线性规划模型Model:sets: demand/1.6/: a,b,d; supply/1.2/:x,y,e; link(demand,supply):c;endsetsdata:!需
18、求点的位置需求点的位置;a=1.25,8.75,0.5,5.75,3,7.25;b=1.25,0.75,4.75,5,6.5,7.75;d=3,5,4,7,6,11; !需求量需求量 ;e=20,20; !供应量供应量;enddatainit:endinit!目标函数目标函数;OBJmin=sum(link(i,j):c(i,j)*(x(j)-a(i)2+(y(j)-b(i)2)(1/2);!需求约束需求约束;for(demand(i):Demand_Comsum(supply(j):c(i,j)=d(i););!供应约束供应约束;for(supply(j):Supply_comsum(dem
19、and(i):c(i,j)=e(j););for(supply:free(x);free(y););endLingo模型的构成:4个段集合段:SETS ENDSETS数据段:DATA ENDDATA初始段:SETS ENDSETS目标与约束段:例4 钢管下料原料钢管:每根19米客户需求4米50根6米20根8米15根问题1. 如何下料最节省?节省的标准是什么?问题2. 客户增加需求:5米10根由于采用不同切割模式太多,会增加生产和管理成本,规定切割模式不能超过3种。如何下料最节省?钢管下料切割模式按照客户需要在一根原料钢管上安排切割的一种组合合理切割模式的余料应小于客户需要钢管的最小尺寸余料1米
20、4米1根6米1根8米1根余料3米4米1根6米1根6米1根余料3米8米1根8米1根钢管下料问题1合理切割模式模式 4米钢管根数 6米钢管根数 8米钢管根数余料(米)14003231013201341203511116030170023为满足客户需要,按照哪些种合理模式,每种模式切割多少根原料钢管,最为节省?两种标准1. 原料钢管剩余总余量最小2. 所用原料钢管总根数最少决策变量xi按第i种模式切割的原料钢管根数(i=1,2,7)目标1(总余量)Min Z=3x1+x2+3x3+3x4+x5+x6+3x7模式4米根数6米根数8米根数余料(米)1400323101320134120351111603
21、0170023需求502015约束满足需求4x1+3x2+2x3+x4+x550 x2+2x4+x5+3x620 x3+x5+2x715整数约束xi为整数最优解: x2=12,x5=15,其它为0最优值: z=27按模式2切割12根,按模式5切割15根,余料27米L280.lg4钢管下料问题1目标2(总根数) Min Z=x1+x2+x3+x4+x5+x6+x7约束条件不变最优值:254x1+3x2+2x3+x4+x550 x2+2x4+x5+3x620 x3+x5+2x715与目标1的结果“共切割27根,余料27米”相比按模式1切割5根按模式2切割5根按模式5切割15根共25根,余料35米虽
22、余料增加8米,但减少了2根当余料没有用处时,通常以总根数最少为目标最优解:x1=5, x2=5, x5=15, 其余为0L281.lg4钢管下料问题2增加一种需求:5米10根;切割模式不超过3种。现有4种需求:4米50根,5米10根,6米20根,8米15根,用枚举法确定全部合理切割模式为:模式12345678910 11 12 13 14 15 164米00000011112223345米00112200130120106米03120112000101008米2010101010100000余料3102131320301123决策变量xi按第i种模式切割的原料钢管根数(i=1,2, ,16)目
23、标 (总根数)161miniixzx7+x8+x9+x10+2x11+2x12+2x13+3x14+3x15+4x1650 x3+ x4+2x5+2x6+x9+3x10+x12+2x13+x15 103x2+x3+2x4+x6+x7+2x8+x12+x14 202x1+x3+x5+x7+x9+x11 15约束满足需求16, 2 , 1;0001iMxxxwiiiii其中Mi表示若第i种裁剪模式被选中,按第i种裁剪模式裁剪根数的上限3161iiw裁剪模式要求wi0-1变量, wi=1选用第i种模式切割 (i=1,2, ,16)裁剪模式约束可改写为16, 2 , 1iwMxiii3161iiw其中
24、wi为0-1整数,xi为非负整数。程序见L2801为方便分别令:a=(0,0,0,0,0,0,1,1,1,1,2,2,2,3,3,4);b=(0,0,1,1,2,2,0,0,1,3,0,1,2,0,1,0);c=(0,3,1,2,0,1,1,2,0,0,0,1,0,1,0,0);d=(2,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0)。16iixZMin规划问题可表示为:1516iiixd50.16iiixats1016iiixb2016iiixcxi为整数, i=1,2,1616, 2 , 1iwMxiii3161iiw其中wi为0-1整数,xi为非负整数。程序见L2804r1
25、i, r2i, r3i, r4i第i种切割模式下,每根原料钢管生产4米、5米、6米和8米长的钢管的数量钢管下料问题2增加一种需求:5米10根;切割模式不超过3种。现有4种需求:4米50根,5米10根,6米20根,8米15根,用枚举法确定合理切割模式,过于复杂。对大规模问题,用模型的约束条件界定合理模式决策变量xi按第i种模式切割的原料钢管根数(i=1,2,3)另一种思路钢管下料问题2目标函数(总根数) Min z=x1+x2+x3模式合理:每根余料不超过3米约束条件满足需求r11x1+r12x2+r13x350r21x1+r22x2+r23x310r31x1+r32x2+r33x320r41x
26、1+r42x2+r43x315164r11+5r21+6r31+8r4119164r12+5r22+6r32+8r4219164r13+5r23+6r33+8r4319整数约束:xi,r1i,r2i,r3i,r4i (i=1,2,3)为整数。整数非线性规划模型钢管下料问题2增加约束,缩小可行域,便于求解需求:4米50根,5米10根 6米20根,8米15根每根原料钢管长19米2619158206105504原料钢管数量的下界:特殊生产计划:对每根原料钢管模式1:切割成4根4米钢管,需13根;模式2:切割成1根5米和2根6米钢管,需10根;模式3:切割成2根8米钢管,需8根。原料钢管总根数上界:1
27、3+10+8=3126x1+x2+x3 31 模式排列顺序可任定x1x2 x3 Objective value: 28.00000Variable Value Reduced Cost X1 10.00000 0.000000 X2 10.00000 2.00000 X3 8.000000 1.000000R11 2.000000 0.000000R12 3.000000 0.000000R13 0.000000 0.000000R21 1.000000 0.000000R22 0.000000 0.000000R23 0.000000 0.000000R31 1.000000 0.00000
28、0R32 1.000000 0.000000R33 0.000000 0.000000R41 0.000000 0.000000R42 0.000000 0.000000R43 2.000000 0.000000模式2:每根原料钢管切成3根4米和1根6米钢管,共10根;Lingo求解整数非线性规划模型原料钢管总根数为28根模式1:每根原料钢管切割成2根4米、1根5米和1根6米钢管,共10根;模式3:每根原料钢管切割成2根8米钢管,共8根L291.lg4例5 饮料厂的生产与检修企业生产计划考虑与产量无关的固定费用给优化模型求解带来新的困难。单阶段生产计划多阶段生产计划外部需求和内部资源随时间变化
29、生产批量问题饮料厂的生产与检修计划某种饮料4周的需求量、生产能力和成本周次需求量(千箱) 生产能力(千箱)成本(千元/千箱)115305.0225405.1335455.4425205.5合计100135存贮费: 每周每千箱饮料0.2(千元)。安排生产计划,满足每周的需求,使4周总费用最小。在4周内安排一次设备检修,占用当周15千箱生产能力,能使检修后每周增产5千箱,检修应排在哪一周?问题分析除第4周外每周的生产能力超过每周的需求;生产成本逐周上升;前几周应多生产一些。周次需求 能力成本115305.0225405.1335455.4425205.5合计100135模型假设饮料厂在第1周开始时
30、没有库存;从费用最小考虑,第4周末不能有库存;周末有库存时需支出一周的存贮费;每周末的库存量等于下周初的库存量。模型建立周次需求 能力成本115305.0225405.1335455.4425205.5决策变量x1x4:第14周的生产量y1y3:第13周末库存量存贮费:0.2(千元/周千箱)目标函数产量、库存与需求平衡能力限制)( 2 . 05 . 54 . 51 . 50 . 53214321yyyxxxxzMin约束条件x1-y1=15x2+y1-y2=25x3+y2-y3=35x4+y3=35x130, x2 40 x345, x420 非负约束x1, x2, x3, x4, y1, y
31、2, y30模型求解Lingo求解x1x4:15,40,25,20;y1y3:0,15,5 。最优解周次需求产量库存能力成本115150305.02254015405.1335255455.4425200205.54周生产计划的总费用为528(千元)L271.lg4在4周内安排一次设备检修,占用当周15千箱生产能力,能使检修后每周增产5千箱,检修应排在哪一周?检修计划周次需求 能力成本115305.0225405.1335455.4425205.50-1变量wt:wt=1检修安排在第t周(t=1,2,3,4)检修安排在任一周均可约束条件产量、库存与需求平衡条件不变能力限制x130 x240 x
32、345x420 x1+15w130 x2+15w240+5w1x3+15w345+5w1+5w2x4+15w420 +5w1+5w2+5w34周内设备检修一次:增加约束w1+w2+w3+w4=1目标函数不变检修计划Lingo求解Objective value: 527.0000Variable Value Reduced Cost X1 15.00000 0.000000 X2 45.00000 0.000000 X3 15.00000 0.000000 X4 25.00000 0.000000 Y1 0.000000 0.000000 Y2 20.00000 0.000000 Y3 0.00
33、0000 0.100000 W1 1.000000 -0.500000 W2 0.000000 1.500000 W3 0.000000 0.000000 W4 0.000000 0.000000w1=1 在第一周内检修4周的生产量分别为:x1=15, x2=45, x3=15, x4=25.3周的库存量分别为:y1=0, y2=20, y3=0总费用由528降为527 (千元)。检修所导致的生产能力提高的作用, ,需要更长的时间才能得到充分体现。L272.lg4饮料的生产批量问题饮料厂使用同一条生产线轮流生产多种饮料。若某周开工生产某种饮料,需支出生产准备费8千元。某种饮料4周的需求量、生产
34、能力和成本周次需求量(千箱) 生产能力(千箱)成本(千元/千箱)115305.0225405.1335455.4425205.5合计100135存贮费:每周每千箱饮料0.2(千元)。 安排生产计划,满足每周的需求,使4周总费用最小。生产批量问题的一般提法ct时段t生产费用(元/件);ht时段t(末)库存费(元/件);st时段t生产准备费(元);dt时段t市场需求(件);Mt时段t生产能力(件)。假设初始库存为0制订生产计划,满足需求,并使T个时段的总费用最小。决策变量xt时段t生产量;yt时段t(末)库存量;wt=1时段t开工生产(wt=0 不开工)。目标Ttttttttyhxcwsz1)(m
35、in约束;1ttttdyxy;0001tttxxw;ttMx 0, 00ttTyxyyTt, 2 , 1生产批量问题的一般提法Ttttttttyhxcwsz1)(minttttdyxyts1. .0001tttxxwttMx 0, 00ttTyxyyTt, 2 , 10tttwMx混合0-1规划模型将所给参数代入模型,用Lingo求解最优解:x1x4:30,40,30,0;总费用554.0(千元)x1x4:15,40,45,0;也是最优解总费用一样L273.lg4集合的类型集合派生集合基本集合稀疏集合 稠密集合元素列表法元素过滤法直接列举法 隐式列举法setname(parent_set_li
36、st) /member_list/:atribute_list;setname /member_list/:atribute_list;sets: students/John,Jill,Rose,Mike/:sex,age;endsets例如:定义有4个成员2个属性的学生集合上面为直接列举法,当集合成员很多时可用隐式列举法,例如:sets: warehouses/wh1.wh6/:capacity; vendors/v1.v8/:demand;endsets为了定义一个原始集,必须详细声明:1、集的名字,2、集的成员(可选),3、集成员的属性(可选);用下面的语法( 表示可选):setname
37、/member_list/:attribute_list;定义基本集合:集合元素的隐式列举类型隐式列举格式示例示例集合的元素数字型 1.n1.51,2,3,4,5字符数字型stringM.stringNCar101.Car108Car102, Car102, Car104,car108星期型 dayM.dayNMon.FriMon, Tue, Wed, Thu, Fri月份型 monthM.monthNOCT.JANOCT,NOV,DEC,JAN年份月份型monthYearM.monthYearNOCT2001.JAN2002OCT2001,NEV2001, DEC2001,JAN2002下表
38、给出了隐式列举的一些具体方法1、集的名字,2、父集的名字,3、集成员(可选),4、集成员的属性(可选)定义派生集为了定义一个派生集,必须详细声明:setname是集的名字。parent_set_list是已定义的集的列表,多个时必须用逗号隔开。定义一个派生集语法:setname(parent_set_list)/member_list/:attribute_list;sets: warehouses/wh1.wh6/:capacity; vendors/v1.v8/:demand; links(warehouses,vendors):cost,volume;endsets例如下列集合links
39、就是派生集合:sets: cities/a1,a2,a3,a4/; roads(cities,cities)/a1,b1 a1,b2 a2,b1 a3,b2/:d;endsetssets: students/s1.s8/; pairs(students, students)|&2#GT#&1:Benefit,match;endsets上例的派生集合为稠密集合,若为稀疏集合,则可选用元素列表法或元素过滤法:若派生集合是基本集合构成的笛卡儿积,则称它为稠密集合;派生集合的元素可以只是这个笛卡儿积的一个真子集合,这种派生集合称为稀疏集合例如下二例:元素列表法元素过滤法运算符的优先级三
40、类运算符:逻辑运算符算术运算符关系运算符优先级运算符最高#NOT# -(负号)* /+ -(减法)#EG# #NE# #GT# #GE# #LT# #LE#AND# #OR# 最低(=)四个集合循环函数:FOR、SUM、MAX、MIN集合循环函数循环函数一般格式function (setname(set_index_list)|condtion:expression_list);例如:),(),(),(jimatchjibenefitpairsjiobjectivemax=sum(pairs(i,j): benefit(i,j)*match(i,j);例如:1),(),(kjmatchikor
41、ijpairskjfor(students(i):condtion sum(pairs(i,j)|j#EQ#i#OR#k#EQ#i: match(j,k)=1);集合操作函数四个集合循环函数 IN、INDEX、WARP、SIZE1in(set_name,primitive_index_1 ,primitive_index_2,)如果元素在指定集中,返回1;否则返回0。例:全集为I,B是I的一个子集,C是B的补集。sets: I/x1.x4/; B(I)/x2/; C(I)|#not#in(B,&1):;endsets2index(set_name, primitive_set_elem
42、ent)函数返回在集set_name中成员primitive_set_element 的索引 sets: girls/debble,sue,alice/; boys/bob,joe,sue,fred/;endsetsI1=index(sue);I2=index(boys,sue) I1的值是2,I2的值是3。我们建议在使用index函数时最好指定集。 例:确定成员在集合中的位置 该函数返回j=index-k*limit,其中k是一个整数,取适当值保证j落在集合1,2,limit内。该函数在循环、多阶段计划编制中特别有用。3wrap(index,limit)该函数返回集set_name的成员个数
43、。在模型中明确给出集大小时最好使用该函数。它的使用使模型更加数据中立,集大小改变时也更易维护。4size(set_name)变量界定函数实现对变量取值范围的附加限制,共4种:bin(x) 限制x为0或1;bnd(L,x,U) 限制LxU;free(x) 取消对变量x的默认下界为0的限制;gin(x) 限制x为整数。变量界定函数一项工作一周7天都需要有人(比如护士工作),每天(周一至周日)所需的最少职员数为20、16、13、16、19、14和12,并要求每个职员一周连续工作5天,试求每周所需最少职员数,并给出安排。注意这里我们考虑稳定后的情况。例7: 职员时序安排模型设周一到周日安排的人数分别为
44、:x1,x2,x7,则周一到周日工作的人数为:先考虑周一:因为一旦安排了工作就连续工作五天,所以周一工作的人员应为上周四到本周一安排工作的人数之和:所以有x4+x5+x6+x7+x120同理,周二到周日的约束为:x5+x6+x7+x1+x216;x6+x7+x1+x2+x313;x7+x1+x2+x3+x416;x1+x2+x3+x4+x519;x2+x3+x4+x5+x614;x3+x4+x5+x6+x712;目标函数为 Min Z=x1+x2+x3+x4+x5+x6+x7xi为正整数。model:sets: days/mon.sun/: required,start;endsetsdata
45、: !每天所需的最少职员数每天所需的最少职员数; required = 20 16 13 16 19 14 12; enddata!最小化每周所需职员数最小化每周所需职员数; min=sum(days: start); for(days(J): sum(days(I) | I #le# 5: start(wrap(J-I+1,7) = required(J);end8 名同学准备分成4 个调查队(每队两人)前往4 个地区进行社会调查。设两两之间组队的效率如表所示(由于对称性只列出了上三角部分),问如何组队可以使总效率最高?例8: 匹配问题学生s1s2s3s4s5s6s7s8s1_9342156
46、s2_173521s3_44291s4_1552s5_876s6_23s7_4“元素过滤”法设mij为0-1变量,mij=1表示学生i与j匹配,设bij为学生i与j匹配的效率,目标为总效率最高:目标函数818jjiijijmbzMax对学生i有且只有一个其他的学生与其匹配1ikkijiijmm约束条件mij为0-1变量MODEL:SETS: students / 1.8/; pairs(students,students)|&2#GT#&1:efects,match;ENDSETSDATA: efects = 9 3 4 2 1 5 6 1 7 3 5 2 1 4 4 2 9
47、2 1 5 5 2 8 7 6 2 3 4;ENDDATAMAX=SUM( pairs(I,J):efects(I,J)*match(I,J);FOR(students(I):SUM(pairs(J,K)|J#EQ#I #OR# K#EQ#I:match(J,K)=1);FOR(pairs(I,J):BIN(match(I,J);END结果为1,8,2,4,3,7,5,6匹配,效率为30。在公路网中,司机希望找到一条从一个城市到另一个城市的最短路. 假设图表示的是该公路网, 节点表示货车可以停靠的城市,弧上的权表示两个城市之间的距离(百公里).那么,货车从城市S 出发到达城市T,如何选择行路线
48、,使所经过的路程最短?SA1A2A3B1B2C1C2T633658674678956S到T的最优行驶路线P先求出从Ck(k=1,2)到T的最优行驶路线.从Bk到T的最优行驶路线.从Ak到T的最优行驶路线.例9 最短路问题从S到T的行驶过程分成4 个阶段,即SAi(i=1,2 或3), Ai Bj(j=1或2), Bj Ck(k=1或2), Ck T记d(Y,X)为城市Y与城市X之间的直接距离(若这两个城市之间没有道路直接相连,则可以认为直接距离为无穷大),用L(X)表示城市X到城市T的最优行驶路线的路长, 则: ),()()(0)(TXYXdYLMinXLTL!最短路问题最短路问题;model
49、:sets: cities/S,A1,A2,A3,B1,B2,C1,C2,T/: L; roads(cities,cities)/ S,A1 S,A2 S,A3 A1,B1 A1,B2 A2,B1 A2,B2 A3,B1 A3,B2 B1,C1 B1,C2 B2,C1 B2,C2 C1,T C2,T /: P,D;endsetsdata: D=6 3 3 6 5 8 6 7 4 6 7 8 9 5 6; L= , , , , , , , ,0;enddata!L(index(T)=0;for(cities(i)|i#LT#INDEX(T):L(i)=min(roads(i,j): D(i,j)
50、+L(j);); !显然,如果显然,如果P(i,j)=1,则点则点i到点到点n的最短路径的第一步是的最短路径的第一步是i-j,否则就不是。,否则就不是。 由此,我们就可方便的确定出最短路径由此,我们就可方便的确定出最短路径; for(roads(i,j):P(i,j)=if(L(i) #eq# D(i,j)+L(j),1,0);end结果L(S)=20,路径为:SA3B2C1T1324567891051213121163104121496851052现有10个城市的交通网,我们想找到从城市1到城市10的最短路径;动态规划图示说明SETS:! 这里是这里是10个城市的基础集,其中个城市的基础集,
51、其中F( i) 表示从城市表示从城市i到最后一个城到最后一个城市的最短路径市的最短路径; CITIES /1.10/: F; ! 派生集派生集ROADS列出了城市间所有存在的道路(注:并非所有城市间列出了城市间所有存在的道路(注:并非所有城市间都有道路直接连接,并假定所有直接连接路径仅有一条都有道路直接连接,并假定所有直接连接路径仅有一条 ; ROADS( CITIES, CITIES)/ 1,2 1,3 1,4 2,5 2,6 2,7 3,5 3,6 3,7 4,5 4,6 5,8 5,9 6,8 6,9 7,8 7,9 8,10 9,10/: D; ! D( i, j) 是城市是城市 i
52、到到 j的距离的距离;ENDSETSDATA: ! 这里是对应于上述直接连接的道路的长度这里是对应于上述直接连接的道路的长度 ; D = 1 5 2 13 12 11 6 10 4 12 14 3 9 6 5 8 10 5 2;ENDDATA! 如果你已经位于城市如果你已经位于城市10,则你到城市的,则你到城市的10旅行长度为旅行长度为0; F( SIZE( CITIES) = 0;! 下列是经典的动态规划递归式。用语言叙述就是:从城市下列是经典的动态规划递归式。用语言叙述就是:从城市i到城市到城市10的最短路径为城市的最短路径为城市i到所有能直达的城市到所有能直达的城市j的路径长度加上城市的
53、路径长度加上城市j到到城市城市10的最短路径的和的最小值的最短路径的和的最小值; FOR( CITIES( i)| i #LT# SIZE( CITIES): F( i) = MIN( ROADS( i, j): D( i, j) + F( j);例10: 装车问题要把七种不同规格的包装箱装到两辆铁路平板车上去,包装箱的宽和高都是相等的,但厚度(t以厘米计)及重量(w以千克计)却不同,下表给出它们的厚度、重量及数量c1c2c3c4c5c6c7t(厘米)48.752.061.372.048.752.064.0w(千克) 200030001000500400020001000k(箱数)879664
54、8每辆平板车有10.2米长的地方可用于装箱(像面包片那样),载重量为40吨,由于当地的货运的限制,对c3、c6、c7三类包装箱的总数有如下特殊约束:他们所占的空间不得超过302.7厘米,是把这些包装箱装到车上去,而浪费的空间最小。问题分析包装箱总重89吨,平板车能载80吨,装不完,究竟在车上装那些包装箱,每种装多少,必须有一个标准,该标准应遵循:重量、厚度等约束,目标是使车上的剩余空间最小。还要注意:对5、6、7三种包装箱的厚度约束,问题并没有给出是每辆车上5、6、7三种包装箱的厚度不超过302.7厘米,还是两辆车上的总厚度不超过302.7厘米,应分别加以考虑。问题假设1)集装箱在装车时两个集
55、装箱之间不留缝隙,其在给定集装箱尺寸时已考虑了。2)假定5、6、7三种包装箱在每节平板车上装载的厚度不超过302.7厘米。模型建立设xij表示第i辆平板车上装cj箱的个数,则有如下约束:自然约束:xij0 且为整数 (1) 箱数约束:x11+ x21 8 (2) x12+ x22 7 (3) x13+ x23 9 (4) x14+ x24 6 (5) x15+ x25 6 (6) x16+ x26 4 (7) x17+ x27 8 (8) 重量约束:2xi1+ 3xi2+ xi3+ 0.5xi4+ 4xi5+ 2xi6+ xi7+ 40 i=1,2 (9, 10) 厚度约束:0.487xi1+ 0.520 xi2+ 0.613xi3+ 0.72xi4+ 0.487xi5+ 0.520 xi6+ 0.640 xi7+ 10.2 i=1,2 (11, 12) 特殊约束:0.487xi5+ 0.520 xi6+ 0.640 xi7+ 3.027 i=1,2 (13, 14) 目标
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新版合同服装联营3篇
- 房屋买卖合同贷款版示例3篇
- 工程外包合同参考3篇
- 文化传播平台建设合同3篇
- 工业煤油销售合同协议3篇
- 教育培训服务劳动合同模板集3篇
- 新版铲车租赁合同协议书3篇
- 居民创新方案3篇
- 新版律师聘用合同范本3篇
- 安装工程合同中的工程变更处理3篇
- 换热器的传热系数K
- 石化企业恐怖袭击事件应急预案
- 美意模块式水冷风冷冷热水机组LCD线控器使用说明书
- (完整版)钢楼梯施工方案
- 奖状证书模板优秀员工3
- 电子商务基础与应用题库
- 魔方社团活动记录-副本
- 湿式静电除尘器技术方案0001
- T∕CSCS 018-2022 装配式建筑钢结构防腐蚀涂装技术规程
- 第二章multisim仿真作业
- 瑞文智力测验及答案经典版
评论
0/150
提交评论