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
|
function r=reproduction3(p1,p2)
% Fonction reproduction
% fait une troncature de p1 à différent rang et accole les valeurs de
% p2 en prenant gare qu'elles ne se trouvent pas déjà dans la troncature
% de p1
% exemple : p1= [1 2 3 4 5 6]
% p2= [3 6 4 1 2 5]
% r =1 3 6 4 2 5
% 1 2 3 6 4 5
% 1 2 3 6 4 5
% 1 2 3 4 6 5
% 1 2 3 4 5 6
% 1 2 3 4 5 6
n1=size(p1)
n=n1(1,2)
r=zeros(n,n)
for k=1:n %%%Ces deux boucles créent les n troncature de p1
for j=1:k %%%et les placent dans une matrice de dim n*n
r(k,j)=p1(j)
end
end
for m=1:(n-1) %%%Boucle parcourant les différentes lignes
for o=(m+1):n %%%Boucle parcourant les différentes colonne d'une ligne fixée
p=(p2(o-m)==r(m,:)) %%%Principe : comparer la première valeur de p2
s=0 %%%avec celles de la première ligne de la matrice
t=0 %%%des troncatures
if p==zeros(1,n) %%%Si la matrice ne comporte que des zéros
else %%%cela signifie que p2(1) différent de toutes
s=s+1 %%%les valeurs de la première ligne de la matrice
t=t+1 %%%sinon, incrémente s (qui va jouer le rôle de valeur
end %%%d'arrêt du "while") et t (qui compte le décalage à opérer).
while s==1
p=(p2(o-m+t)==r(m,:)) %%%Principe identique
s=0
if p==zeros(1,n)
else
s=s+1
t=t+1
end
end
r(m,o)=p2(o-m+t)
end
end |
Partager