Closed canek-pelaez closed 5 years ago
El código correcto para recorrer e imprimir las distancias calculadas en el map es el siguiente:
for i := 0; i < len(cities); i++ {
for j := i+1; j < len(cities); j++ {
fmt.Printf("%d:%d:%2.2f\n", cities[i].Id, cities[j].Id, citiesDistance[cities[i].Id][cities[j].Id])
}
}
En lugar de poner citiesDistance[i][j] se pone citiesDistance[cities[i].Id][cities[j].Id]
Ya con eso las primeras líneas son iguales a las que tu muestras que se imprime en tu implementación
Por lo que creo que el error no está pesoAumento y creo si se está creando correctamente el map citiesDistance
También cree la función aleatorizaSolucion para aleatorizar la solucion entrada como comentas
OK, noté que no estabas revolviendo la solución inicial (generar una permutación aleatoria, para que con cada semilla comiences en un punto distinto del espacio de búsqueda, y al hacerlo me di cuenta de que hay problemas con la función de costo. En la línea [1] agregué lo siguiente:
Y se imprime lo siguiente:
No todas son cero, pero casi todas. En mi implementación se imprime:
El problema obviamente está en
pesoAumentado()
[2], y la verdad no lo encuentro. Tienes que reparar esa función, de otra forma nada más va a funcionar. Checa qué es lo que pasa que no se llena bien tu arreglocitiesDistance
.[1] https://github.com/karlycaramelo/HOC/blob/master/go/tsp.go#L604 [2] https://github.com/karlycaramelo/HOC/blob/master/go/tsp.go#L230