我是python的新手,我正在尝试编写简单的遗传算法。
我在__init__()
代码:
import numpy as np
import random
class Genotype:
def __init__(self):
self.name = ChCreator.names(self)
self.fitness = ChCreator.fitness(self)
def mutation(self, m_prob):
fitness = self.fitness
if np.random.rand() < m_prob:
_mutation = random.randint(0, 6)
fitness = list(fitness)
if fitness[_mutation] == '0':
fitness[_mutation] = '1'
else:
fitness[_mutation] = '0'
return ''.join(fitness)
class ChCreator:
ids = []
id = 1
def names(self):
if ChCreator.id not in ChCreator.ids:
ChCreator.ids.append(ChCreator.id)
ChCreator.id += 1
return 'ch' + str(ChCreator.id-1)
def fitness(self):
return ''.join(random.choice('01') for _ in range(7))
正如您可以看到,在其他类的Genotype im调用方法中初始化self.name和self.fitness。当我想调用Genotype.mutation()时,问题就开始了 - 而不是对声明的适应值进行处理,而是创建一个非常明显但我无法解决的问题。 谁能帮助我?我希望在创建Geontype对象后有一个恒定的适应值。