如何解决我的交叉功能有问题吗?
我在 python 上编写差分进化,有时(很少)我会收到太多递归调用的错误。我想改进编码功能,所以认为这是一个很好的提问地方。
我在另一个函数中初始化了一个突变向量,然后通过输入相关参数生成一个试验向量。 random_select
基本上只是从我的候选人群中随机选择一个向量(这里称为 vectors
)vector
是人口中的一个候选人。 H 和 K 是我决定用于优化问题的超参数。
这是我的代码:(numpy 为 np,numpy.random 为 npr)
def random_select(arr: np.array,size: int = 1):
return arr[np.random.choice(len(arr),size=size,replace=False)]
def generate_Mutant(vector,K,F,vectors):
Xr1 = random_select(vectors)[0]
Xr2 = random_select(vectors)[0]
Xr3 = random_select(vectors)[0]
return vector + K*(Xr1 - vector) + F*(Xr2 - Xr3)
def Crossover(Crossover_probability,mutant,vector,vectors,boundaries):
trial = []
for item in range(len(mutant)):
if npr.random_sample() > Crossover_probability:
trial.append(mutant[item])
else:
trial.append(vector[item])
flag = 0
for index in range(len(trial)):
if trial[index] > boundaries[index][0] or trial[index] < boundaries[index][1]:
flag = 1
mutant = generate_Mutant(vector,vectors)
return Crossover(Crossover_probability,boundaries)
if flag == 0:
return np.array(trial)
有什么办法可以改进这个功能吗?我错过了一些可以让我做得更好的函数或库?某种编码方式比我目前使用的要好得多?任何事情都有帮助,我只是想提出意见。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。