如何通过两次选择交换来优化此TSP算法

问题描述

因此,我正在使用两种边缘交换方法为所有孩子交换纵横交错的边缘。这将时间从几分钟增加到几个小时 我试图做到最好,但结果却不尽如人意 这是我的遗传算法代码: 初始化人口后。 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 (将#修改为@)