Bonsoir,

J'ai écris un algorithme qui permet, en gros, de trouver le point le plus proche de chaque point dans l'espace.
Le fait est que cet algorithme est lui-même imbriqué dans 2 boucles for. Au final le temps de calcul se compte en heures.
J'aimerais savoir où je pourrais utiliser [parfor] dans mon code.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Merci d'avance pour votre aide !