uniform crossover(均匀交叉),遗传算法(Genetic Algorithm,GA),python
假设有双亲p1和p2的二进制基因染色体表达,子代的基因以等概率(50%)来自双亲中之一,如图:
import random# 双亲染色体p1 = [1, 0, 0, 1, 1]p2 = [0, 0, 1, 1, 0]def uniform_crossover():c = [] # 子代for i in range(len(p1)):r = random.randint(1, 2) # 等概率产生1和2if r == 1: # 如果是1,则取p1[i]c.append(p1[i])if r == 2: # 如果是2,则取p2[i]c.append(p2[i])print(c)if __name__ == '__main__':for i in range(10):uniform_crossover()
运行输出:
遗传算法(Genetic Algorithm,GA)的轮盘赌选择,python_zhangphil的博客-CSDN博客程序跑了10次,每一次在rws()函数中产生一个随机概率数值r,然后在rws()函数内部比较r与累积概率的大小,确定被选中的概率是p[?输出结果证实了我们的猜想,p[1]=0.49被选中的概率最高,在10次的随机筛选中,p[1]=0.49被选中了4次(4/10)。显然,p(s2)=0.49概率最大,被选中的概率最高。遗传算法(Genetic Algorithm,GA)的轮盘赌选择,python。一个简单的例子说明在遗传算法中使用的轮盘赌方法。/zhangphil/article/details/128906624