Vida Artificial

Investigación

Artículos

Autor

Otros

Método de Monte Carlo. Problema del viajero

Uno de los problemas difíciles de resolver es el problema del viajero: Dado un número N de ciudades a recorrer, ¿cual es el camino con el menor costo dada la tabla que se ve a continuación?:

En la imagen se observa un tablero de costos, en el que señala cual es el costo de ir de una ciudad a otra, por ejemplo ir de la ciudad 2 a la ciudad 7 cuesta $5. Por supuesto si la ciudad destino y origen son las mismas, no hay tal viaje por lo que cuesta $0. Algunos se preguntaran porque ir de A a B cuesta diferente que ir de B a A, la respuesta es sencilla: Si el viento sopla de Oriente a Occidente y usted tiene un velero, cuesta muy poco viajar de Oriente a Occidente, pero si es la ruta contraria tendrá que recoger las velas y usar motor, un costo mucho mayor.

El objetivo es pasearse por todas las ciudades minimizando el costo, pero es un problema en el que hay que probar N! (N factorial) posibles soluciones para buscar la ruta de menor costo (un número muy grande) que aumenta enormemente por cada ciudad adicionada.

La solución utilizando Método Monte Carlo es:

1. Genere una ruta inicial y evalúela
 



(1-2) + (2-8) + (8-3) + (3-7) + (7-6) + (6-10) + (10-5) + (5-4) + (4-9) =
3 + 4 + 3 + 4 + 9 + 8 + 5 + 3 + 3 = 42


2. Haga un cambio aleatorio a esa ruta y vuelva a ensayarla, si es mejor entonces esa nueva ruta se selecciona, si no entonces se deja la ruta anterior. En el ejemplo se intercambia las ciudades 3 y 4 y esta es la nueva ruta.




3. Determinar si es suficientemente buena la selección en caso contrario vuelva al paso 2.

El siguiente programa escrito en C++ (compatible con Linux) implementa esta búsqueda: genera un tablero de costos al azar y luego busca la ruta de menor costo.

Descargue el fuente

1