第10章 Lingo软件包及其应用 联系客服

发布时间 : 星期一 文章第10章 Lingo软件包及其应用更新完毕开始阅读c1025834ee06eff9aef807c2

D( 1, 1) 15.00000 0.000000 D( 1, 2) 10.00000 0.000000 D( 1, 3) 11.00000 0.000000 D( 2, 1) 14.00000 0.000000 D( 2, 2) 18.00000 0.000000 D( 2, 3) 25.00000 0.000000 X( 1, 1) 0.000000 9.000000 X( 1, 2) 20.00000 0.000000 X( 1, 3) 45.00000 0.000000 X( 2, 1) 50.00000 0.000000 X( 2, 2) 60.00000 0.000000 X( 2, 3) 0.000000 6.000000

Row Slack or Surplus Dual Price 1 2475.000 -1.000000 SUPPLY_CON( 1) 0.000000 8.000000 SUPPLY_CON( 2) 0.000000 0.000000 DEMAND_CON( 1) 0.000000 -14.00000 DEMAND_CON( 2) 0.000000 -18.00000 DEMAND_CON( 3) 0.000000 -19.00000

即,最优解为fmin?2475,

x11?0,x12?20,x13?45,x21?50,x22?60,x23?0。

例10-13(参见例2-8) 某工程建在沙漠平原中,6个工地同时开工,每个工地的位置Mi(ai,bi),距离值(单位:km)、水泥日需求量d(t)(单位:吨)由下表给出:

i ai bi M1 1.25 1.25 3 M2 8.75 0.75 5 M3 0.5 4.75 4 M4 5.75 5 7 M5 3 6.5 6 M6 7.25 7.75 11 d(t) 目前暂定2个临时料场位于P(5,1)、Q(2,7)用于储存水泥,日储量20吨。假设从料场到工地之间均可开通直线道路相连。

(1)就临时料场制定供应计划,使得总的运输量(吨·公里)最小;

(2)你能找到更好的料场场位置,使得总的运输量(吨·公里)更小吗? 解:(2)选择2个合适的地点作为临时料场,使得总的运输量降低。

17

假设P(p1,p2)、又假设从P调c1j吨水泥到Mj,从Q调c2jQ(q1,q2)为临时料场。吨水泥到Mj(j =1,?,6)则,得到非线性优化问题如下:

minf?c11*?c13*?c15*?c21*?c23*?c25*(p1?1.25)?(p2?1.25)2222?c12*(p1?8.75)?(p2?0.75)2222(p1?0.5)?(p2?4.75)(p1?3)?(p2?6.5)222?c14*(p1?5.75)?(p2?5)2?c16*2(p1?7.25)?(p2?7.75)22

2(q1?1.25)?(q2?1.25)(q1?0.5)?(q2?4.75)(q1?3)?(q2?6.5)2222?c22*?c24*(q1?8.75)?(q2?0.75)(q1?5.75)?(q2?5)222?c26*(q1?7.25)?(q2?7.75)2?c11?c21?3?c12?c22?5??c13?c23?4??c14?c24?7?s.t.?c15?c25?6

?c16?c26?11??c11?c12?c13?c14?c15?c16?20?c21?c22?c23?c24?c25?c26?20???cij?0

(方法1) 用Matlab软件包中求解(参见例2-8),得到:

总运输量为89.8836(吨·公里),新的2个料场为P(5.6960,4.9286)、Q(7.25,7.75)。从这两个坐标来看, P点的坐标接近M4的坐标,在实际应用中,可以考虑P点料场就设在M4。

我们还可以选择其它的优化起点进行计算,可知优化起点选为x0=[6;6;6;6;6;6;6;6;6;6;6;6;6;6;6;6]时,优化结果最好。

(方法2) 用Lingo软件包求解。

此问题中,有3个6维的向量:a、b、d;3个2维的向量:p、q、e,其中p和q表示最初暂定的两个料场的坐标;一个2×6的调度矩阵:c,即,

18

M1 M2 M 3M4 M 5M 6Supply (e) 20 20 P C11, a1 C21, b1 C12, a2 C22, b2 C13, a3 C23, b3 C14, a4 C24, b4 7 C15, a5 C25, b5 6 C16, a6 C26, b6 11 QDemand 3 5 4 (d) 于是,在Lingo软件包中编程如下:

model:

title loacation problem; sets:

demand/1..6/:a,b,d; supply/1..2/:p,q,e; link(supply,demand):c; endsets data:

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; enddata init:

!we take the first given points (5,1) and (2,7) as an initial points; p=5,1; q=2,7; endinit

[obj]min=@sum(link(i,j):c(i,j)*((a(j)-p(i))^2+(b(j)-q(i))^2)^(1/2)); @for(demand(j):[demand_con]@sum(supply(i):c(i,j))=d(j);); @for(supply(i):[supply_con]@sum(demand(j):c(i,j))<=e(i);); @for(supply:@free(x);@free(y);); end

注:程序中将首先暂定的2个临时料场P(5,1)、Q(2,7)作为优化迭代的起始点,通过优化迭代,最终选定较优的料厂地址。 执行后得到结果:

Local optimal solution found at iteration: 49 Objective value: 89.88350

Model Title: loacation problem

Variable Value Reduced Cost A( 1) 1.250000 0.000000

19

A( 2) 8.750000 0.000000 A( 3) 0.5000000 0.000000 A( 4) 5.750000 0.000000 A( 5) 3.000000 0.000000 A( 6) 7.250000 0.000000 B( 1) 1.250000 0.000000 B( 2) 0.7500000 0.000000 B( 3) 4.750000 0.000000 B( 4) 5.000000 0.000000 B( 5) 6.500000 0.000000 B( 6) 7.750000 0.000000 D( 1) 3.000000 0.000000 D( 2) 5.000000 0.000000 D( 3) 4.000000 0.000000 D( 4) 7.000000 0.000000 D( 5) 6.000000 0.000000 D( 6) 11.00000 0.000000 P( 1) 7.249997 0.2744166E-07 P( 2) 5.695940 0.9979639E-08 Q( 1) 7.749998 0.1026849E-06 Q( 2) 4.928524 0.1153356E-07 E( 1) 20.00000 0.000000 E( 2) 20.00000 0.000000 C( 1, 1) 0.000000 1.765974 C( 1, 2) 0.000000 0.6737687 C( 1, 3) 0.000000 0.8781436 C( 1, 4) 0.000000 1.733379 C( 1, 5) 5.000000 0.000000 C( 1, 6) 11.00000 0.000000 C( 2, 1) 3.000000 0.000000 C( 2, 2) 5.000000 0.000000 C( 2, 3) 4.000000 0.000000 C( 2, 4) 7.000000 0.000000 C( 2, 5) 1.000000 0.000000 C( 2, 6) 0.000000 4.530640

Row Slack or Surplus Dual Price OBJ 89.88350 -1.000000

DEMAND_CON( 1) 0.000000 -7.079926 DEMAND_CON( 2) 0.000000 -6.485140 DEMAND_CON( 3) 0.000000 -6.508496 DEMAND_CON( 4) 0.000000 -1.399108 DEMAND_CON( 5) 0.000000 -4.430008 DEMAND_CON( 6) 0.000000 -0.4035883E-05

20

SUPPLY_CON( 1) 4.000000 0.000000 SUPPLY_CON( 2) 0.000000 1.309491

即,总运输量为89.88350(吨·公里),料场选在P?p1,p2?=P(7.249997,5.695940)与Q?q1,q2?=(7.749998,4.928524)两处地方比较好。

通过Matlab与Lingo两个软件包的对比,可见Lingo软件包求解这种问题优势更明显。

21