a no, scusa...in poche parole P sono le colonne. Ovviamente cambia il costo. Ma quindi avrei solo una funzione?
Ma come creo il primo vettore con cui devo fare lo scambio?prendo direttamente la prima riga? non capisco bene l'inizio
sum( C( sub2ind(size(C), 1:size(C,1), P) ) )
for j=1:50
k=1;
%r=randperm(15)
for l=randperm(15)
Popolazione(j, k)=C(l, k);
k=k+1;
end
end
function [C] = crossover(A, B)
C = B; % Partiamo da B
i = randi(15);
j = randi(15);
% scelgo i due valori a caso
if i > j
tmp = i
i = j;
j = i;
end
for k=i:j
% Scambio i valori in modo che C(k) sia uguale a A(k) in [i, j]
if C(k) ~= A(k)
s = find(C == A(k));
C(s) = C(k);
C(k) = A(k);
end
end
end
function [C] = crossover(A, B)
C = A; % Inizializzo il vettore C in modo che sia uguale ad A
i = randi(15); % scelgo un elemento da cui partire
initial = A(i); % memorizzo il valore che mi serve in seguito come condizione di fine
C(i) = B(i);
while initial ~= C(i)
i = find(A == C(i)); % trova la posizione originale del valore sostituito
C(i) = B(i); % sostuitisci il valore corrispondente trovato in B(i) in quella posizione
end
end
Visitano il forum: Nessuno e 1 ospite