这个模型写出来的程序找不到可行解,大家能帮我看看吗?
本帖最后由 hitman 于 2010-5-8 15:46 编辑这个模型手工算了下可以得到解,可是程序写出来就是求不到可行解,查了1天了没看出问题来,请教各位和斑竹了。flashupload/swf/100508074257yfm3gxnx82fe.jpg
程序如下:
model:
sets:
region/1..3/:x,y,a,b; !x,y分别表示质心的横坐标、纵坐标,a表示region在x
轴上的距离、b表示region在y轴上的距离;
link(region,region):T,z; ! z(i,j)=1表示i和j紧邻,否则=0 ;
endsets
data: !关联度矩阵,要对称;
T=
-1000 4 0
0 -1000 4
0 0 -1000
;
h=4;
g=1;
a=1,2,1;
b=1,1,1;
enddata
! 关联度最大;
max=@sum(link(i,j)|i #ne# j: T(i,j)*z(i,j));
@for(link(i,j)|i #ne# j:z(i,j)=@if((@abs(x(i)-x(j)) #eq# 0.5*(a(i)+a(j)) #and# @abs(y(i)-y(j))#lt# 0.5*(b(i)+b(j)))
#or#(@abs(y(i)-y(j)) #eq# 0.5*(b(i)+b(j)) #and# @abs(x(i)-x(j)) #lt# 0.5*(a(i)+a(j))),1,0));
@for(region(i): @for(region(j)|i #ne# j: @abs(x(i)-x(j))>=0.5*(a(i)+a(j))));
@for(region(i): @for(region(j)|i #ne# j: @abs(y(i)-y(j))>=0.5*(b(i)+b(j))));
@for(region(i):x(i)<h);
@for(region(i):y(i)<g);
@for(link(i,j)|i #ne# j: @bin(z(i,j)));
end 。。。。。。。。。。。。。。。。。。。。。。。。。。。 版主和各位高手能帮我看看这段程序吗?实在是比较急,但是自己又查不出问题来。谢谢! 我也遇到同样的问题了…
页:
[1]