1.基本原理:
群体中个体被选择的概率与其适应度值成正比。设个体表示为(i=1,2,n),n为群体总数,则其适应度值为f()(1,2,n),则群体中每个个体被选择的概率为:(i=1,2,n)
2.由组成一个轮盘,其中每个个体被选择的概率占这个轮盘的同样的比例,example:
个体 | 1 | 2 | 3 | 4 | 5 |
适应度值 | 2 | 4 | 6 | 8 | 10 |
个体被选择的概率(按照上式计算) | 0.07 | 0.13 | 0.2 | 0.27 | 0.33 |
3.累积概率:补充上表
个体 | 1 | 2 | 3 | 4 | 5 |
适应度值 | 2 | 4 | 6 | 8 | 10 |
个体被选择的概率(按照上式计算) | 0.07 | 0.13 | 0.2 | 0.27 | 0.33 |
累积概率 | 0.07 | 0.2 | 0.4 | 0.67 | 1 |
4.现在有了盘子,也用所有个体被选择的概率划分了整个盘子的比例,最后又计算了累积概率。现在开始进行轮盘赌;
先用rand()产生一个[0.1之间的]随机数,看看它落在了那个区间,就对应选择哪个个体,例如:这个随机数为0.02,那么个体1就被选中;如果为0.1,则个体2被选中;如果为0.3,则个体3选中。一次类推。
5.结束,参考代码网上有很多,有各种语言的。