set Cities ordered;@\Vlabel{line:back:ampl:parstart}@ set Paths := {i in Cities, j in Cities: ord(i) < ord(j)}; param cost {Paths} >= 0;@\Vlabel{line:back:ampl:parend}@ var Take {Paths} binary;@\Vlabel{line:back:ampl:var}@ minimize TotalCost: sum {(i,j) in Paths} cost[i,j] * Take[i,j];@\Vlabel{line:back:ampl:goal}@ subj to Tour {i in S}:@\Vlabel{line:back:ampl:con1}@ sum {(i,j) in Paths} Take[i,j] + sum {(j,i) in Paths} Take[j,i] = 2; var Order {Cities} >= 1, <= card(Cities);@\Vlabel{line:back:ampl:compstart}@ let Order[first(Cities)] = 1; subj to SubtourElimation {(i,j) in Cities: ord(i) < ord(j)}: (Order[i] - Order[j] + (card(Cities) + 1)*Take[i,j]) <= card(Cities);@\Vlabel{line:back:ampl:compend}@