Hi ! I’m fairly new to AMPL and would like some help ;
i am doing a simplified version of the TSP problem, with no definied start or end node.
Everything works great and my output is this ;
x :=
A A 0
A B 0
A C 1
A D 0
B A 0
B B 0
B C 0
B D 1
C A 0
C B 1
C C 0
C D 0
D A 0
D B 0
D C 0
D D 0
;
Is there any way for AMPL to give the path ?
It would, by itself, print/display : “path is A-C-B-D” ?
Here’s an example that you can adapt to your needs. Supposing that you write
set N;
var x {N,N};
in your model and
set N := A B C D ;
in your data, you could use the following AMPL statements to determine and display the path:
set PATH ordered within N;
let PATH := {j in N: card {i in N: x[i,j] = 1} = 0};
let {i in 2..card(N)} PATH := PATH union {j in N: x[last(PATH),j] = 1};
print {i in PATH} i & (if i!=last(PATH) then " ->" else "");
There are four nodes but only 3 arcs in the solution, so the first let statement initializes set PATH to contain the one node (A) that does not have any arcs leading into it. Then the second let statement follows the path for 3 steps.