model:
sets:
cities/../:level;
link(cities, cities): distance, x; !距离矩阵;
endsets
data:
distance = ;
enddata
n = @size(cities); !目标函数;
min=@sum(link:distance * x); @For(cities(k):
!进入城市k;
@sum(cities(i) | i #ne# k: x(i,k)) = ; !离开城市k;
@sum(cities(j) | j #ne# k: x(k,j)) = ;
); !保证不出现子圈;
@for(cities(i) | i #gt# :
@for(cities(j) | j #gt# #and# i#ne#j:
level(i)-level(j) + n*x(i,j) <= n-);
); !限制u的范围以加速模型的求解,保证所加限制并不排除掉TSP问题的最优解;
@for(cities(i) | i #gt# : level(i) <= n-);
!定义x为 \1变量;
@for(link:@bin(x));
end
04-25 22:59