遗传算法(Genetic Algorithm,GA)的轮盘赌选择,python
Posted zhangphil
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了遗传算法(Genetic Algorithm,GA)的轮盘赌选择,python相关的知识,希望对你有一定的参考价值。
遗传算法(Genetic Algorithm,GA)的轮盘赌选择,python
一个简单的例子说明在遗传算法中使用的轮盘赌方法。
(1)假设有一个 初始种群,01二进制编码十进制数值:
s1= 13 (01101)
s2= 24 (11000)
s3= 8 (01000)
s4= 19 (10011)
(2)计算适应度,假设适应度函数为f(s)=s^2 ,则:
f(s1) = f(13) = 13^2 = 169
f(s2) = f(24) = 24^2 = 576
f(s3) = f(8) = 8^2 = 64
f(s4) = f(19) = 19^2 = 361
接下来的,
(3)染色体选择概率:
(4)染色体累积概率:
选择概率形成的轮盘:
显然,p(s2)=0.49概率最大,被选中的概率最高。下面用python写一个轮盘选择实现,验证我们的猜想:
import random
p = [0.14, 0.49, 0.06, 0.31]
#遗传算法-轮盘赌选择
def rws():
# r为0到1之间的随机数
r = random.uniform(0, 1)
idx = 0
sm = 0
for i in range(len(p)):
# 产生的随机数在sm~sm+p[i]间则认为选中i
# 因此i被选中的概率是p[i]
sm = sm + p[i]
if r <= sm:
idx = i
break
return idx
if __name__ == '__main__':
for i in range(10):
i = rws()
print(p[i])
程序跑了10次,每一次在rws()函数中产生一个随机概率数值r,然后在rws()函数内部比较r与累积概率的大小,确定被选中的概率是p[?]
运行输出:
0.14
0.31
0.49
0.31
0.31
0.49
0.31
0.14
0.49
0.49
输出结果证实了我们的猜想,p[s2]=0.49被选中的概率最高,在10次的随机筛选中,p[s2]=0.49被选中了4次(4/10)。
以上是关于遗传算法(Genetic Algorithm,GA)的轮盘赌选择,python的主要内容,如果未能解决你的问题,请参考以下文章
遗传算法(Genetic Algorithm,GA)实现数据排序,python
遗传算法(Genetic Algorithm,GA)的轮盘赌选择,python
遗传算法(Genetic Algorithm,GA)的轮盘赌选择,python
uniform crossover(均匀交叉),遗传算法(Genetic Algorithm,GA),python