|
(一)实验目的 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)); 运行结果及结果分析: 见附件
# o2 s1 V3 S) |3 c: B% }2 z! A0 i6 A/ o& T5 l- T
2 A7 ?; B# f- J& W- d
8 }( H$ U+ m- a# x$ I4 u& v
! Y" n0 M" y7 l: Q o
! L( s1 ^/ q( z: A5 M5 c2 O7 e* P# F
* U, Z1 G% [4 O) s c) |' A/ J
|