Investigación de operaciones

Problema del agente viajero – TSP

Travelling Salesman Problem

En el Problema del Agente Viajero – TSP (Travelling Salesman Problem), el objetivo es encontrar un recorrido completo que conecte todos los nodos de una red, visitándolos tan solo una vez y volviendo al punto de partida, y que además minimice la distancia total de la ruta, o el tiempo total del recorrido.

Este tipo de problemas tiene gran aplicación en el ámbito de la logística y distribución, así como en la programación de curvas de producción.

El problema del agente viajero tiene una variación importante, y esta depende de que las distancias entre un nodo y otro sean simétricas o no, es decir, que la distancia entre A y B sea igual a la distancia entre B y A, puesto que en la práctica es muy poco probable que así sea.

La cantidad de rutas posibles en una red está determinada por la ecuación:

(n-1)!

Es decir que en una red de 5 nodos la cantidad de rutas probables es igual a (5-1)! = 24, y a medida que el número de nodos aumente la cantidad de rutas posibles crece factorialmente. En el caso de que el problema sea simétrico la cantidad de rutas posibles se reduce a la mitad, es decir:

( (n-1)! ) / 2

Lo cual significa un ahorro significativo en el tiempo de procesamiento de rutas de gran tamaño.

Métodos de solución

La complejidad del cálculo del problema del agente viajero ha despertado múltiples iniciativas por mejorar la eficiencia en el cálculo de rutas. El método más básico es el conocido con el nombre de fuerza bruta, que consiste en el cálculo de todos los posibles recorridos, lo cual se hace extremadamente ineficiente y casi que se imposibilita en redes de gran tamaño. También existen heurísticos que se han desarrollado por la complejidad en el cálculo de soluciones óptimas en redes robustas, es por ello que existen métodos como el vecino más cercano, la inserción más barata y el doble sentido. Por último se encuentran los algoritmos que proporcionan soluciones óptimas, como el método de branch and bound (ramificación y poda), que trabaja el problema como un algoritmo de asignación y lo resuelve por medio del método simplex.


Método de la fuerza bruta

El método de la fuerza bruta no implica la aplicación de ningún algoritmo sistemático, tan solo consiste en explorar todos los recorridos posibles. Considerando la siguiente red simétrica, los caminos posibles se reducen a la mitad:

TSP - Bryan Salazar López

Posibles rutas

A – B – D – C – A = 9 + 15 + 4 + 7 = 35 km

A – B – C – D – A = 9 + 10 + 4 + 8 = 31 km

A – C – B – D – A = 7 + 10 + 15 + 8 = 40 km

Rutas simétricas

A – D – C – B – A = 8 + 4 + 10 + 9 = 31 km

A – C – D – B – A = 7 + 4 + 15 + 9 = 35 km

A – D – B – C – A = 8 + 15 + 10 +7 = 40 km


Método del vecino más cercano

El método del vecino más cercano es un algoritmo heurístico diseñado para solucionar el problema del agente viajero, no asegura una solución óptima, sin embargo suele proporcionar buenas soluciones, y tiene un tiempo de cálculo muy eficiente. El método de desarrollo es muy similar al utilizado para resolver problemas de árbol de expansión mínima.

El método consiste en una vez establecido el nodo de partida, evaluar y seleccionar su vecino más cercano. En este caso:

En la siguiente iteración habrá que considerar los vecinos más cercanos al nodo C (se excluye A por ser el nodo de origen):

En la siguiente iteración los vecinos más cercanos de D serán C, con quien ya tiene conexión, A quién es el nodo de origen y B, por esta razón B se debe seleccionar por descarte. Al estar en B todos los nodos se encuentran visitados, por lo que corresponde a cerrar la red uniendo el nodo B con el nodo A, así entonces la ruta solución por medio del vecino más próximo sería A, C, D, B, A = 7, 4, 15, 9 = 35 km.

Este es un caso en el que a pesar de tener una red compuesta por pocos nodos, el método del vecino más cercano no proporciona la solución óptima, la cual calculamos con el método de fuerza bruta como 31 km.


Método de Branch and Bound – WinQSB

El método de branch and bound (ramificación y poda), nos proporciona una solución óptima del problema del agente viajero, calculando mediante el algoritmo simplex la solución del modelo. A medida que aumente el tamaño de la red el método puede tardar gran cantidad de tiempo en resolverse, sin embargo para redes de mediano tamaño es una excelente alternativa.

En este caso y considerando la red que hemos desarrollado mediante los métodos anteriores, utilizaremos el módulo Network Modeling del software WinQSB para encontrar la solución óptima.

Bryan Salazar López

Ingeniero Industrial y Magíster en Logística Integral especializado en productividad y modelamiento de procesos bajo dimensiones de sostenibilidad, industria 4.0, transformación digital y modelos de optimización. Docente universitario de pregrado y posgrado con experiencia en la enseñanza de estos temas. Fundador de Ingenieriaindustrialonline.com, un sitio en donde se recogen las aportaciones de investigaciones, artículos y referencias relevantes para la industria.

3 comentarios

  1. Hola, tengo una tarea para el día domingo y la verdad me gustaría que me ayudara… Ya que creo que tiene los suficientes conocimientos para poder ayudarme.
    De verdad le agradecería bastante, bonita noche.

  2. Hola, estoy interesado en saber cual es el método mas eficaz en encontrar la solución óptima, cual es su Big O.
    Gracias.
    Saludos.

    1. Hola Juan Carlos, la metaheurística que suele ser más eficiente para abordar problemas de enrutamiento de vehículos es la búsqueda local guiada. Si quieres profundizar respecto a solucionadores, por ejemplo, te recomiendo revisar el MiniZinc Challenge.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Botón volver arriba