问题描述
因此,我正在使用两种边缘交换方法为所有孩子交换纵横交错的边缘。这将时间从几分钟增加到几个小时 我试图做到最好,但结果却不尽如人意 这是我的遗传算法代码: 初始化人口后。 D是距离矩阵
for i in range(genrations):
selected=solution[0:25]
R=fitness(selected)
parents=mk_parent(selected,fitness(selected),bestsize)
children=babies(parents,bestsize)
solset=mutate_children(children,rate)
solved=[]
for k in range(len(children)):
solved.append(edge_exchange(solset[k],D))
solution=make_sol(solved)
for j in range(0,bestsize):
solution.append(selected[j])
solution=sortsol(solution)
#print(solution)
best=solution[0]
performance.append((best[1],i))
i+=1
print((best[1],i),'\n')
return (best,performance)
我正在对所有孩子进行两次边缘交换或两次选择交换。我该如何优化呢?
这是我正在使用的边缘交换代码:
def edge_exchange(route,D):
best = route
improved = True
while improved:
improved = False
for a in range(1,len(route) - 2):
for b in range(a + 1,len(route)):
if b - a == 1: continue # changes nothing,skip then
newroute = route[:]
newroute[a:b] = route[b - 1:a - 1:-1] #swap routes
if cost(newroute,D) < cost(best,D):
best = newroute
improved = True
route = best
return best
感谢您的帮助
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)