我混淆了遗传算法中轮盘赌的选择算法如下

for i=1 to N
 x=random[0,1];
 k=1;
 while k<N&&x>cusum
   k=k+1
 end
tmp_P[i]=P[k];
end

对吗我搞不清当时的情况
第一条路:
 while k<N&&x>cusum
   k=k+1
 end
 tmp_P[i]=P[k];

或第二条路
 while k<N&&x>cusum
   k=k+1;
   tmp_P[i]=P[k];
end

哪个是正确的?非常感谢你

最佳答案

第一种方法是正确的。
你通过你的cumsum数组,直到你找到一个大于你的随机数,并选择个人。
但是,我希望cusum变量应该是一个数组,您可以使用:

 while k<N && x>cusum[k]

07-27 22:37