当前位置:文档之家› 运筹学实例分析及lingo求解

运筹学实例分析及lingo求解

运筹学实例分析及lingo 求解一、线性规划某公司有6个仓库,库存货物总数分别为60、55、51、43、41、52,现有8个客户各要一批货,数量分别为35,37,22,32,41,32,43,38。

各供货仓库到8个客户处的单位货物运输价见表试确定各仓库到各客户处的货物调运数量,使总的运输费用最小。

解:设ijx 表示从第i 个仓库到第j 个客户的货物运量。

ij c表示从第i 个仓库到第j 个客户的单位货物运价,i a 表示第i 个仓库的最大供货量,j d 表示第j 个客户的订货量。

目标函数是使总运输费用最少,约束条件有三个:1、各仓库运出的货物总量不超过其库存数2、各客户收到的货物总量等于其订货数量3、非负约束数学模型为:∑∑===6181)(min i j ijij x c x f⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧≥===≤∑∑==08,,2,1,6,2,1,,..6181ij j i ij i j ij x j d x i a x t s 编程如下:model : Sets :Wh/w1..w6/:ai;Vd/v1..v8/:dj;links(wh,vd):c,x;endsetsData:ai=60,55,51,43,41,52;dj=35,37,22,32,41,32,43,38;c=6,2,6,7,4,2,5,94,9,5,3,8,5,8,25,2,1,9,7,4,3,37,6,7,3,9,2,7,12,3,9,5,7,2,6,55,5,2,2,8,1,4,3;EnddataMin=@sum(links(i,j):c(i,j)*x(i,j));@for(wh(i):@sum(vd(j):x(i,j))<=ai(i));@for(vd(j):@sum(wh(i):x(i,j))=dj(j));endGlobal optimal solution found.Objective value:Total solver iterations: 0Variable Value Reduced Cost AI( W1)AI( W2)AI( W3)AI( W4)AI( W5)AI( W6)DJ( V1)DJ( V2)DJ( V3)DJ( V4)DJ( V5)DJ( V6)DJ( V7)DJ( V8)C( W1, V1)C( W1, V2)C( W1, V3)C( W1, V4)C( W1, V5)C( W1, V6)C( W1, V8) C( W2, V1) C( W2, V2) C( W2, V3) C( W2, V4) C( W2, V5) C( W2, V6) C( W2, V7) C( W2, V8) C( W3, V1) C( W3, V2) C( W3, V3) C( W3, V4) C( W3, V5) C( W3, V6) C( W3, V7) C( W3, V8) C( W4, V1) C( W4, V2) C( W4, V3) C( W4, V4) C( W4, V5) C( W4, V6) C( W4, V7) C( W4, V8) C( W5, V1) C( W5, V2) C( W5, V3) C( W5, V4) C( W5, V5) C( W5, V6) C( W5, V7) C( W5, V8) C( W6, V1) C( W6, V2) C( W6, V3) C( W6, V4) C( W6, V5) C( W6, V6) C( W6, V7) C( W6, V8) X( W1, V1) X( W1, V2)X( W1, V4) X( W1, V5) X( W1, V6) X( W1, V7) X( W1, V8) X( W2, V1) X( W2, V2) X( W2, V3) X( W2, V4) X( W2, V5) X( W2, V6) X( W2, V7) X( W2, V8) X( W3, V1) X( W3, V2) X( W3, V3) X( W3, V4) X( W3, V5) X( W3, V6) X( W3, V7) X( W3, V8) X( W4, V1) X( W4, V2) X( W4, V3) X( W4, V4) X( W4, V5) X( W4, V6) X( W4, V7) X( W4, V8) X( W5, V1) X( W5, V2) X( W5, V3) X( W5, V4) X( W5, V5) X( W5, V6) X( W5, V7) X( W5, V8) X( W6, V1) X( W6, V2) X( W6, V3) X( W6, V4) X( W6, V5) X( W6, V6)X( W6, V8)Row Slack or Surplus Dual Price 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15由以上结果可以清楚的看到由各仓库到各客户处的货物调运数量,由此得出的符合条件的最佳运货方案,而使运费最低,最低为664。

二、运输规划重庆有三家电子厂分别是新普,隆宇和恒华,生产的笔记本电脑将要运向北京,天津,广东,上海四个城市销售,其产量和销售量见下表:(单位:万台)表:1-1问:哪种销售方案将会取得最少的运输费用,费用为多少针对该运输问题,为了方便计算,可以设新普(A 1),隆宇(A 2)和恒华(A 3)分别销往北京(B 1)、天津(B 2)、广东(B 3)和上海(B 4)四个城市销售量为111213142122232431323334x x x x x x x x x x x x 、、、、、、、、、、、.建立以下模型:表:1-2目标(The objective )最少费用:34333231242322312114131211415x x 8x 8x 3x 5x 9x 4x 7x 6x 2x 6x z Min +++++++++++==∑∑==i j j i j i x c约束条件:供应限制(The supply constrains ) 指标约束(The damandconstrains )⎪⎩⎪⎨⎧≤+++≤+++≤+++21x x x x 25x x x x 30x x x x 343332312423222114131211 ⎪⎪⎩⎪⎪⎨⎧=++=++=++=++12x x x 22x x x 17x x x 15x x x 342414332312322212312111LINGO 模型: model: sets:origin/1..3/:a; sale/1..4/:b;routes(origin,sale):c,x; endsets data: a=30,25,21; b=15,17,22,12;c=6,2,6,7,4,9,5,3,8,8,1,5; enddata[OBJ]min=@sum(routes:c*x);@for(origin(i):[SUP]@sum(sale(j):x(i,j))<=a(i));@for(sale(j):[DEM]@sum(origin(i):x(i,j))=b(j));endlingo结果:Global optimal solution found.Objective value:Infeasibilities:Total solver iterations: 6Variable Value Reduced Cost X( 1, 1)X( 1, 2)X( 1, 3)X( 1, 4)X( 2, 1)X( 2, 2)X( 2, 3)X( 2, 4)X( 3, 1)X( 3, 2)X( 3, 3)X( 3, 4)Row Slack or Surplus Dual Price OBJSUP( 1)SUP( 2)SUP( 3)DEM( 1) DEM( 2) DEM( 3) DEM( 4)从计算结果可以得出,新普(A1)分别销往北京(B1)、天津(B2)、广东(B3)和上海(B4)四个城市销售量为分别为2万台,17万台,1万台,0万台,剩余10万台;隆宇(A2)分别销往北京(B1)、天津(B2)、广东(B3)和上海(B4)四个城市销售量为别为13万台,0万台,0万台,12万台,剩余0万台;恒华(A3)分别销往北京(B1)、天津(B2)、广东(B3)和上海(B4)四个城市销售量为分别为0万台,0万台,21万台,0万台,剩余0万台;总费用为161个单位.三、整数规划某公司打算向它的3个营业区增设6个销售店,每个营业区至少增设一个。

从各区赚取的利润与增设的销售店个数有关,其数据如下表所示。

试求各区应分配几个增设的销售店,才能使总利润最大。

要设置集合zone/A,B,C/,表示三个地区。

因为获得的利润与地区和各地的销售点增加数均相关,所以可以仿照运输模型,用number/1..4/表示每个地区可选的销售点增加数,然后用一个派生集links(zone,number):c,profit ,定义⎩⎨⎧=,其他个销售点地区新增,在01j i c ijprofit(i,j)为在i 地区新增j 个销售点能获得的利润。

可写出约束条件为:41341111,2,3016ij j ij ij i j c i c c j ===⎧==⎪⎪⎪=⎨⎪⎪=⎪⎩∑∑∑,或所求函数为max=@sum(links:c*profit);Lingo程序如下:model:sets:zone/A,B,C/; !A,B,C三个地区;number/1..4/; !各地区可选择新建的销售点数目,可选1~4中的一个数,通过links把zone和number联系起来;links(zone,number):c,profit; !若在i地区新建j个销售点,则c(i,j)=1,否则c(i,j)=(i,j)表示在i地区新建j个销售点的利润;endsetsdata:profit=200 280 330 340210 220 225 230160 170 180 200;enddatamax=@sum(links:c*profit);@for(zone(I):@sum(number(J):c(I,J))=1); !对于每一个地区,新建销售点的数目是一定的,c的和为1;@sum(zone(I):@sum(number(J):c(I,J)*J))=6; !三个地区新建的销售点总数为6;@for(links(i,j):@bin(c(i,j))); !每一个c(i,j)只能取0或1;end用Lingo求解,结果如下:Global optimal solution found.Objective value:Extended solver steps: 0Total solver iterations: 0Variable Value Reduced Cost C( A, 1)C( A, 2)C( A, 3)C( A, 4)C( B, 1)C( B, 2)C( B, 3)C( B, 4)C( C, 1)C( C, 2)C( C, 3)C( C, 4)则在A,B,C区域应分别新增3,1,2个销售点,可获得的最大利润为710万元。

相关主题