# tsp2.run model tsp.mod; #data tsp.dat; data ger_part.dat; # szimetrikussá tesszük a távolságmátrixot for {i in V, j in V : i > j} { let d[i,j] := d[j,i]; } option solver cplex; # ne írjon ki semmit a CPLEX option solver_msg 0; # szükséges adatszerkezetek param kov_csucs{V} >= 0, integer; param csucs >= 0, integer; param vege binary; let vege := 0; repeat while (vege = 0) { solve; let kiskorok := kiskorok + 1; # minden csucshoz a következő for {i in V} { let kov_csucs[i] := sum{j in V : j != i} j * x[i,j]; } # keressünk egy kiskört let csucs := 1; let S[kiskorok] := {}; repeat { let S[kiskorok] := S[kiskorok] union {csucs}; let csucs := kov_csucs[csucs]; } until (csucs = 1); if (card(S[kiskorok]) >= n) then { # Hamilton kör, vége let vege := 1; printf "Hamilton kör: " } else { # kiírjuk a kiskört amit találtunk printf "Kiskör: "; } for {i in S[kiskorok]} { printf "%d -> ", i ; } printf "1.\n"; } printf "A Hamilton körben megtett távolság: %f\n", distance;