from pylab import *
import numpy as np
import sys
def initial():
generation = [0,0,1,1,1,1,1,1,1,0,0,0,0,0]
generation = generation
return generation
def fitness(flag):
global transfer
transfer = []
newgeneration1 = pairing()
scores = [1,2,3,7,6,5,3]
if flag < 1:
generation = initial()
else:
generation = newgeneration1
transfer.append(generation)
transfer.append(scores)
print(transfer)
return transfer
def pairing():
transfer = fitness(i)
scores = transfer[1]
generation1 = transfer[0]
newgeneration = [1,0,1,0,0,0,0,0,1,0,1,1,1,1]
return newgeneration
initial()
for i in range(3):
fitness(i)
pairing()
if i == 3:
scores = fitness(i)
print("The following is the final generation: ")
print(pairing(i-1))
print("Here are the scores: ")
print(scores)
sys.exit()
上面是我在Python3.5中的遗传算法代码的简化版本,当我运行这个时,我得到一个错误,说:超过了最大递归深度,我试图让它做一次初始函数,然后在适应度和配对之间循环一定次数的迭代,问题是,pairing()创建新一代,fitness需要获取新一代并确定其适合度,然后它将其发送到pairing,然后创建另一个新一代..等等。你明白了。提前感谢您的帮助!你知道吗
问题是:
让我们来看看你的程序。。。你知道吗
initial()
fitness(i)
fitness
函数中调用paring
paring
函数中调用fitness
fitness
函数中调用paring
。。。。你知道吗这里有一个无限循环,因为
fitness
和paring
一直在互相调用解决方案如下:
我已经从你的paring函数中删除了一些不必要的行,程序现在正常工作了
输出如下:
相关问题 更多 >
编程相关推荐