この関数が何をするのか知りたい:
def Recocido(tour1 = []):
    # tour1 = tour1[:]
    izquierda = random.randrange(len(tour1))
    derecha = 0
    while(True):
        derecha = random.randrange(len(tour1))
        if (derecha != izquierda):
            #tour1[izquierda], tour1[derecha] = tour1[derecha], tour1[izquierda]
            break
    return tour1
tour1を「アニール」するためにこの機能を実行していますが、うまく機能しているかどうかはわかりません。私は特にコメント行 (#) に悩まされています。誰かが私が何をしているのかを教えてください!? それとも、うまくやればいいですか?
編集:
これは私のSAの部分です:
tamañoTour = len(matriz)
inicioTour = []
inicioTour = Tour(tamañoTour)
print(inicioTour)
costoTourInicio = PesoTour(inicioTour, matriz)
print(costoTourInicio)
nuevoTour = []
temp = 1000000000
#i = 0
while(temp > 0.000000001):
    for j in range(40):
        nuevoTour = Recocido(inicioTour)
        #print(nuevoTour)
        costoNuevoTour = PesoTour(nuevoTour, matriz)
        #print(costoNuevoTour)
        if (costoNuevoTour < costoTourInicio):
            inicioTour = nuevoTour
            #temp = temp*0.99
        else:
            numero = random.random()
            deltaZ = costoNuevoTour - costoTourInicio
            prob = math.exp(-(deltaZ/temp))
            if (numero < prob):
                inicioTour = nuevoTour
                #temp = temp*0.99
    #i += 1
    temp = temp*0.99
#print(inicioTour)
print(nuevoTour)
#print(costoTourInicio)
print(costoNuevoTour)
#print(i)
matriz は 52x52 配列で、berlin52 http://www.iwr.uni-heidelberg.de/groups/comopt/software/TSPLIB95/tsp/のパーツ間の距離です。
その他の機能は次のとおりです。
def Tour(tamaño):
    tour1 = []
    for i in range(tamaño):
        while(not False):
            valor = random.randrange(tamaño)
            if valor not in tour1:
                tour1.append(valor)
                break
    return tour1
def PesoTour(tour1 = [], matriz = [[]]):
    valor = 0
    i = 0
    while(i < len(tour1)):
        if (i == len(tour1) - 1):
            valor = valor + matriz[tour1[i]][tour1[0]]
        else:
            valor = valor + matriz[tour1[i]][tour1[i+1]]
        i += 1
    return valor
コメントありがとうございます。