我正在尝试使用神经网络和遗传算法,但是我遇到了问题。
因此任务非常简单: 我有运动的圈子,如果他们在图片中停留的时间比其他人更长,那么他们的身体状况就会比其他人好。
我的方法是:
所有交叉和突变只会改变神经元和给定输入的权重。
现在的问题是:
有没有机会,使用这些方法我会得到任何好的结果?
即使我只复制最好的一个来替换所有20名新球员,他们也会变得越来越糟(中间有一些小的“超人”)
我什至可以用这种方式解决这个问题,还是不应该混合使用这两种方法?
编辑:这是我的交叉方法,基本上是生成一个随机数,以选择从一个神经元复制的权重数量,直到切换到另一神经元为止。
def crossover(gen_1, gen_2, neuron):
new_genes = dict()
limit = random.randint(0, len(Definitions.array_index)-1)
for x in range(0, limit):
new_genes[Definitions.array_index[x]] = gen_1.neuron[neuron].weights[Definitions.array_index[x]]
for x in range(limit, len(Definitions.array_index)):
new_genes[Definitions.array_index[x]] = gen_2.neuron[neuron].weights[Definitions.array_index[x]]
return new_genes