(一)实验目的 1. 运输问题求解的编程实现 2.掌握使用matlab、Lingo、Excel的求解功能求解运输问题,并对结果进行分析。 (二)实验内容 《运筹学》清华三版P98页 3.3题 Lingo程序代码及运行结果(选取部分): <1>3.3(1): 程序代码: model: sets: xiao/1..4/:s; chan/1..3/:h; link(chan,xiao):x,y; endsets data: y=3 7 6 4 2 4 3 2 4 3 8 5; h=5 2 3; s=3 3 2 2; enddata min=@sum(link:x*y); @for(xiao(j)  sum(chan(i):x(i,j))=s(j)); @for(chan(i)  sum(xiao(j):x(i,j))=h(i)); 运行结果及结果分析: 见附件: Objective value: 32.00000 产地1分别将数量为3和2的产品运往销地甲和丁;产地2将数量为2的产品运往销地丙;产地3将数量为3的产品运往销地乙;该运输问题的最小费用为32. <2>3.3(2): 程序代码: model: sets: xiao/1..4/:s; chan/1..3/:h; link(chan,xiao):x,y; endsets data: y=10 6 7 12 16 10 5 9 5 4 10 10; h=4 9 4; s=5 2 4 6; enddata min=@sum(link:x*y); @for(xiao(j)  sum(chan(i):x(i,j))=s(j)); @for(chan(i)  sum(xiao(j):x(i,j))=h(i)); 运行结果及结果分析: 见附件 Objective value: 118.0000 产地1将数量为1、2、1的产品分别运往销地甲、乙、丙;产地将数量为3、6的产品运往销地丙、丁;产地3将数量为4的产品运往销地甲。最小费用为118. <3>3.3(3): 程序代码: model: sets: xiao/1..5/:s; chan/1..4/:h; link(chan,xiao):x,y; endsets data: y=10 20 5 9 10 2 10 8 30 6 1 20 7 10 4 8 6 3 7 5; h=5 6 2 9; s=4 4 6 2 4; enddata min=@sum(link:x*y); @for(xiao(j)  sum(chan(i):x(i,j))=s(j)); @for(chan(i)  sum(xiao(j):x(i,j))<=h(i)); 运行结果及结果分析: 见附件: Objective value: 90.00000 产地1分别将数量为1、2的产品运往销地丙、丁;产地2分别将数量为4、2的产品运往销地甲、戊;产地3将数量为2的产品运往销地戊;产地4分别将数量为4、5的产品运往销地乙、丙;最小运费为90. <4>3.3(4): 程序代码: model: sets: xiao/1..5/:s; chan/1..5/:h; link(chan,xiao):x,y; endsets data: y=10 18 29 13 22 13 10000 21 14 16 0 6 11 3 10000 9 11 23 18 19 24 28 36 30 34; h=100 120 140 80 60; s=100 120 100 60 80; enddata min=@sum(link:x*y); @for(xiao(j)  sum(chan(i):x(i,j))=s(j)); @for(chan(i)  sum(xiao(j):x(i,j))<=h(i)); 运行结果及结果分析: 见附件
: p. s4 v% }2 ^% Z8 U5 m9 s3 }$ c3 I9 l6 a& J# l2 E
2 G# b5 P) \, s; c3 l
6 f/ T/ f; ], M/ D( j
) c7 g7 j2 \6 l8 R5 `) f$ p: Y
4 a3 t7 ^# ]* [
3 j7 R% y# @: l; s8 w# S1 h. |
, r/ I* H$ B5 C6 V |