Bonjour à tous,

J'ai un problème avec l'algorithme suivant :

Code MATLAB : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
vitesse=rand(4,1);
inertie=0.8;
essaim=4;
% Calcul des nouvelles vitesses de chaque particule : 
for i=1:1:essaim
    c1=rand(1);
    c2=1-c1;
    vitesse(i,1)=inertie*vitesse(i,1)
    vitesse(i,1)=vitesse(i,1)+c1*(best_perso(i,1)-fitness(i,iteration+1))
    vitesse(i,1)=vitesse(i,1)+c2*(best_voisinage(i,1)-fitness(i,iteration+1))
end

Au moment où i=2, lors de l'application de la dernière formule, le vecteur entier est réinitialisé à 0. La formule n'est pas appliquée uniquement à la deuxième composante du vecteur vitesse !

Pendant le calcul, les vecteurs ont les valeurs suivantes :

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
best_perso =
 
  1.0e+009 *
 
    1.6850
    1.7000
    1.6951
    1.6931
 
fitness =
 
  1.0e+009 *
 
    0.0000    1.6850
    0.0000    1.7000
    0.0000    1.6951
    0.0000    1.6931
 
best_voisinage =
 
  1.0e+009 *
 
    1.6850
    1.6850
    1.6931
    1.6850
Une idée de l'erreur qui peut réinitialiser l'intégralité de mon vecteur vitesse à 0 ?

Merci beaucoup pour votre aide,
Noëlie