轮盘赌算法

1.基本原理:

    群体中个体被选择的概率与其适应度值成正比。设个体表示为x_{i}(i=1,2\cdots,n),n为群体总数,则其适应度值为f(x_{i})(1,2\cdots,n),则群体中每个个体被选择的概率为:P(x_{i})= \frac{f(x_i)}{\sum _{i=1}^nf(x_i)}(i=1,2\cdots,n)

2.由1=P(x_1)+P(x_2)+\cdots+P(x_n)组成一个轮盘,其中每个个体被选择的概率占这个轮盘的同样的比例,example:

轮盘表格化示例
个体12345
适应度值246810
个体被选择的概率(按照上式计算)0.070.130.20.270.33

3.累积概率:补充上表

个体12345
适应度值246810
个体被选择的概率(按照上式计算)0.070.130.20.270.33
累积概率0.070.20.40.671

 

4.现在有了盘子,也用所有个体被选择的概率划分了整个盘子的比例,最后又计算了累积概率。现在开始进行轮盘赌;

     先用rand()产生一个[0.1之间的]随机数,看看它落在了那个区间,就对应选择哪个个体,例如:这个随机数为0.02,那么个体1就被选中;如果为0.1,则个体2被选中;如果为0.3,则个体3选中。一次类推。

5.结束,参考代码网上有很多,有各种语言的。

  • 17
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值