////////////////////////////// // Permute 5 éléments consécutifs dans ordre ////////////////////////////// function o=permuter(ordre) v=grand(1,1,"uin",1,d) o=ordre; if v>1 then o=o([[v:d],[1:v-1]]) end o5=grand(1,"prm",(1:5)'); o([1:5])=o(o5') /////////////////////////////// // Calcule la distance totale // associée à la permutation ordre ////////////////////////////// function e=f(ordre) e=dist(ordre(1),ordre(d)) for i=1:d-1 e=e+dist(ordre(i),ordre(i+1)) end //////////////////////////////// // Tire d points i.i.d. de loi uniforme // dans le carré unité // Calcule la matrice des distances inter-villes //////////////////////////////// function [v,dist]=initialise(d) v=rand(d,2) dist=(v(:,1)*ones(1,d)-ones(d,1)*v(:,1)').^2; dist=dist+(v(:,2)*ones(1,d)-ones(d,1)*v(:,2)').^2; dist=sqrt(dist) //////////////////////////// // Relie les points de villes dans l'ordre //////////////////////////// function traceparcours(villes) v=[villes;villes(1,:)] xbasc;square(0,0,1,1); plotframe([0,0,1,1],[0,1,0,1],[%f,%f]); plot2d(v(:,1),v(:,2),1,"000"); xset("mark",-9,4); plot2d(villes(:,1),villes(:,2),-9,"000")