小编Mic*_*gas的帖子

TSP,算法陷入局部最小值

我正在努力实现基于模拟退火的程序来解决旅行商问题。我得到的所有解决方案都不令人满意,我也不知道如何改善实施。显然,我不是在关注基准,而只是在寻找视觉上可接受的最短路径。如果有人能启发我,我将不胜感激。

# weight function, simple euclidean norm
def road(X,Y):
    sum = 0
    size = len(X) -1
    for i in range(0,size):
        sum +=math.sqrt((X[i]-X[i+1])**2 + (Y[i]-Y[i+1])**2)

    return sum   

def array_swap(X,Y,index_1,index_2):
    X[index_1],X[index_2] = X[index_2],X[index_1]
    Y[index_1],Y[index_2] = Y[index_2],Y[index_1]


def arbitrarty_swap(X,Y):
    ran = len(X)-1
    pick_1 = random.randint(0,ran)
    pick_2 = random.randint(0,ran)

    X[pick_1],X[pick_2] = X[pick_2],X[pick_1]
    Y[pick_1],Y[pick_2] = Y[pick_2],Y[pick_1]

    return pick_1, pick_2

N = 40

X = np.random.rand(N) * 100
Y = np.random.rand(N) * 100


plt.plot(X, Y, '-o')
plt.show()


best = road(X,Y)
X1 = X.copy()
Y1 = Y.copy() …
Run Code Online (Sandbox Code Playgroud)

python simulated-annealing traveling-salesman

3
推荐指数
1
解决办法
251
查看次数