Agente Viajero Analisis
Agente Viajero Analisis
El valor mnimo se obtiene al resolver el problema original PEM. Pero ste puede ser muy
difcil de resolver. Por esta razn se acota inferiormente el valor ptimo. Las cotas se usan
para seleccionar subconjuntos prometedores en la bsqueda del ptimo. Tambin se
usan para descartar algunos subconjuntos que no pueden contener la solucin ptima del
problema.
Una buena estrategia de acotamiento es aqulla que:
1. Sea fcil de implementar y
2. Proporciones una buena cota inferior, es decir, que la cota est muy cerca del valor
ptimo.
Generalmente estos son objetivos contrapuestos y los mritos de cada regla dependen de
preferencias.
Una estrategia de acotamiento muy usada consiste en relajar aqullas restricciones que
dificulten la solucin del problema, es decir, calcular el valor ptimo sujeto a las
restricciones restantes. El problema PEM se puede relajar al eliminar las restricciones de
integralidad sobre las variables, dando como resultado el siguiente problema de
programacin lineal (PL):
Una buena estrategia de acotamiento es aqulla que:
1. Sea fcil de implementar y
2. Proporciones una buena cota inferior, es decir, que la cota est muy cerca del valor
ptimo.
Generalmente estos son objetivos contrapuestos y los mritos de cada regla dependen de
preferencias.
Una estrategia de acotamiento muy usada consiste en relajar aqullas restricciones que
dificulten la solucin del problema, es decir, calcular el valor ptimo sujeto a las
restricciones restantes. El problema PEM se puede relajar al eliminar las restricciones de
integralidad sobre las variables, dando como resultado el siguiente problema de
programacin lineal (PL):
Captulo 1.Planteamiento del Problema del Agente Viajero
min
. .
0 1,2,...,
j
Z cx
s a
Ax b
x j n
El valor ptimo del problema relajado PL constituye una cota inferior para el valor ptimo
del problema original, puesto que la regin factible de este problema est contenida en la
regin factible del problema relajado. Es decir, siempre se tiene la desigualdad:
Valor ptimo del problema PL valor ptimo del problema PEM
Sea
*
x
la solucin ptima del problema relajado PL. La desigualdad se da cuando
*
1,2,...,
j
x Z j I
. En este caso
*
x es factible para el problema PEM y por lo tanto
este problema est resuelto. Si no se da la igualdad entonces
*
j
x Z para alguna
1,2,..., j I
. [Aguirre, 1996]
2.2.2 Ramificacin
Se aplica la estrategia de ramificacin cuando las variables con restricciones enteras no
toman un valor entero en la solucin ptima del problema relajado PL. Es decir, cuando
*
j
x Z
para alguna
1,2,..., j I
.
La operacin de ramificacin consiste en particionar el conjunto de soluciones factibles del
problema relajado PEM con el propsito de localizar fcilmente el ptimo. De esta
manera se generan dos ms subproblemas.
Sea
{ ( ) }
0 1, 2,..., S Ax b x I I n
j j
el conjunto de soluciones factibles del
problema PEM. Sea una particin de S en subconjuntos
1 2
, ,..., .
k
S S S Cada subconjunto
i
S
es el conjunto de soluciones factibles que se obtiene agregando restricciones
adicionales al problema PEM.
Las nicas variables que se toman en cuenta para ramificarlas son las variables con
restricciones enteras que tienen un valor no entero en la solucin ptima del problema PL.
La variable que se elige para ramificar se conoce como variable de ramificacin.
Cuando se usan algoritmos de ramificacin y acotamiento el principal objetivo es generar
el menor nmero posible de subproblemas. Entonces, una buena regla de ramificacin es
aqulla que:
1. Genera pocos subproblemas y
2. Genera subproblemas con muchas restricciones, es decir, excluye muchas
soluciones de cada subproblema.
En este caso los criterios tambin entran en conflicto y uno tiene que ponderar las
ventajas de cada uno.
Se describir la estrategia de ramificacin para problemas binarios. Considere el siguiente
problema binario, PEB:
Captulo 1.Planteamiento del Problema del Agente Viajero
min
. .
0,1 1,2,...,
j
Z cx
s a
Ax b
x j n
A este problema se le conoce como subproblema 1. El problema relajado, PL, es el
siguiente:
min
. .
0 1, 2,...,
j
Z cx
s a
Ax b
x j n
Supngase que la solucin ptima de este problema no es factible para el problema
original PEB, es decir, { }
*
0,1
j
x
para alguna
1, 2,..., j n
. Entonces, se ramifica el
subproblema 1 al agregar las siguientes restricciones
0
j
x
y
=1
j
x
. De esta manera se
generan dos subproblemas:
2 1 ( 0)
3 1 ( 1)
j
j
subproblema subproblema x
subproblema subproblema x
+
+
Por otro lado, si se tiene un problema PEM, la variable de ramificacin puede tomar un
gran nmero de valores enteros positivos. Por lo tanto es ineficiente crear y analizar todos
los subproblemas que se generan al fijar la variable de ramificacin en cada uno de estos
valores. Por esta razn se especifican dos intervalos de valores para la variable de
ramificacin. Por ejemplo, sea j
x
para alguna
1, 2,..., j I
la variable de ramificacin; y sea
*
j
x
su valor (no entero) en la solucin ptima del problema relajado.
Entonces, en cualquier punto de la regin factible del problema PEM se tiene que:
* *
1 x x o x x
j j j j
+
Ya que el intervalo
* *
, 1 x x
j j
_ 1 1
+
1 1
] ] ,
no hay ningn punto entero. De esta forma se
ramifica sobre la variable
x
j
y se generan dos subproblemas:
*
*
2 1 ( )
3 1 ( 1)
j j
j j
subproblema subproblema x x
subproblema subproblema x x
1 +
]
1 + +
]
Un subproblema es insondable si no es necesario ramificarlo. Esto puede suceder por las
siguientes razones:
Captulo 1.Planteamiento del Problema del Agente Viajero
1. El subproblema no es factible. En este caso se elimina de consideracin puesto que
no contiene la solucin ptima del problema original.
2. Al acotar un subproblema se obtiene una solucin factible para el problema original, la
cual es la solucin ptima de este subproblema. En este caso se tiene una solucin
candidata que se compara con otras que se obtengan posteriormente para determinar
cul es la solucin ptima.
Supngase que el valor ptimo de esta solucin es
1
Z . Si
*
Z es el valor ptimo del
problema original se tiene la siguiente propiedad:
*
1
Z Z
En cada iteracin se debe actualizar esta cota. La solucin del subproblema que contenga
la menor cota superior es la solucin candidata hasta el momento. Al actualizar la cota
superior se eliminan todos aquellos subproblemas cuya cota inferior sea mayor que la
actual cota superior del problema PEM.
3. La cota inferior del subproblema es mayor que la actual cota superior para el valortimo
del problema original PEM. En este caso el nodo no es prometedor y se elimina de
consideracin.
2.2.3. Bsqueda de la solucin ptima
Los problemas generados se pueden representar mediante un rbol, donde los nodos del
rbol son los subproblemas. Por ejemplo
Figura 2.15
A los nodos que no contienen sucesores se les llama nodos terminales, los cuales tienen
asociados subproblemas insondables. En el rbol de la figura 2.4, hay dos nodos
terminales: los subproblemas 2 y 3. Las restricciones asociadas con los arcos que van del
subproblema 1 a ese nodo. [Aguirre, 1996]
La operacin de bsqueda indica la secuencia en la que los nodos generados se
examinan. Esto es importante porque los rboles generados con las diferentes
alternativas pueden variar mucho en su tamao y por lo tanto en tiempo requerido para
encontrar el ptimo.
Existen varios criterios de bsqueda, como la estrategia de prioridad y la regla de la cota
ms reciente. En la estrategia de prioridad se acotan todos los subproblemas que se
generan al ramificar un nodo. Se examina el nodo (es decir, se ramifica el nodo) con la
menor cota inferior de todos los subproblemas de la lista en una etapa determinada.
Donde la lista es una coleccin de nodos terminales.
Subproblema 1
Subproblema 2 Subproblema 3
*
x x
j j
*
1 x x
j j
+
Captulo 1.Planteamiento del Problema del Agente Viajero
Supngase que se tienen los subproblemas dos y tres en la lista y sus cotas inferiores y
sus cotas inferiores son
2
L y
3
L respectivamente, donde
2 3
L L f es probable que el valor
ptimo del subproblema dos sea menor que el de
3
L . Es decir, el subrpoblema con la
menor cota es el ms prometedor en cuanto a contener la solucin ptima del problema
PEM. Si la solucin obtenida es factible para el problema original sta es la solucin
ptima del problema PEM y el algoritmo termina aqu. De lo contrario se ramifica el
subproblema dos, el cual tiene asociada la menor cota inferior.
Con la regla de la cota ms reciente se acota un subproblema solamente si se eligi de la
lista. Los subproblemas no insondables de la lista se meten a una pila conforme se van
generando con la estrategia de ramificacin. Cuando se tenga que seleccionar un
subproblema para examinarlo, (es decir, para acotarlo), se elige el ltimo subproblema
incluido en la pila. Por esta razn, a este criterio se le conoce como regla de la cota ms
reciente. Al acotar un nodo se resuelve el subproblema correspondiente con el mtodo
simplex. La ventaja de esta regla es que en lugar de iniciar el mtodo simplex desde el
principio, cada vez que se acota un nodo, se puede resolver el subproblema
correspondiente por reoptimizacin utilizando anlisis de sensibilidad.
En ambos criterios de bsqueda, el algoritmo termina cuando se tiene que elegir un
subproblema de la lista (o de la pila) y sta se encuentra vaca. Si en este momento hay
una solucin candidata, el problema original PEM es factible, de lo contrario se dice que
no es factible.
2.4 Algoritmo de ramificacin y acotamiento para el agente viajero
Un mtodo de ramificacin y acotamiento para un problema en particular queda definido
al especificar sus operaciones de Ramificacin y acotamiento (R-A). En el caso del
problema del viajero, existen tres mtodos de ramificacin y acotamiento. La diferencia
principal entre estos algoritmos es la estrategia de acotamiento que usan.
1. Construccin del circuito segn la matriz reducida.
2. Eliminacin de subcircuitos a partir de la solucin de problemas de asignacin.
3. Construir la trayectoria basndose en el rbol de expansin mnima.
A continuacin se estudiarn tres algoritmos exactos que usan el mtodo de ramificacin
y acotamiento para obtener la solucin ptima. El primer mtodo que se describir se
basa en la construccin del circuito hamiltoniano segn la matriz reducida, el segundo se
basa en la eliminacin de subcircuitos a partir de la solucin de problemas de asignacin
y el tercer mtodo emplea relajacin Lagrangeana, que se basa en construir la trayectoria
basndose en el rbol de expansin mnima. Existen muchos mas algoritmos que utilizan
la tcnica de ramificacin y acotamiento, pero para fines de este trabajo nicamente se
considerar el algoritmo little-murty.
2.4.1 Algoritmo little-murty
Propsito: Determinar el circuito hamiltoniano de costo mnimo dada una matriz de
costos. El mtodo utiliza la propiedad de la matriz de costos reducida para probar la
inclusin o exclusin de un arco en el circuito.
Descripcin
Captulo 1.Planteamiento del Problema del Agente Viajero
Paso 1: Dada la matriz de costos D, se efectan sustracciones en los renglones y las
columnas de la matriz D, sin permitir que aparezcan valores negativos. Con esto
obtenemos una cota inferior del problema del viajero al sumar los elementos que se
restaron a los renglones y a las columnas. La matriz D' es la matriz reducida de D.
Paso 2: Sea S un nodo del rbol y ( ) ev S la cota inferior de este nodo S, con cada arco
( , ) i j
con
' 0
ij
d
, debemos usar algn arco comenzando en i y penalizarlo por
i
.
Tambin debemos usar algn arco en j, y podramos penalizarlo por j
con lo cual
ij i j
+
es la penalizacin de no escoger (i,j). Se selecciona el arco que tiene el
mximo de los ij
correspondiente a
' 0
ij
d
10 0 10
1 0 1
5 0 5
0 1 1
0 0 0
2 0 2
0 0 0
0 9 9
AD A D
BD B D
CF C F
DA D A
DB D B
EF E F
FB F B
FC F C
FE
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
0 2 2 F E + +
En general un arco (i,j) con
' 0
ij
d
no se escoge. Ya que debemos dejar el punto i,
debemos usar algn arco comenzando en i y penalizarlo por i . Tambin debemos usar
algn arco en j, y podramos penalizarlo por j, con lo cual ij
i j +
es la penalizacin
de no escoger (i, j). Dicha penalizacin ij
Paso 3
Como se tiene 22 para EF entonces se incluye al arco EF y si no se incluye se tiene una
penalizacin de 51 + 22 = 73 y la tabla 2.8 exhibe el resultado
B C E
C 13
5
D
7 0
F 0 0 0
Tabla 29
Nos fijamos en el primer rengln y restamos 5 para tener cero quedando
B C E
C 8
0
D
7 0
F 0 0 0
Tabla 2.10
Paso 2
Lo que nos da un costo de 56 unidades nuevamente calculamos las penalizaciones:
CE = C + E = 8 + 0 = 8
DE = D + E = 7 + 0 = 7
FB = F + B = 0 + 8 = 8
FC = F + C = 0 + 7 = 7
Paso 3
De acuerdo con esto podemos elegir como arco a usar el CE o el FB, escogemos FB y
obtenemos la tabla 2.11
C E
C
0
D 7 0
Captulo 1.Planteamiento del Problema del Agente Viajero
Tabla 2.11
Restamos siete en el rengln de D lo que nos da un costo de 63 unidades por usar el
arco FB y obtenemos:
C E
C
0
D 0 0
Tabla 2.12
De donde los nicos arcos que quedan que se pueden usar son CE, DC y DE de donde
escogemos CE y DC y asignamos infinito a DE para evitar posibles subcircuitos con lo
que nos queda la tabla 2.13
C E
C
0
D 0
Tabla 2.13
Figura 2.16 Solucin grfica por medio del algoritmo little-murty
De donde se concluye que el circuito hamiltoniano ptimo es A-D-C-E-F-B-A con una
duracin de 63 unidades de tiempo.
Captulo 1.Planteamiento del Problema del Agente Viajero
Para verificar que esta solucin es ptima, debemos examinar el vrtice AD cuya
evaluacin por cota inferior es 58 (< 63). La separacin del vrtice AD produce: usando
FC una cota de 63 y sin usar FC una cota de 67, por lo cual el circuito propuesto es
ptimo.
2.4 Programacin Dinmica
La programacin dinmica, desarrollada por Richard E. Bellman en la dcada de los 50,
est considerada como una potente herramienta de optimizacin de carcter muy general.
Constituye una disciplina muy importante de las matemticas aplicadas y la investigacin
de operaciones, y su mtodo estndar se aplica en reas tan dispares como ingeniera,
inteligencia artificial, economa, gestin, etc.
2.4.1 Planteamiento de la solucin del PAV como un problema de programacin
dinmica.
A continuacin se plantea la solucin del problema del agente viajero mediante
programacin dinmica.
Sea ( ) 2,3,..., 1, 1,...,
j
N j j N +
y sea S un subconjunto de j
N
que contiene i miembros.
Se define el valor ptimo de la funcin ( , )
i
f j S como:
( , ) La longitud de la trayectoria mas corta de la ciudad 1 a la ciudad a
traves de un conjunto S de ciudades intermedias (la etapa representa
el numero de ciudades
i
f j S j
i
i
en ) S
(1)
La formulacin de las ecuaciones recursivas es la siguiente:
{ } { }
1
( , ) min ( , 1, 2,..., - 2; 1; S N (2)
i i kj
k S
f j S f k S k d i N j
+
Condiciones de frontera:
0 1
( , ) (3)
j
f j d
La trayectoria ms corta va a estar dada por:
( ) { } 2 1
2,3,...,
min , (4)
N j j
j N
f j N d
+
Podemos justificar intituivamente la relacin de recurrencia. Supongamos que queremos
calcular ( , )
i
f j S . Consideramos las trayectorias ms cortas de la ciudad 1 a la ciudad j va
S que tiene a la ciudad k como predecesora inmediata de la ciudad j. Ya que las ciudades
en { } S k deben visitarse en un orden ptimo, la longitud de esta trayectoria es
Captulo 1.Planteamiento del Problema del Agente Viajero
{ }
1
( , )
i kj
f k S k d
+
. Ms an, ya que somos libres de seleccionar la ciudad k ptimamente,
es claro que ( , )
i
f j S est definido correctamente.
Entonces para calcular la longitud de la trayectoria ms corta, comenzamos por calcular
1
( , ) f j S (para todo par j , S) a partir de los valores de
0
f
. Entonces calculamos
2
( , ) f j S (para
todo par j , S) a partir de los valores de
i
f . Continuamos de la misma manera hasta
2
( , )
N j
f j N
para cada ciudad .j.
La longitud de la trayectoria ms corta esta dada por (4). Ya que alguna j debe ser la
ltima visitada antes de regresar a la ciudad 1. El recorrido de trayectoria ms corta se
puede obtener guardando en cada etapa y cada estado la ciudad k que minimiza la
ecuacin recursiva.
Esto lo ilustramos con el siguiente ejemplo.
A continuacin se da la matriz de distancias de la red que consiste de 5 ciudades:
1 2 3 4 5
1 0 3 1 5 4
2 1 0 5 4 3
3 5 4 0 2 1
4 3 1 3 0 3
5 5 2 4 1 0
Tabla 2.14
Los clculos son los siguientes, la poltica ptima se da entre parntesis:
Condiciones de frontera:
0 12
0 13
0 14
0 12
(2, ) =3(1)
(3, ) =1(1)
(4, ) =5(1)
(5, ) =4(1)
f d
f d
f d
f d
Etapa 1
Captulo 1.Planteamiento del Problema del Agente Viajero
{ }
{ }
{ }
{ }
{ }
{ }
{ }
+
+ +
+ +
+ +
+ +
+ +
+ +
1 0 32
1 0 42
1 0 52
1 0 23
1 0 43
1 0 53
1 0 24
1
(2, 3 ) (3, ) =1+4=5(3)
(2, 4 ) (4, ) 5 1 6(4)
(2, 5 ) (5, ) 4 2 6(4)
(3, 2 ) (3, ) 3 5 8(2)
(3, 4 ) (4, ) 5 3 8(4)
(3, 5 ) (5, ) 4 4 8(5)
(4, 2 ) (2, ) 3 4 7(2)
(4
f f d
f f d
f f d
f f d
f f d
f f d
f f d
f { }
{ }
{ }
{ }
{ }
+ +
+ +
+ +
+ +
+ +
0 34
1 0 54
1 0 25
1 0 35
1 0 45
, 3 ) (3, ) 1 2 3(3)
(4, 5 ) (5, ) 4 1 5(5)
(5, 2 ) (2, ) 3 3 6(2)
(5, 3 ) (3, ) 1 1 2(3)
(5, 4 ) (4, ) 5 3 8(4)
f d
f f d
f f d
f f d
f f d
Etapa 2
{ } { } { } { } { }
{ } { } { } { } { }
{ } { } { } { } { }
{ } { } { } { }
+ + + +
+ + + +
+ + + +
+ + +
2 1 32 1 42
2 1 32 1 52
2 1 42 1 52
2 1 23 1 43
(2, 3, 4 ) min (3, 4 ) , (4, 3 ) min 8 4,3 1 4(4)
(2, 3,5 ) min (3, 5 ) , (5, 3 ) min 8 4, 2 2 4(5)
(2, 4,5 ) min (4, 5 ) , (5, 4 ) min 5 1,8 2 6(4)
(3, 2, 4 ) min (2, 4 ) , (4, 2 ) min 6 5,
f f d f d
f f d f d
f f d f d
f f d f d { }
{ } { } { } { } { }
{ } { } { } { } { }
{ } { } { } { } { }
{ } { } { }
+
+ + + +
+ + + +
+ + + +
+ +
2 1 23 1 53
2 1 43 1 53
2 1 24 1 34
2 1 24 1
7 3 10(4)
(3, 2,5 ) min (2, 5 ) , (5, 2 ) min 6 5, 6 4 10(5)
(3, 4,5 ) min (4, 5 ) , (5, 4 ) min 5 3,8 4 8(4)
(4, 2,3 ) min (2, 3 ) , (3, 2 ) min 5 4,8 2 9(2)
(4, 2,5 ) min (2, 5 ) , (5, 2 )
f f d f d
f f d f d
f f d f d
f f d f d
{ } { }
{ } { } { } { } { }
{ } { } { } { } { }
{ } { } { } { } { }
{ } { }
+ +
+ + + +
+ + + +
+ + + +
+
54
2 1 34 1 54
2 1 25 1 35
2 1 25 1 45
2 1 35
min 6 4,6 1 7(5)
(4, 3,5 ) min (3, 5 ) , (5, 3 ) min 8 2, 2 1 3(5)
(5, 2,3 ) min (2, 3 ) , (3, 2 ) min 5 3,8 1 8(2)
(5, 2, 4 ) min (2, 4 ) , (4, 2 ) min 6 3,7 3 9(2)
(5, 3, 4 ) min (3, 4 ) ,
f f d f d
f f d f d
f f d f d
f f d f { } { } { } + + +
1 45
(4, 3 ) min 8 1,3 3 6(4) d
Etapa 3
{ } { } { } { } { } { }
{ }
{ } { }
{ } { }
{ } { }
+ + + +
+ + +
+ + +
+ + +
+ + +
3 2 32 2 42 2 1 52
3
3
3
(2, 3, 4,5 ) min (3, 4,5 ) , (4, 3,5 ) , (5, 3, 4 ) (4, 3 )
min 8 4,3 1, 6 2 4(4)
(3, 2, 4,5 ) min 6 5,7 3,9 4 10(4)
(4, 2,3,5 ) min 4 4,10 2,8 1 8(2)
(5, 2,3, 4 ) min 4 3,10 1,9 3 7(2)
f f d f d f f d
f
f
f
Entonces se tiene que:
Captulo 1.Planteamiento del Problema del Agente Viajero
{ } { } { } + + + + +
3 1
( ,(2,3, 4,5) min 4 1,10 5,8 3,7 5 5(2)
j
Min f j j d
El circuito hamiltoniano de menor longitud es 5 con las ciudades:
1 3 5 4 2 1
Captulo 3. Tcnicas Heursticas para resolver el problema del agente viajero
En este captulo, se describen las principales tcnicas heursticas de solucin de
problemas combinatorios entre los que figuran el problema del agente viajero. Realizo una
clasificacin de algunos de las tcnicas heursticas y metaheursticos que son los ms
utilizados y reconocidos en la optimizacin combinatoria. Cabe mencionar que las
tcnicas heursticas estn exclusivamente diseadas para un problema en especfico con
caractersticas muy especiales mientras que las tcnicas metaheursticas son tcnicas
que ayudan a resolver una clase de problemas y en este sentido estas tcnicas tambin
se tienen que adecuar al problema que se quiere resolver.
3.1 Introduccin
Algunas clases de problemas de optimizacin son relativamente fciles de resolver. Este
es el caso, por ejemplo, de los problemas lineales, en los que tanto la funcin objetivo
como las restricciones son expresiones lineales. Estos problemas pueden ser resueltos
con el conocido mtodo Simplex; sin embargo, muchos otros tipos de problemas de
optimizacin son muy difciles de resolver. De hecho, la mayor parte de los que podemos
encontrar en la prctica entran dentro de esta categora.
La idea intuitiva de problema difcil de resolver queda reflejada en el trmino cientfico
NP-hard utilizado en el contexto de la complejidad algortmica. En trminos coloquiales
podemos decir que un problema de optimizacin difcil es aquel para el que no podemos
garantizar el encontrar la mejor solucin posible en un tiempo razonable. La existencia de
una gran cantidad y variedad de problemas difciles, que aparecen en la prctica y que
necesitan ser resueltos de forma eficiente, impuls el desarrollo de procedimientos
eficientes para encontrar buenas soluciones aunque no fueran ptimas. Estos mtodos,
en los que la rapidez del proceso es tan importante como la calidad de la solucin
obtenida, se denominan heursticos o aproximados. En [Daz, 1996] y otros se recogen
hasta ocho definiciones diferentes de algoritmo heurstico, entre las que se destaca la
siguiente:
Un mtodo heurstico es un procedimiento para resolver un problema de optimizacin
bien definido mediante una aproximacin intuitiva, en la que la estructura del problema se
utiliza de forma inteligente para obtener una buena solucin.
En contraposicin a los mtodos exactos que proporcionan una solucin ptima del
problema, como la programacin dinmica y los algoritmos de Ramificacin y Acotamiento
(Branch and Bound) que para encontrar soluciones ptimas requieren tiempo
superpolinomial a pesar de que estos algoritmos son ms eficientes que la bsqueda
exhaustiva pura, su tiempo de corrida es an exponencial. Por esa razn es entonces
natural buscar otra alternativa de solucin como son los algoritmos de aproximacin que
Captulo 1.Planteamiento del Problema del Agente Viajero
trabajan en tiempo polinomial los mtodos heursticos se limitan a proporcionar una buena
solucin no necesariamente ptima. [Adenso, 1996]
En la actualidad, la investigacin se ha dirigido hacia el diseo de buenas heursticas, es
decir, algoritmos eficientes con respecto al tiempo de cmputo y al espacio de memoria, y
con cierta verosimilitud de entregar una solucin "buena" esto es, relativamente cercana a
la ptima mediante el examen de slo un pequeo subconjunto de soluciones del nmero
total.
Existen varias razones para utilizar mtodos heursticos, entre las que podemos destacar:
[Adenso, 1996]
El problema es de una naturaleza tal que no se conoce ningn mtodo exacto para
su resolucin. Ofrecer entonces una solucin que slo sea aceptablemente buena
resulta de inters frente a la alternativa de no tener ninguna solucin en absoluto.
Aunque existe un mtodo exacto para resolver el problema, su uso es
computacionalmente muy costoso.
El mtodo heurstico es ms flexible que un mtodo exacto, permitiendo, por
ejemplo, la incorporacin de condiciones de difcil modelizacin.
El mtodo heurstico se utiliza como parte de un procedimiento global que
garantiza el ptimo de un problema.
Existen dos posibilidades:
El mtodo heurstico proporciona una buena solucin inicial de partida.
El mtodo heurstico participa en un paso intermedio del procedimiento, como por
ejemplo las reglas de seleccin de la variable a entrar en la base en el mtodo
Simplex.
3.2 Clasificacin de Algoritmos Heursticos
El siguiente esquema trata de dar unas categoras amplias, no excluyentes, en donde
ubicar a los heursticos ms conocidos: [Adenso, 1996]
3.2.1. Mtodos de descomposicin: El problema original se descompone en
subproblemas ms sencillos de resolver, teniendo en cuenta, aunque sea de manera
general, que ambos pertenecen al mismo problema. Algunos autores [Ball,Magazine,
1981] diferencian entre mtodos de descomposicin (los problemas se resuelven en
cascada) y mtodos de particin (cuando los subproblemas son independientes entre s)
3.2.2. Mtodos Inductivos: La idea de estos mtodos es generalizar de versiones
pequeas o ms sencillas al caso completo. Propiedades o tcnicas identificadas en estos
casos ms fciles de analizar pueden ser aplicadas al problema completo.
3.2.3. Mtodos de Reduccin: Consiste en identificar propiedades que se cumplen
mayoritariamente por las buenas soluciones e introducirlas como restricciones del
problema. El objeto es restringir el espacio de soluciones simplificando el problema. El
riesgo obvio es dejar fuera las soluciones ptimas del problema original.
Captulo 1.Planteamiento del Problema del Agente Viajero
3.2.4. Mtodos Constructivos: Consisten en construir literalmente paso a paso una
solucin del problema. Usualmente son mtodos deterministas y suelen estar basados en
la mejor eleccin en cada iteracin. Estos mtodos han sido los ms utilizados en el PAV.
3.2.5 Mtodos de bsqueda local: A diferencia de los mtodos anteriores, los
procedimientos de bsqueda o mejora local comienzan con una solucin del problema y la
mejoran progresivamente. El procedimiento realiza en cada paso un movimiento de una
solucin a otra con mejor valor. El mtodo finaliza cuando, para una solucin, no existe
ninguna solucin accesible que la mejore.
Si bien todos estos mtodos han contribuido a ampliar nuestro conocimiento para la
resolucin de problemas reales, los mtodos constructivos y los de bsqueda local
constituyen la base de los procedimientos metaheursticos.
3.3 Mtodos constructivos en el problema del viajante
Los mtodos constructivos son procedimientos iterativos que, en cada paso, aaden un
elemento hasta completar una solucin. Usualmente son mtodos deterministas y estn
basados en seleccionar, en cada iteracin, el elemento con mejor evaluacin. Estos
mtodos son muy dependientes del problema que resuelven. En esta seccin se describe
la tcnica del vecino ms cercano.
3.3.1 Heursticos del vecino ms prximo o ms cercano
Uno de los heursticos ms sencillos para el PAV es el llamado del vecino ms cercano,
que trata de construir un ciclo Hamiltoniano de bajo costo basndose en el vrtice cercano
a uno dado. Este algoritmo es debido a Rosenkrantz, Stearns y Lewis (1977) y su cdigo,
en una versin estndar, es el siguiente:
Algoritmo del vecino ms Prximo o ms cercano
Inicializacin
Seleccionar un vrtice
j
al azar.
Hacer
t j
y { } \ W V j
Mientras
( 0) W
Tomar { } / min /
tj t
j W c c i W
Conectar t a
j
Hacer { } \ W W j t j
Figura 3.17 Algoritmo del vecino ms Prximo o ms cercano
Este procedimiento realiza un nmero de operaciones de orden
2
( ) O n . Si seguimos la
evolucin del algoritmo al construir la solucin de un ejemplo dado, veremos que
comienza muy bien, seleccionando aristas de bajo costo.
[Jnger, Reinelt , Rinaldi ,1995]
Sin embargo, al final del proceso probablemente quedaran vrtices cuya conexin
obligara a introducir aristas de costo elevado. Esto es lo que se conoce como miopa del
procedimiento, ya que, en una iteracin escoge la mejor opcin disponible sinver que
esto puede obligar a realizar malas elecciones en iteraciones posteriores. [Mart, 2001]
Captulo 1.Planteamiento del Problema del Agente Viajero
El algoritmo tal y como aparece puede ser programado en unas pocas lneas de cdigo.
Sin embargo una implementacin directa seria muy lenta al ejecutarse sobre ejemplos de
gran tamao (10000 vrtices). As pues, incluso para un heurstico tan sencillo como este,
es importante pensar en la eficiencia y velocidad de su cdigo.
Dentro de la categora de mtodos constructivos, se encuentran los heursticos de
insercin, los basados en rboles generadores o rboles de expansin y los mtodos
basados en ahorros. Para saber mas acerca de stos mtodos heursticos se recomienda
ver la tesis de maestra Anlisis del problema del agente viajero de Esther Segura Prez
de la DEPFI, UNAM.2004.
3.4 Bsqueda Local en el Problema del Agente Viajero
Los procedimientos de bsqueda local, tambin llamados de mejora, se basan en explorar
el entorno o vecindad de una solucin. Utilizan una operacin bsica llamada movimiento
que, aplicada sobre los diferentes elementos de una solucin, proporciona las soluciones
de su entorno. Dentro de los mtodos de bsqueda local se encuentra la tcnica
heurstica 2-OPT que es una de las ms representativas.
3.4.1 Procedimientos de 2- intercambio
Este procedimiento est basado en la siguiente observacin para grafos con distancias
eucldeas (o en general con costos cumpliendo la desigualdad triangular).
Un movimiento 2-opt consiste en eliminar dos aristas y reconectar los dos caminos
resultantes de una manera diferente para obtener un nuevo ciclo.
Las figuras 3.18 y 3.19 ilustran este movimiento en el que las aristas ( , ) i j y ( , ) l k son
reemplazadas por ( , ) l j y ( , ) i k . Notar que slo hay una manera de reconectar los dos
caminos formando un nico tour.
Figura 3.18 Solucin original Figura 3.19 Solucin mejorada
El siguiente cdigo recoge el algoritmo heurstico de mejora 2-ptimo. Consiste en
examinar todos los vrtices, realizando, en cada paso, el mejor movimiento 2-opt
asociado a cada vrtice.
Algoritmo 2-ptimo
Inicializacin
Captulo 1.Planteamiento del Problema del Agente Viajero
Considerar un ciclo Hamiltoniano inicial
Para cada vrtice i definir un conjunto de vrtices ( ) N i
1 move
Etiquetar todos los vrtices como no explorados
Mientras (queden vrtices por explorar)
Seleccionar un vrtice i no explorado.
Examinar todos los movimientos 3-opt que eliminen 3 aristas teniendo cada
una, al menos un vrtice ( ) N i .
Si alguno de los movimientos examinados reduce la longitud del ciclo,
realizar el mejor de todos y hacer 1 move . En otro caso etiquetar i como
explorado.
Figura 3.20 Algoritmo 2-ptimo
La variable
move
vale 0 si no se ha realizado ningn movimiento al examinar todos los
vrtices, y 1 en otro caso. El algoritmo finaliza cuando 0 move , con lo que queda
garantizado que no existe ningn movimiento 2-opt que pueda mejorar la solucin.
El orden en el que el algoritmo examina los nodos incide de manera notable en su
funcionamiento. En una implementacin sencilla podemos considerar el orden natural
1, 2,...., n
. Sin embargo, es fcil comprobar que cuando se realiza un movimiento hay
muchas posibilidades de encontrar movimientos de mejora asociados a los vrtices que
han intervenido en el movimiento recin realizado. Por ello, una implementacin ms
eficiente consiste en considerar una lista de vrtices candidatos a examinar. El orden
inicial es el de los vrtices en el ciclo comenzando por uno arbitrario y en cada iteracin
se examina el primero de la lista. Cada vez que se examina un vrtice i , ste se coloca al
final de la lista y, los vrtices involucrados en el movimiento (vrtices
j
, k y l de la figura
3.19) se insertan en primer lugar.
Dado que el proceso de examinar todos los movimientos 2-opt asociados a cada vrtice
es muy costoso computacionalmente, se pueden introducir las siguientes mejoras para
acelerar el algoritmo:
Exigir que al menos una de las dos aristas aadidas en cada movimiento, para
formar la nueva solucin, pertenezca al subgrafo candidato.
Observando el funcionamiento del algoritmo se puede ver que en las primeras
iteraciones la funcin objetivo decrece substancialmente, mientras que en las
ltimas apenas se modifica. De hecho la ltima nicamente verifica que es un
ptimo local al no realizar ningn movimiento. Por ello, si interrumpimos el
algoritmo antes de su finalizacin, ahorraremos bastante tiempo y no perderemos
mucha calidad.
Es evidente que ambas mejoras reducen el tiempo de computacin a expensas de perder
la garanta de que la solucin final es un ptimo local. As pues, dependiendo del tamao
del ejemplo a resolver, as como de lo critico que sea el tiempo de ejecucin, se deben
implementar o no.
El comprobar si existe, o no, un movimiento 2-opt de mejora utiliza un tiempo de orden
2
( ) O n , ya que hay que examinar todos los pares de aristas en el ciclo. Podemos
Captulo 1.Planteamiento del Problema del Agente Viajero
encontrar clases de problemas para los que el tiempo de ejecucin del algoritmo no est
acotado polinmicamente.
Usando el algoritmo anterior, se realiza una descripcin ms detallada del 2-Opt para un
PAV Simtrico de 5 ciudades. Se muestra el PAV en la figura 4.6a con su respectiva
matriz de adyacencia