Está en la página 1de 24

Problema del Agente Viajero

Travelling salesman problem


(TSP)

Dra. Iris Abril Martínez Salazar


Problema del agente viajero
• En el TSP, un agente viajero debe visitar una
sola vez cada una de las n ciudades donde
vende su mercancía y regresar a la ciudad de
partida.
Problema del agente viajero
• El objetivo de este problema, es el de
determinar el orden en que las ciudades
deben ser visitadas, de manera que el costo
total (que puede estar expresado en distancia
recorrida, tiempo de viaje, costo económico, u
otro) se minimice
Travelling Salesman Problem
• Considera la siguiente situación:

7 20
7
20
21 21 3 15
16 15 2
16
25
25
4

El tour: 1-2-3-4-1 con costo: 20+15+16+21 =72


es una solución factible al TSP.
• Si se tienen n ciudades.
• Se define:

• Dado que dij es la distancia de la ciudad i a la ciudad j.


FUNCIÓN OBJETIVO?

RESTRICCIONES?
• Si se tienen n ciudades.
• Se define:

• Dado que dij es la distancia de la ciudad i a la ciudad j.


FUNCIÓN OBJETIVO?

RESTRICCIONES?
• Son suficientes restricciones?
Cada nodo tiene un arco de salida,
Después de cada ciudad, se visita otra ciudad.

Cada nodo tiene un arco de entrada.


Cada ciudad es visitada después de alguna ciudad
• Son suficientes restricciones?
Cada nodo tiene un arco de salida,
Después de cada ciudad, se visita otra ciudad.

Cada nodo tiene un arco de entrada.


Cada ciudad es visitada después de alguna ciudad

1
1
6
2
6
2

5 3
5 3
4
4

x12=x23=x31=x54=x46=x65= 1
Estas restricciones son necesarias,
pero no son suficientes.
Se deben de incluir restricciones que garanticen conectividad, imponiendo
que el agente viajero debe de pasar de un conjunto de ciudades a otro.

1 2

3
Se deben de incluir restricciones que garanticen conectividad, imponiendo
que el agente viajero debe de pasar de un conjunto de ciudades a otro.

1 2
Subtour de:
2 nodos
5 2 arcos
4
Subtour de:
3 3 nodos
3 arcos

Para que no existiera subtours habría que establecer que entre cada subconjunto de k
nodos existen a lo más k-1 arcos.
Sea N =conjunto de nodos en el grafo (todas las ciudades a visitar)
Y S= cada subconjunto posible de nodos (cada grupo de 1, 2, 3, hasta n ciudades)

෍ ෍ 𝑥𝑖𝑗 ≤ 𝑆 − 1 ∀𝑆 ∁ 𝑁, 2≤ 𝑆 ≤𝑛−1
𝑖∈𝑆 𝑗∈𝑆

¿Por que para subconjuntos entre 2 y n-1?


1 2

෍ ෍ 𝑥𝑖𝑗 ≤ 𝑆 − 1 ∀𝑆 ∁ 𝑁, 2≤ 𝑆 ≤𝑛−1
𝑖∈𝑆 𝑗∈𝑆

Sea S={1,5,3}. ¿Cómo sería para S={2,4}?


1 2

෍ ෍ 𝑥𝑖𝑗 ≤ 𝑆 − 1 ∀𝑆 ∁ 𝑁, 2≤ 𝑆 ≤𝑛−1
𝑖∈𝑆 𝑗∈𝑆

Sea S={1,5,3}. ¿Cómo sería para S={2,4}?

𝑥15 + 𝑥13 + 𝑥51 + 𝑥53 + 𝑥31 + 𝑥35 ≤ 2 𝑥24 + 𝑥42 ≤ 1

El problema con estas restricciones es que crecen muy rápido en relación a n.


Complejidad:

Si se tienen n ciudades ,
¿cuántas combinaciones
se necesitan para
determinar la ruta más
corta?
Habiendo definido la
ciudad de partida
(da igual cualquier
ciudad),

¿Cuántas opciones
hay para seleccionar
la segunda ciudad a
visitar?

(n-1)
Suponiendo que ya
se definió la segunda
ciudad a visitar,

¿Cuántas posibles opciones hay


para la seleccionar la tercera
ciudad a visitar?
(n-2)
Serían entonces (n-3) combinaciones para la 4ta ciudad
a visitar, (n-4) para la 5ta y así sucesivamente.

Si se multiplican estos valores, para saber el número total de


combinaciones, sería (n-1)(n-2)(n-3)(n-4)=(n-1)!

Si se multiplican estos valores, para saber el número total de


combinaciones, sería (n-1)(n-2)(n-3)(n-4)=(n-1)!

Si se trataran de 100 ciudades, serían:

(100-1)! =
9332621544394420000000000000000000000000000000000
0000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000
000000000 combinaciones
Algoritmos heurísticos
• Nearest-neighbor algorithm
– El vecino más cercano.
• Algoritmos de inserción
Algoritmo del Vecino más Cercano
TSP
1. Inicie con un tour parcial, el cual consiste en un
vértice arbitrario.

2. Si el tour parcial es
T = {v1, v2, …, vk}
Con k < n, seleccionar vk+1 el vértice más cercano a
vk que no esté en el tour e insértelo al final del tour.

3. Si k = n parar.
Algoritmos de inserción más cercana
TSPi como nodo de inicio.
1. Escoge un nodo arbitrario
2. Encuentra el nodo más cercano a i. El nodo j para el
cual la distancia cij es la menor. Forma el subtour T=i-j-i.
3. Encuentra un nodo k que no esté en el subtour T que
esté lo más cercano posible de cualquier nodo del
subtour T.
4. Encuentra un arco [i,j] del subtour T para el cual la
inserción de k da el menor incremento en longitud, es
decir, k para la cual ∆𝑓 = 𝑐𝑖𝑘 + 𝑐𝑘𝑗 − 𝑐𝑖𝑗 sea el mínimo.
5. Modifique el subtour T mediante la inserción de k entre
i y j.
6. Vaya al paso 3 hasta que se haya formado un tour TSP.
Algoritmos de inserción más lejana
TSP
1. Escoge un nodo arbitrario i como nodo de inicio.
2. Encuentra el nodo más alejado de i. El nodo j para el
cual la distancia cij es la más grande. Forma el subtour
T=i-j-i.
3. Encuentra un nodo k que no esté en el subtour T que
esté lo más alejado posible de cualquier nodo del
subtour T.
4. Encuentra un arco [i,j] del subtour T para el cual la
inserción de k da el menor incremento en longitud, es
decir, k para la cual ∆𝑓 = 𝑐𝑖𝑘 + 𝑐𝑘𝑗 − 𝑐𝑖𝑗 sea el
mínimo.
5. Modifique el subtour T mediante la inserción de k
entre i y j.
6. Vaya al paso 3 hasta que se haya formado un tour TSP.
Algoritmo de inserción más barata
TSP
1. Escoge un nodo arbitrario i como nodo de inicio.
2. Encuentra el nodo más cercano al nodo i. Forma
un subtour T=i-j-i.
3. Encuentra un arco [i,j] del subtour T y un nodo k
que no se encuentre en subtour T, de modo que
el incremento en la longitud ∆𝑓 = 𝑐𝑖𝑘 + 𝑐𝑘𝑗 −
𝑐𝑖𝑗 sea el mínimo.
4. Modifique el subtour T mediante la inserción de
k entre i y j.
5. Vaya al paso 3 hasta que se haya formado un
tour TSP.
Elección del vértice a insertar

También podría gustarte