遗传算法中的轮盘赌选择

Roulette Wheel Selection in genetic algorithm

我对遗传算法中的轮盘赌选择感到困惑。算法如下

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 条件

第一种方式:

 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 数组,直到你找到一个比你的随机数大的人和 select 那个人。

但是,我希望您的 cusum 变量应该是一个数组,您可以使用:

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