flystar 发表于 2009-1-16 00:58

最小生成树lingo程序实现

model:
sets:
cities/1..10/:level;
link(cities,cities):distance,x;
endsets
data:
distance=0  8  5  9  12 14 12 16 17 22
         8  0  9  15 16 8  11 18 14 22
         5  9  0  7  9  11 7  12 12 17
         9  15 7  0  3  17 10 7  15 15
         12 16 9  3  0  8  10 6  15 15
         14 8  11 17 8  0  9  14 8  16
         12 11 7  10 10 9  0  8  6  11
         16 18 12 7  6  14 8  0  11 11
         17 14 12 15 15 8  6  11 0  10
         22 22 17 15 15 16 11 11 10 0;
enddata
n=@size(cities);
min=@sum(link(i,j)|i#ne#j :distance(i,j)*x(i,j));
@sum(cities(i)|i#gt#1:x(1,i))>=1;
@for(cities(i)|i#gt#1:
@sum(cities(j)|j#ne#i:x(j,i))=1;
@for(cities(j)|j#gt#1 #and# j#ne#i:level(j)>=level(i)+x(i,j)-(n-2)*(1-x(i,j))+(n-3)*x(j,i););
@bnd(1,level(i),999999);
level(i)<=n-1-(n-2)*x(1,i);
);
@for(link:@bin(x));
end

暮山紫凝 发表于 2010-8-16 22:48

哎,要是我的体能直接用就好了

鹏之徙 发表于 2011-11-10 17:41

为什么要用这样一个不等式呢?

z407174796 发表于 2011-11-15 08:25

顶顶,lingo初学 哈啊哈

数学中国管理员 发表于 2011-12-23 23:14

小学生来支持了

shengshengchina 发表于 2011-12-26 20:18

应该把对应的图画出来

情未央 发表于 2014-4-29 19:44

非常感谢楼主!
页: [1]
查看完整版本: 最小生成树lingo程序实现