轮盘赌选择法

转自http://www.cnblogs.com/heaad/archive/2010/12/23/1914725.html

以及https://www.cnblogs.com/adelaide/articles/5679475.html

轮盘赌选择法

又称比例选择方法.其基本思想是:各个个体被选中的概率与其适应度大小成正比.

具体操作如下:
(1)计算出群体中每个个体的适应度f(i=1,2,…,M),M为群体大小;
(2)计算出每个个体被遗传到下一代群体中的概率;

《轮盘赌选择法》

(3)计算出每个个体的累积概率;

《轮盘赌选择法》(q[i]称为染色体x[i] (i=1, 2, …, n)的积累概率)

《轮盘赌选择法》

 

(4)在[0,1]区间内产生一个均匀分布的伪随机数r;
(5)若r<q[1],则选择个体1,否则,选择个体k,使得:q[k-1]<r≤q[k] 成立;

(6)重复(4)、(5)共M次

代码实现

/*
* 按设定的概率,随机选中一个个体
* P[i]表示第i个个体被选中的概率
*/
int RWS()
{
m =0;
r =Random(0,1); //r为0至1的随机数
for(i=1;i<=N; i++)
{
/* 产生的随机数在m~m+P[i]间则认为选中了i
* 因此i被选中的概率是P[i]
*/
m = m + P[i];
if(r<=m) return i;
}
}

    原文作者:蚁群算法
    原文地址: https://blog.csdn.net/xuxinrk/article/details/80158786
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞