在lingo中,可以用集set与数据段data,以及相应的循环函数,来解决运输问题。
代码如下:
----------------------------------------------------------------------------------------------------------------------------------------
!3产地,4销地的运输问题;
!3 Warehouse,4 Customer Transportation Problem;
sets:
Warehouse /1..3/:a;
Customer /1..4/:b;
Routes(Warehouse,Customer):c,x;
endsets
!Here are the parameters;
data:
a= 30,25,21;
b= 15,17,22,12;
c= 6,2,6,7,
4,9,5,3,
8,8,1,5;
enddata
!The objective;
[OBJ] min=@sum(Routes:c*x);
!The supply constraints;
@for(Warehouse(i):[SUP]
@sum(Customer(j):x(i,j))<=a(i));
!The demand constraints;
@for(Customer(j):[DEM]
@sum(Warehouse(i):x(i,j))=b(j));
end
-------------------------------------------------------------------------------------------------------------------------------
结果图如下:
由于lingo软件中采用集、数据段和循环函数的编程方式,因此便于推广到一般形式。即只需修改运输问题中的产地和销地的个数,以及参数a,b,c的值,就可以求解任何运输问题。