1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
% Algorithme
VectorO = zeros(N,4);
NormesO = zeros(N,1);
All_Best_ways = zeros(N,1);
Point = zeros(N,3);
for i = 1 : N
VectorO(i,1:3) = P(i,1:3) - Origine(1,1:3);
NormesO(i) = sqrt((VectorO(i,1))^2+(VectorO(i,2))^2+(VectorO(i,3))^2);
end
Emplacement_Best_way = find(NormesO == min(NormesO(:)));
if length(Emplacement_Best_way) ~= 1 % Si il y a plusieurs plus courts chemins
Emplacement_Best_way(2:end) = []; % On ne prend que le premier
end
Best_way = min(NormesO);
All_Best_ways(1) = Best_way;
P(Emplacement_Best_way,4) = 1; % Le système est visité
Point(1,:) = P(Emplacement_Best_way,1:3);
if Point(1,:) == Terre(1:3) % Si la Terre est atteinte
Jusqua_Terre = sum(All_Best_ways);
end
Vector = zeros(N-1,4);
Normes = zeros(N-1,1);
for j = 2 : N
for i = 1 : N
if i ~= Emplacement_Best_way
if P(i,4) == 0
Vector(i,1:3) = P(i,1:3) - P(Emplacement_Best_way,1:3);
Normes(i) = sqrt((Vector(i,1))^2+(Vector(i,2))^2+(Vector(i,3))^2);
else
Normes(i) = inf;
end
else
Normes(i) = inf;
end
end
Emplacement_Best_way = find(Normes == min(Normes(:)));
if length(Emplacement_Best_way) ~= 1 % Si il y a plusieurs plus courts chemins
Emplacement_Best_way(2:end) = []; % On ne prend que le premier
end
Best_way = min(Normes);
All_Best_ways(j) = Best_way;
P(Emplacement_Best_way,4) = 1; % Le système est visité
Point(j,:) = P(Emplacement_Best_way,1:3);
if Point(j,:) == Terre(1:3) % Si la Terre est atteinte
Jusqua_Terre = sum(All_Best_ways);
break % On arrête l'algorithme
end
end |
Partager