#----------- parametri ------------------- param n integer > 0; # numero di nodi set N := 1..n; # insieme dei nodi set A within (N cross N); # insieme degli archi param costo{(i,j) in A}; # costo[i,j] = costo dell'arco (i,j) param origine in N; # origine del cammino param destinazione in N; # destinazione del cammino #------------ variabili ------------------- var x{(i,j) in A} binary; #------------ funzione obiettivo ------------------- minimize CostoTotale: sum{(i,j) in A} costo[i,j]*x[i,j]; #------------ vincoli ------------------- s.t. bilancio_origine: sum{(j,origine) in A} x[j,origine] - sum{(origine,j) in A} x[origine,j] = -1; s.t. bilancio_intermedio{i in N: i<>origine and i<>destinazione}: sum{(j,i) in A} x[j,i] - sum{(i,j) in A} x[i,j] = 0; s.t. bilancio_destinazione: sum{(j,destinazione) in A} x[j,destinazione] - sum{(destinazione,j) in A} x[destinazione,j] = 1;