sets:
cities/1..31/:level;
link(cities, cities):distance, x;
endsets
data:
distance=@ole('C:\Users\Lucifer\Desktop\城市距离.xlsx');
@ole('C:\Users\Lucifer\Desktop\城市距离.xlsx')=x;
enddata
n=@size(cities);
min=@sum(link(i,j)|i #ne# j: distance(i,j)*x(i,j));
@for(cities(i):
@sum(cities(j)| j#ne# i: x(j,i))=1;
@sum(cities(j)| j #ne# i: x(i,j))=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);););
@for(link:@bin(x));
@for(cities(i)|i#gt# 1:level(i)<=n-1-(n-2)*x(1,i);
level(i)>=1+(n-2)*x(i,1);
cities/1..31/:level;
link(cities, cities):distance, x;
endsets
data:
distance=@ole('C:\Users\Lucifer\Desktop\城市距离.xlsx');
@ole('C:\Users\Lucifer\Desktop\城市距离.xlsx')=x;
enddata
n=@size(cities);
min=@sum(link(i,j)|i #ne# j: distance(i,j)*x(i,j));
@for(cities(i):
@sum(cities(j)| j#ne# i: x(j,i))=1;
@sum(cities(j)| j #ne# i: x(i,j))=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);););
@for(link:@bin(x));
@for(cities(i)|i#gt# 1:level(i)<=n-1-(n-2)*x(1,i);
level(i)>=1+(n-2)*x(i,1);