用lingo解决运输问题
- 格式:doc
- 大小:53.00 KB
- 文档页数:4
用lingo解决运输问题
Lingo程序代码及运行结果(选取部分):
程序代码:
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.
程序代码:
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.
程序代码:
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.
程序代码:
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));
运行结果及结果分析:
Objective value: 5520.000
产地1将数量为100的产品运往销地甲;产地2分别将数量为40、80的产品运往销地丙、戊;产地3分别将数量为的产品运往销地乙、丙、丁;产地4将数量为80的产品运往销地乙;产地5将数量为20的产品运往销地乙。最小运费为5520.