You are on page 1of 15

INTRODUCCION

Desde hace varias décadas se ha venido intensificando la formulación de una gran
variedad de problemas de optimización que requieren ser abordados con
metodologías generales sin dejar de considerar explícitamente el universo de
variables de decisión que cada situación involucra. Estos problemas no resultan
ser tan difíciles de entender, pero sus esquemas de solución, a través de técnicas
exactas, son apenas aplicables cuando el número de variables de decisión es
relativamente pequeño, y en general gran parte de los problemas cotidianos no
cumplen esta condición. Ante dicha realidad, muchos esfuerzos en investigación
se han concentrado en desarrollar nuevas técnicas y procedimientos heurísticos,
los cuales han tenido un gran auge, sin duda debido a la necesidad de disponer de
herramientas que permitan resolver problemas tales como los de optimización.

TECNICAS METAHEURÍSTICAS

Las técnicas metaheurísticas son procedimientos de búsqueda que tampoco
garantizan la obtención del óptimo del problema considerado y que también se
basan en la aplicación de reglas relativamente sencillas. A diferencia de los
heurísticos, las técnicas metaheurísticas tratan de huir de óptimos
locales orientando la búsqueda en cada momento dependiendo de la
evolución del proceso de búsqueda.
La aplicación de las técnicas metaheurísticas es especialmente interesante en
caso de problemas de optimización combinatoria: problemas en las que las
variables de decisión son enteras (o discretas, al menos) en las que,
generalmente, el espacio de soluciones está formado por ordenaciones de valores
de dichas variables. Sin embargo, las técnicas metaheurísticas se pueden aplicar
también a problemas de otro tipo, como con variables continuas, por ejemplo.
La lógica de las técnicas metaheurísticas es similar: el punto de partida es una
solución (o conjunto de soluciones) que típicamente no es óptima. A partir de ella
se obtienen otras parecidas, de entre las cuales se elige una que satisface algún
criterio, a partir de la cual comienza de nuevo el proceso. Este proceso se detiene
cuando se cumple alguna condición establecida previamente.
Las técnicas metaheurísticas más extendidas son la siguientes: los algoritmos
genéticos, la búsqueda tabú, el recocido simulado, la búsqueda “scatter”, las
colonias de hormigas, la técnica conocida por el nombre inglés GRASP. Las redes
neuronales, también incluidas entre las técnicas metaheurísticas, son de
naturaleza diferente a las tres no se van a considerar.

TIPOS O CLASES DE METAHEURÍSTICAS

OPTIMIZACIÓN BASADA EN COLONIAS DE HORMIGAS (ACO)

En los últimos años se ha venido desarrollando una nueva técnica metaheurísticas
que se inspira en el comportamiento real de las hormigas. Los algoritmos de
optimización con colonias de hormigas (Ant Colony Optimization, ACO) han sido
aplicados con éxito a una amplia variedad de problemas de optimización
combinatoria; el primero de ellos fue el conocido problema del viajante (Dorigo,
1992). ACO es una técnica en la que un conjunto de hormigas artificiales
construyen de forma incremental, seleccionado paso a paso diferentes
componentes, un conjunto de soluciones del problema. En este proceso, las
hormigas hacen uso de información a priori sobre el problema (información
heurística) e información proporcionada por las hormigas precedentes sobre la
calidad de las soluciones por ellas construidas (feromona).


Estructura de un algoritmo genérico de la metaheurísticas ACO es la siguiente:
1 procedimiento metaheurística_ACO()
2 inicialización_de_parámetros
3 mientras
(criterio_de_terminación_no_satisfecho)
4 programación_de_actividades
5 hormigas_y_actividad()
6 evaporación_de_feromona()
7 acciones_del_demonio() {opcional}
8 fin programación_de_actividades
9 fin mientras
10 fin procedimiento


1 procedimiento hormigas_y_actividad()
2 repetir en paralelo desde k=1 hasta
número_hormigas
3 nueva_hormiga(k)
4 fin repetir en paralelo
5 fin procedimiento

1 procedimiento
nueva_hormiga(id_hormiga)
2 inicializa_hormiga(id_hormiga)
3 L = actualiza_memoria_hormiga()
4 mientras (estado_actual ?
estado_objetivo)
5 P =
calcular_probabilidades_de_transición(A,
L,W)
6 siguiente_estado =
aplicar_política_decisión(P,W)
7
mover_al_siguiente_estado(siguiente_est
ado) si
(actualización_feromona_en_línea_paso
_a_paso)
8
depositar_feromona_en_el_arco_vistado(
) fin si.
9 L = actualizar_estado_interno()
10 fin mientras si
(actualización_feromona_en_línea_a_po
steriori)
11 para cada arco visitado
12
depositar_feromona_en_el_arco_visitado
()
13 fin para fin si
14
liberar_recursos_hormiga(id_Hormiga)
15 fin Procedimiento

EJEMPLO
Para mostrar el funcionamiento del algoritmo se considerará un ejemplo de
asignación de 18 secciones a 18 áreas. Los flujos entre las diferentes secciones y
las distancias entre las áreas se muestran en las Tablas 1 y 2, respectivamente.
Considérese igualmente que cada área tiene diferente tamaño y que cada sección
requiere un espacio mínimo. Los tamaños de las áreas serán 4, 4, 2, 1, 1, 2, 3, 3,
3, 4, 2,3, 2, 4, 2, 4, 2 y 2. Por otro lado se considerará que las 7 primeras
secciones (S1 a S7) requieren un espacio mínimo de 1 unidad, las secciones S8 a
S13 un espacio de al menos 2 unidades, las secciones S14 a S16, 3 unidades, y,
finalmente, las dos últimas secciones (S17 y S18) un espacio mínimo de 4
unidades.
S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 S15 S16 S17 S18
S1 0 45 32 30 0 0 0 12 23 31 11 0 40 0 12 15 31 0
S2 12 0 27 0 45 0 0 0 0 0 0 0 0 0 0 0 0 0
S3 14 0 0 0 0 24 0 0 0 0 0 0 0 11 7 34 23 0
S4 22 12 0 0 32 0 0 0 0 60 45 0 0 0 0 0 0 0
S5 0 0 0 0 0 43 32 16 48 0 0 0 0 0 0 0 21 12
S6 0 12 0 0 0 0 0 8 4 8 11 0 20 7 9 3 8 12
S7 0 0 0 0 0 0 0 0 0 0 0 0 21 80 97 56 76 0
S8 0 0 0 45 23 12 0 0 0 0 0 0 0 0 0 0 0 0
S9 0 0 0 0 0 11 32 14 0 0 0 0 0 0 0 0 0 0
S10 0 25 0 0 0 0 0 0 0 0 0 33 0 0 0 0 0 0
S11 0 0 0 0 0 0 0 0 0 0 0 45 0 0 0 0 5 23
S12 0 0 0 0 0 0 14 28 38 0 0 0 0 0 0 0 0 0
S13 0 0 0 0 43 24 0 0 0 0 0 0 0 0 0 0 0 0
S14 11 0 15 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0
S15 0 0 0 0 0 0 23 11 12 0 0 0 0 0 0 0 0 0
S16 0 0 0 0 0 0 0 0 0 0 0 56 24 0 18 0 45 39
S17 0 0 0 0 0 0 0 0 0 0 0 17 0 22 0 45 0 11
S18 0 0 0 0 12 15 18 0 0 0 0 0 36 49 67 23 11 0
Otro tipo de restricción que será considerada es la de exigir, por razones de
seguridad, una distancia de al menos 4 unidades de separación entre las
secciones segunda y octava. La penalización que se aplicará a una solución por
no cumplir esta restricción será proporcional a la distancia necesaria para alcanzar
esa distancia de seguridad.
A
1
A
2
A
3
A
4
A
5
A
6
A
7
A
8
A
9
A
1
0
A
1
1
A
1
2
A
1
3
A
1
4
A
1
5
A
1
6
A
1
7
A
1
8
Ar
ea
s
0 1 3 5 6 3 5 6 1 3 5 2 3 3 5 6 8 9 A1
0 1 3 4 1 3 4 1 1 3 2 5 3 4 5 7 8 A2
0 1 2 1 2 3 4 3 2 5 8 6 5 4 5 6 A3
0 1 2 1 2 6 4 3 7 1
0
8 7 5 4 5 A4
0 3 2 1 7 5 4 8 1
1
9 8 6 5 4 A5
0 1 2 3 1 1 4 7 5 4 3 4 5 A6
0 1 4 2 1 4 7 5 4 2 1 2 A7
0 5 3 2 5 8 6 5 3 2 1 A8
0 1 3 1 2 2 3 4 6 7 A9
0 1 1 4 2 1 1 3 4 A1
0
0 3 6 4 3 1 2 3 A1
1
0 1 1 2 3 5 6 A1
2
0 1 3 4 6 7 A1
3
0 1 2 4 5 A1
4
0 1 3 4 A1
5
0 1 2 A1
6
0 1 A1
7
0 A1
8
Para comprobar la efectividad del algoritmo, éste ha sido implementado en
Matemática y probado sobre el ejemplo propuesto. El escenario sobre el que se ha
realizado la simulación es el determinado por los siguientes valores de los
parámetros:
 Número de hormigas: m=20
 Coeficiente de penalización por violaciones de restricciones de capacidad:
pc=10
 Coeficientes de la definición del grado de interactividad: 
1
=0.5 
2
=0.5
 Probabilidad de cruce: 0.6
Probabilidad de mutación: 0.01
 Número de iteraciones: 40
 Coeficiente de penalización por violaciones de restricciones de proximidad:
pp=10
 Pesos de los rastros de feromona y de la información heurística: =1 =0.1
 Tasa de evaporación: =0.5
 Peso de la mejor solución: e=2
Después de las 40 iteraciones del algoritmo, la mejor solución encontrada
correspondió a la permutación (18,13,8,5,6,11,1,4,14,16,3,7,9,15,12,17,2,10)
con un coste asociado de 6113. Además de esa solución, como resultado se
obtuvo toda una población de 20 soluciones, de las cuales se tuvieron que
descartar 2 por resultar no factibles. La Tabla 3 muestra esas soluciones
obtenidas junto con sus costes.
Como prueba de la convergencia del algoritmo, la Figura 1 muestra la evolución
del coste medio de las soluciones obtenidas por las hormigas en cada una de las
40 iteraciones, y un gráfico de densidad con las concentraciones finales de
feromona.
Solución Coste
total
Solución Coste
total 16,11,8,5,6,1,15,3,14,17,4,7,9,
18,12,10,2,13
7764 15,13,8,4,6,3,10,14,11,18,12,7,
9,16,5,17,2,1
7486
16,13,8,5,6,11,10,14,4,17,3,7,9
,15,12,18,2,1
8298 17,18,8,4,6,11,1,7,5,16,3,14,9,
15,12,10,2,13
8323
15,13,8,5,6,11,1,12,14,16,3,7,9
,18,4,17,2,10
7149 15,13,8,5,6,11,10,4,14,17,3,7,9
,18,12,16,2,1
6893
16,13,8,5,6,11,10,4,14,17,3,7,9
,18,12,15,2,1
7412 17,15,8,5,6,11,1,3,14,16,13,4,9
,18,10,7,2,12
8669
1,5,8,3,6,11,14,7,9,16,12,15,13
,18,4,17,2,10
8315 15,13,8,4,6,1,14,5,11,17,3,7,9,
18,12,16,2,10
6871
17,13,8,3,6,11,16,4,14,7,10,12,
9,18,5,15,2,1
7757 13,10,8,5,6,11,16,4,14,17,3,7,9
,15,12,18,2,1
7738
16,7,8,5,6,13,10,3,14,15,12,11,
9,18,4,17,2,1
8019 16,13,8,5,6,11,1,12,14,18,3,7,9
,15,4,17,2,10
7472
15,13,8,3,6,11,10,5,14,16,12,7,
9,18,4,17,2,1
7368 13,18,8,4,6,10,14,7,11,5,3,16,9
,15,12,17,2,1
8124



BÚSQUEDA O ALGORITMO TABÚ

Es una de las metaheurísticas más utilizadas en problemas de optimización. La BT
se basa fundamentalmente en la utilización de un historial de búsqueda, que
permite ejecutar su estrategia de análisis y exploración de diferentes regiones del
espacio de búsqueda. Este historial o memoria se implementa como una lista tabú.
En cada iteración se elige la mejor solución entre las permitidas y se añade a la
lista tabú, donde se mantienen las soluciones recientes que se excluyen de las
siguientes iteraciones.
ESTRUCTURA DEL ALGORITMO TABÚ


EJEMPLO

Problema de las n reinas
El problema de las n-reinas consiste en colocar n reinas en un tablero de ajedrez
de n x n de tal manera que no sea posible que dos reinas se capturen entre sí, es
decir, que no estén en la misma fila, ni en la misma columna ni en la misma
diagonal. Se dice que hay una colisión si hay dos reinas que se pueden capturar
entre sí.
Se trata pues de encontrar una configuración elegir las n celdas donde colocar a
las reinas que minimice el número total de colisiones.
Una solución tiene la forma de un arreglo n-dimensional:(r1, r2, r3,......rn)




Por ejemplo una solución para n = 4 es (3,4,1,2)
Matricialmente se representa:
Columna1 Columna2 Columna3 Columna4
Reina1 ℜ1
Reina2 ℜ2
Reina3 ℜ3
Reina R1 R2 R3 .... Rn
Ubicación en
la columna

1

2

3



n
Reina4 ℜ4

Hay 4 colisiones {(1,2) (3,4) (1,3) (2,4,)}
Este problema puede resolverse de varias formas, por ejemplo enumerando todas
las posibles alternativas y evaluando si se producen colisiones, en cuyo caso se
tendría que evaluar factorial de n posibles soluciones. Cuando n es igual a 4 la
cantidad de soluciones alternativas es de 24 y hay 2 configuraciones que
producen cero colisiones:
Configuración # 11
Reina R1 R2 R3 R4
Ubicación en la
columna

2

4

1

3

Configuración # 14
Reina R1 R2 R3 R4
Ubicación en la
columna

3

1

4

2

En el siguiente cuadro se muestra la cantidad de soluciones alternativas que se
tendrían que evaluar para diferentes tamaños de n:
Cantidad de reinas Evaluación exhaustiva de n! alternativas
4 24
7 5,040
10 3,628,800
20 2,432,902,008,176,640,000

Cuando n es un número grande la evaluación exhaustiva de todas las alternativas
factibles es intratable.
El problema de n reinas puede ser visto como un problema lineal de maximizar el
número de reinas en un tablero de ajedrez sujeta a las restricciones de que en una
fila sólo haya una reina, al igual que en cada columna y además que en cada
diagonal haya una y sólo una reina.
Cuando n=4 el problema tiene 4 restricciones correspondiente a las filas, 4
restricciones para las columnas, (2*4-3) diagonales negativas y (2*4-3) diagonales
positivas.
Las variables son: xij = la reina i ocupa la fila i y la columna j; i = 1...4; j=1....4.

ALGORITMO GENÉTICO

La técnica metaheurísticas de los algoritmos genéticos fue ideada por Holland en
1975 y está inspirada en los procesos de adaptación de los seres vivos. Los
resultados de los patrones de evolución de los seres vivos han sido sobradamente
probados con éxito (a lo largo de la evolución de las especies) y constituyen la
base de los algoritmos genéticos. Por un lado, estos patrones permiten que con el
transcurso del tiempo se exploren continuamente nuevas posibilidades y, por otro,
y en condiciones normales, raramente conducen a la obtención de individuos
absolutamente desadaptados e incapaces de sobrevivir. Partiendo de una
población inicial, es decir, un conjunto inicial de soluciones, se realizan
manipulaciones por las que se obtienen sucesivas poblaciones. La función de
adaptación indica la bondad de las soluciones consideradas en cada momento. En
cada iteración se realizan una serie de operaciones con los individuos de la
población, de entre las cuales las más comunes son: la selección, el cruce, la
mutación y la inversión. La aplicación de los operadores anteriores permite
obtener, típicamente, soluciones con mejores funciones de adaptación.
Los algoritmos genéticos pertenecen al grupo de las técnicas evolucionarias, que
son aquellas técnicas que en cada iteración disponen de un conjunto de
soluciones a partir de las cuales obtienen un nuevo conjunto de soluciones.


ESTRUCTURA DEL ALGORITMO GENÉTICO


EJEMPLO

La forma en que se realiza el cruce depende del tipo de representación que
se escoja. Para ilustrar algunas posibilidades supondremos que la
representación de las soluciones de un determinado problema es de tipo binario
y es una cadena de ocho elementos. Los individuos A y B han sido seleccionados
para someterlos al operador del cruce:

Individuo A: 1 1 1 0 1 0 0 1

Individuo B: 0 1 0 0 1 1 0 0

Podemos describir los siguientes tipos de cruce (que no son los
únicos):
Operador de cruce simple. Según este tipo se cruce, se selecciona un punto
de la
cadena en cada uno de los padres y se generan nuevos individuos
combinando las partes que generan los cortes anteriores, como aparece en la
figura:

Padres 1 1 1 0 1 0 0 1 0 1 0 0 1 1 0 0


Descendientes 1 1 1 0 1 1 0 0 0 1 0 0 1 0 0 1



Operador con dos puntos de corte. Es análogo al anterior, salvo que se
seleccionan dos puntos de corte y los padres intercambian los elementos de la
cadena que quedan entre dichos puntos para generar los descendientes.


Padres 1 1 1 0 1 0 0 1 0 1 0 0 1 1 0 0


Descendientes 1 1 1 0 1 1 0 1 0 1 0 0 1 0 0 0


Operador de cruce conforme a una máscara de cruce. En este caso, los genes
de los descendientes se obtienen de acuerdo con el criterio dado por una
máscara. La máscara, en el ejemplo, es una cadena de ceros y unos. Para cada
posición de la descendencia se tomará el gen del padre 1 si el valor de la
máscara para dicha posición es 1 y del padre 2 si el valor del gen es 0.


Máscara de cruce 1 1 0 1 0 0 1 0

Padre 1

1 1 1 0 1 0 0 1

Descendiente

1 1 0 0 1 1 0 0

Padre 2

0 1 0 0 1 1 0 0

Siguiendo con el ejemplo anterior, la mutación consistiría en transformar un cero
en uno (o viceversa) con una probabilidad determinada:

Individuo antes de la mutación 1 1 0 1 0 0 1 0


Individuo tras la mutación 1 1 1 0 1 1 0 1


ALGORITMO RECORRIDO SIMULADO

Es una de las metaheurísticas más antigua que incorpora una estrategia explícita
para impedir óptimos locales. Basado en la física del calentamiento de metales. Se
propone una similitud entre una buena estructura cristalina de metales y una
buena estructura de soluciones para problemas de optimización combinatoria.
Se trata de minimizar una función objetivo que representa la energía del sistema.

Idea: permitir movimientos a soluciones que empeoren la función
Objetivo de forma de poder escapar a los óptimos locales. La probabilidad de
realizar movimientos que empeoren decrece durante la búsqueda.
Mientras que las soluciones que mejoran la función objetivo siempre son
aceptadas, las soluciones que la empeoran son aceptadas con mayor probabilidad
si la temperatura es más alta. Al comienzo, la temperatura es alta y cualquier
transición entre estados es permitida. La temperatura del sistema es controlada
con enfriamiento sucesivo (función logarítmica) y recalentamientos periódicos, que
permiten escapar de óptimos locales (estructura de soluciones).
El proceso se puede describir en términos de cadenas de Markov de estado finito
y se puede demostrar su convergencia. (Pero un enfriamiento logarímico es muy
lento, por tanto en la práctica no se aplica. . .)
ESTRUCTURA DEL ALGORITMO RECORRIDO SIMULADO

METAHEURÍSTICA O ALGORITMO GRAPS

Clasificado como método de exploración local (ELS-Explorative local search)
GRASP (Greedy Randomized Adaptive Search Procedure) es una metaheurística
que combina procedimientos constructivos y de búsqueda local.
GRASP es un procedimiento iterativo en dos fases:
 una de construcción de la solución (heurística)
 y otra de mejora.
Heurística estática: asigna el score a los elementos solamente antes de comenzar
la construcción. En GRASP, la construcción de la solución se caracteriza por ser
dinámica y aleatoria. Los valores de la heurística son actualizados en cada
iteración.

ESTRUCTURA DEL ALGORITMO DE GRAPS




EJEMPLO DE APLICACIÓN


Se elige la ciudad más próxima
(menor costo) entre las aun no
visitadas.
1.

2.

3.

4.

5.

6.