2本の染色体を組み換え(交差)させたい(遺伝的アルゴリズム)。これは私の疑似コードです。どこに問題がありますか?
popuは 50 * 10 の行列です。(私の母集団)
popsize =50を
選択すると、1*50 の行列になります (フィットネス エバリュエーターで最適な個人を選択します) 。
function pop = recombin( popu,selected )
global popsize;
pop=zeros(50,10);
for i=1:popsize/2
rc=randi([1,10]);
for j=1:10
if(j<=rc)
pop(i,j)=popu(selected(i),j);
pop(i+25,j)=popu(selected(i+25),j);
else
pop(i,j)=popu(selected(i+25),j);
pop(i+25,j)=popu(selected(i),j);
end
%keyboard
end
end
end
私のコードは (構文的に) 正しく動作します。しかし、これが一般的なアルゴリズムで2つのクロムソームを組み合わせる正しい方法かどうかはわかりません:(