一个简单的LINGO例题,但运行出错
本帖最后由 wujianjack2 于 2013-11-12 23:33 编辑sets:
!c表示运量,a、b表示坐标,d表示需求量,e表示存储量;
demand/1..6/:a,b,d;
supply/p,q/:x,y,e;
link/demand,supply/:c;
endsets
min=@sum(link(I,J):c(I,J)*((x(J)-a(I))^2+(y(J)-b(I))^2)^(1/2));
@for(work(i):@sum(supply(j):c(i,j))=d(i););
@for(supply(j):@sum(work(i):c(i,j))<=e(j););
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;
x=5 2;
y=1 7;
e=20 20;
enddata sets:
!c表示运量,a、b表示坐标,d表示需求量,e表示存储量;
demand/1..6/:a,b,d;
supply/p,q/:x,y,e;
link(demand,supply):c;
endsets
min=@sum(link(I,J):c(I,J)*((x(J)-a(I))^2+(y(J)-b(I))^2)^(1/2));
@for(demand(i):@sum(supply(j):c(i,j))=d(i););
@for(supply(j):@sum(demand(i):c(i,j))<=e(j););
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:
x=5 2;
y=1 7;
endinit
这样程序就可以运行了,楼主之前的程序中错误的地方不妨自己比对找出来试试。
wujianjack2 发表于 2013-11-12 23:49 static/image/common/back.gif
sets:
!c表示运量,a、b表示坐标,d表示需求量,e表示存储量;
demand/1..6/:a,b,d;
谢谢,但我想问一下,为什么要把x,y先初始化,而不能直接在data中赋值 wujianjack2 发表于 2013-11-12 23:49 static/image/common/back.gif
sets:
!c表示运量,a、b表示坐标,d表示需求量,e表示存储量;
demand/1..6/:a,b,d;
为什么想,x,y要进行初始化,而不能在data中赋值呢? 如鱼 发表于 2013-11-13 06:50 static/image/common/back.gif
为什么想,x,y要进行初始化,而不能在data中赋值呢?
可以赋值,但是,如果在DATA段中这么写的话X,Y就是常量了,不是变量,而这个问题是要搜索X,Y的较优解,当然不能限定为常量了吧。INIT相当于给定迭代初始点。
页:
[1]