J F*_*nch 4 python random genetic-algorithm
我正在编写一个遗传算法,其中我需要从二进制列表中选择 5 个数字genotype并翻转它们,所以 a 1→0和0→ 1。我尝试将我的代码放入一个循环中,range(1,6)但是当我这样做时,它仍然只更改其中一个数字。下面是我没有循环的原始代码,它随机选择一个二进制值并对其进行变异。除了列表中的 5 个元素之外,有没有人知道这样做的更好方法?
genotype = [1,0,0,1,0,0,1,1,1,0]
def mutate(self):
gene = random.choice(genotype)
if genotype[gene] == 1:
genotype[gene] = 0
else:
genotype[gene] = 1
return genotype
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以使用random.sample()函数从列表中获取 5 个唯一索引,然后循环翻转它们。像那样:
import random
genotype = [1,0,0,1,0,0,1,1,1,0]
random_five = random.sample(range(len(genotype)), 5)
for i in random_five:
genotype[i] = 0 if genotype[i] == 1 else 1
print(genotype)
Run Code Online (Sandbox Code Playgroud)
输出是:
[1, 1, 0, 1, 1, 0, 0, 1, 0, 1]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |