You are on page 1of 8

OPTIMIZACIÓN POR COLONIA DE HORMIGAS 1

Optimización por Colonia de Hormigas (ACO)


(Noviembre 2009)
Nataly Medina Rodríguez, CITEDI-IPN, Métodos de Optimización

Resumen—El siguiente documento presenta un análisis Son esencialmente algoritmos constructivos: en cada
introductorio relacionado al tema de optimización por iteración del algoritmo, cada hormiga construye una solución
colonia de hormigas, mejor conocido por sus siglas en al problema, recorriendo un grafo de construcción. Cada
inglés ACO. Debido a que muchos problemas de arista, (p,q) del grafo representa los posibles pasos que la
optimización en configuraciones geométricas son NP- hormiga puede dar y tiene asociadas dos informaciones que
duros, el algoritmo que se propone presenta una solución guían el movimiento de la hormiga:
aproximada, utilizando una técnica metaheurística.
Además, se presentará un problema de aplicación al - Información heurística, que mide la preferencia
algoritmo denominado como el “Problema del Agente heurística, η pq , de moverse desde el nodo p hasta el
Viajero” o TSP utilizando MATLAB.
nodo q, o sea, recorrer la arista. Las hormigas no
Índice de Términos— ACO, S-ACO, Metaheurística, modifican esta información durante la ejecución del
TSP algoritmo.
- Información de los rastros de feromona artificiales,
miden la “deseabilidad aprendida” del movimiento, τ pq
I. INTRODUCCIÓN , de p a q, imitando a la feromona real depositada por

U LA metaheurística es un proceso de generación iterativo


que guía la búsqueda de soluciones combinando
diferentes conceptos de diversos campos, como inteligencia
las hormigas reales. Esta información se modifica
durante la ejecución del algoritmo dependiendo de las
soluciones encontradas por las hormigas.
artificial, evolución biológica, inteligencia colectiva, entre
otros. Una vez que cada hormiga ha generado una solución se
Una metaheurística es entonces, un algoritmo general el evalúa la misma y se puede depositar una cantidad de
cual puede ser aplicado a diferentes problemas de feromona en función de la calidad de su solución.
optimización con pequeñas modificaciones para adaptarlos al
problema en específico. El modo de operación genérico de un algoritmo ACO
Ejemplos de metaheurísticas son el Temple Simulado, incluye dos procedimientos adicionales, la evaporación de
Búsqueda Tabú, Búsqueda Local Iterativa, Cómputo los rastros de feromona y las acciones opcionales (daemon
Evolutivo, y Colonia de Hormigas. actions). La evaporación del rastro de feromona la lleva a
El siguiente trabajo, presenta este último algoritmo basado cabo el entorno y se usa como un mecanismo que evita el
en inteligencia colectiva (swarm intelligence). estancamiento en la búsqueda y permite que las hormigas
busquen y exploren nuevas regiones de espacio. Las
acciones opcionales llamadas en inglés daemon actions, no
II.OPTIMIZACIÓN BASADA EN COLONIAS DE HORMIGAS tienen correspondencia con el comportamiento de las
hormigas reales, para implementar tareas desde una
perspectiva global.
La Optimización basada en Colonia de Hormigas (Ant
Colony Optimization, ACO) es una metaheurística inspirada en
Algunos ejemplos de estas acciones son:
el comportamiento que siguen las hormigas para encontrar los
caminos más corotos entre las fuentes de comida y el
- Observar la calidad de todas las soluciones generadas y
hormiguero, surgida a partir del trabajo inicial de Dorigo,
depositar una nueva cantidad de feromona adicional
Maniezzo y Colorni sobre Sistema de Hormigas (Ant System)
sólo en las aristas asociadas a algunas soluciones
[1].
- Aplicar un procedimiento de búsqueda local a las
soluciones generadas por las hormigas antes de
Los algoritmos ACO son aptos para resolver problemas de
actualizar los rastros de feromona.
optimización combinatoria. Se basan en una colonia de
hormigas artificiales, representadas por agentes
computacionales simples, que trabajan de manera cooperativa
El algoritmo general para ACO se muestra a continuación:
y se comunican mediante rastros de feromona artificiales.
 Inicializar();
OPTIMIZACIÓN POR COLONIA DE HORMIGAS 2

for c=1 to Nro_ciclos feromona en los caminos prometedores y disminuye el de los


{ caminos no tan buenos.
for k=1 to Nro_ants
ant-k construye solución k; - Primero, se reducen todos los valores de feromona por
Guardar la mejor solución; medio del proceso de evaporación.
Actualizar Rastro (i.e., tij); - Después, se incrementa el nivel de feromona al
Reubicar hormigas para el próximo conjunto de soluciones buenas.
ciclo;
} τ ij =(1− ρ) τ ij + ∆ τ ij
Imprimir la mejor solución encontrada;
donde,
Para la inicialización, se deben fijar:
ρ ∈ ( 0 , 1 ] Es el factor de persistencia del rastro.
- El rastro inicial de feromona asociado a cada arista, τ 0,
que es un valor positivo pequeño, normalmente el n ú m . Hormigas
mismo para todas las aristas ∆ τ ij = ∑ ∆k τ ij Es la acumulación de rastro,
- El número de hormigas en la colonia, k k=1
- Los pesos que definen la proporción en la que afectarán proporcional a la calidad de las soluciones.
la información heurística.
- Los rastros de feromonas en la regla de transición 1
probabilística, denominados β y α respectivamente.

Para la construcción de una solución por la hormiga k se


procede a:
{
∆ k τ ij = Lk
sila hormiga k utilizó la arista pi , p j

en otro caso

Lk Representa el valor objetivo de la solución k (aparece en


- Se inicia con una solución parcial vacía, que se el denominador para problemas de minimización)
extiende a cada paso añadiéndole un componente de
solución factible elegido entre los vecinos de la
solución actual. Esto equivale a encontrar una ruta en el La evaporación de feromona evita una convergencia
grafo de construcción guiada por el mecanismo que demasiado rápida del algoritmo.
define el conjunto de vecinos viables con respecto a la
solución parcial.
- La elección de un vecino viable se realiza de manera III. MODELO ESTOCÁSTICO (EXPERIMENTO DE DOBLE
probabilística en cada paso de la construcción, PUENTE)
dependiendo de la variante ACO utilizada.
Siendo,
- El siguiente es el modelo de probabilidad con
retroalimentación para la elección del vecino viable:
Ψ :Hormigas por segundo que cruzaban el puente en cada
dirección a velocidad constante, depositando una unidad de
τ i j ηβij feromona.

{ }
α

para j ∈ No visitadas l s y l l :Camino corto y largo


pij (k )= ∑ τ αih ηihβ Escogiendo el camino corto t s=l s /v .
0 en otro caso
ll
El camino largo es r t s, donde r =
donde, ls

τ ij es el valor de feromona asociado a la arista ( pi , p j)


1
ηij = es el valor heurístico asociado a la arista ( pi , p j), (
d ij
d ij es la distancia euclídea entre los puntos pi y p j).
β y α son parámetros positivos que determinan la
importancia relativa de la feromona con respecto a la
información heurística.

Para la actualización del rastro, se aumenta el nivel de


OPTIMIZACIÓN POR COLONIA DE HORMIGAS 3

La probabilidad pia ( t ) de que una hormiga llegue a tomar una - Un comportamiento promedio del sistema, no uno
estocástico.
decisión en i∈ {1,2 } y seleccione una rama a ∈ {s ,l } en un
- Es un modelo en tiempo discreto, utiliza ecuaciones
instante de tiempo t, está dada por una función del total de
de diferencias.
feromona en la rama φ ia (t ), la cual es proporcional al número
de hormigas que han usado esa rama hasta el tiempo t. V. HORMIGAS ARTIFICIALES Y TRAYECTORIAS DE MÍNIMO
Probabilidad de escoger el camino más corto: COSTO

α
( t s +φ is ( t )) Consideremos un grafo G=(N , A) donde N es el conjunto
pis ( t )= α α de n =|N| nodos y A es el conjunto de arcos indirectos que los
( t s +φis ( t ) ) + ( t s+ φil ( t ) ) conectan.
Con el uso de memoria, las hormigas pueden implementar un
Donde α =2 número de comportamientos útiles que permiten construir las
soluciones al problema del mínimo costo de trayectoria.
El modelo asume que la cantidad de feromona en una rama es
proporcional al número de hormigas que han utilizado la rama; Estos comportamientos son:
en este modelo no se considera la evaporación de la
feromona. a) Solución probabilística a través de rastros de
feromonas, sin actualización de feromona de frente.
IV. HORMIGAS ARTIFICIALES b) Trayectoria determinística de vuelta con un ciclo de
eliminación y con actualización de feromona.
Las hormigas se mueven eligiendo el camino de manera c) Evaluación de la calidad de las soluciones generadas
probabilística: y usar la solución para determinar la cantidad de
pis ( t ): Es la probabilidad para una hormiga localizada en el feromona que se ha depositado.
d) Implementación de la evaporación de la feromona.
nodo i en el tiempo t para elegir el camino más corto, y pil ( t )
la probabilidad para elegir el camino más largo.
Estas probabilidades están en función del rastro de feromona El algoritmo Simple ACO (S-ACO) se implementa esos
φ ia (t ) de hormigas en el nodo i (i∈ {1,2 }) encontrada en la comportamientos más la evaporación de la feromona.

rama a, (a ∈ {s ,l }): a) Solución probabilística: las hormigas en S-ACO, van


del nido a la comida, por lo que van hacia adelante
α
[ φis ( t ) ] (forward mode), y van en retroceso si van de la
pis ( t )= α α comida al nido (backward mode).
[ φis ( t ) ] + [ φ il ( t ) ] a. En forward mode, las hormigas construyen
α
φil ( t ) ] una solución escogiendo de manera
[
pil ( t )= α α
probabilística el siguiente nodo.
[ φis ( t ) ] + [ φ il ( t ) ] b. Dado el grafo G=( N , A) , dos nodos
i , j∈ N son vecinos si existe un arco
La actualización del rastro en ambas ramas:
i , j∈ A .
φ is ( t ) =φis ( t−1 ) + pis ( t−1 ) mi (t−1 )+ p js ( t−1 ) m j (t−1 ) c. La opción probabilística está dada por el
rastro de feromona que antes ha sido
(i=1 , j=2 ; i=2 , j=1)
depositada.
φ il ( t ) =φil (t−1 ) + pil ( t−1 ) m i ( t−1 )+ p jl ( t −r ) m j ( t−r )
d. Las hormigas en forward mode, no dejan
(i=1 , j=2 ; i=2 , j=1) rastro de feromona, solo en retroceso.
b) Retroceso determinística y actualización de la
Donde m i (t ) es el número de hormigas en el nodo i en el feromona: El uso de memoria permite que una
tiempo t, dado por: hormiga trace de nuevo el rastro de feromona
mientras busca el nido.
mi ( t )= p js ( t−1 ) m j ( t−1 )+ p jl ( t−r ) m j ( t−r )
a. Implementan ciclos de eliminación.
(i=1 , j=2 ; i=2 , j=1)

El modelo considera:
OPTIMIZACIÓN POR COLONIA DE HORMIGAS 4

c) Actualización de la feromona basada en la calidad eliminan ciclos que se crearon mientras se buscaba el
de la solución: La intensidad de la feromona decrece nodo destino.
con respecto al tiempo debido a la evaporación. 3. Durante el regreso, la k-ésima hormiga deposita una
cantidad de ∆ τ k feromona, en los arcos que ha
VI. S-ACO
visitado:

Para cada arco (i , j) en el grafo G=(N , A) asociamos una τ ij ← τ ij + ∆ τ k


variable τ ij llamada rastro de feromona artificial (artificial
pheromone trail).

- Comportamiento de las hormigas en la búsqueda del


camino

(Ant´s Path-Searching Behavior)

En cada nodo, información local almacenada en sí mismo, o


en los arcos, son leídos por la hormiga y decide de una manera
estocástica a que nodo se moverá la siguiente vez.

1. Al principio de cada proceso, una cantidad constante


- Evaporación del Rastro de Feromona
de feromona τ ij =1 , ∀(i , j) ∈ A se asigna a todos
los arcos. (Pheromone Trail Evaporation)
2. Cuando se localiza en el nodo i una hormiga k utiliza
el rastro de feromona τ ij para sacar obtener la τ ij ←(1−ρ)τ ij donde ρ ∈¿ es un parámetro.
probabilidad de escoger el siguiente nodo j:

τ αij

{ } VII. ALGORITMOS ACO


k
si j ∈ N i
pkij = ∑l∈N τk
i
α
il

0 , si j∉ N ki - MinMax-AS (control sobre los valores del rastro)


- AS-rank (ranking de soluciones)
k
Donde N es la vecindad de la hormiga k en el nodo i,
i - AS-elistim (sólo la mejor solución)
contiene todos los nodos conectados directamente al nodo i.
- Ant Colony System (ACS)
De esta manera, las hormigas evitan regresar a este nodo.
- Ant-Q (basado en Q-Learning)
- Trazado del camino y actualización de la feromona
VIII.APLICACIONES
(Path Retracing and Pheromone Update)
- TSP
1. Cuando llegan al nodo destino, las hormigas cambian - Scheduling
de forward mode a backward mode para regresar y - Vehicle Routing Problem (VRP)
vuelven a trazar el mismo camino hacia el nodo - Data Mining (Ant-Miner & Ant-Tree)
- Problemas de Grafos (Clique, Coloreo, etc.)
- Ruteo Dinámico (ANT-Net)
fuente.
2. Ant - Problemas con funciones continuas y restricciones
es - Geometría Computacional
de regresar,
IX. IMPLEMENTACIÓN DE ACO PARA EL PROBLEMA DEL
AGENTE VIAJERO
OPTIMIZACIÓN POR COLONIA DE HORMIGAS 5

Suponiendo un problema como se muestra en la siguiente


figura, en la cual, se debe solucionar la ruta óptima para visitar
las siguientes ciudades:
τ αij

{ }
k
k k α
si j ∈ N i
p=ij ∑l∈N τi il

0 , si j∉ N ki

Sk = Sk Å j
}

Su implementación se puede observar en el Apéndice A,


utilizando MATLAB para efectos de simulación.

X.REFERENCIAS

[1] M. Dorigo ,T. Stüztle, Ant Colony Optimization,


Definiendo el espacio de búsqueda, se deberá considerar la Massachussetts Institute of Technology, 2004.
complejidad del problema tomando en cuenta las posibles [2] http://iridia.ulb.ac.be/~mdorigo/ACO/ACO.html
combinaciones, [3]
http://www.scholarpedia.org/article/Ant_colony_optimiza
tion

Tamaño N=5,  5!=120 Posibles soluciones [4] Eric Bonabeau, M. Dorigo, Guy Theraulaz. Swarm
intelligence: from natural to artificial systems, Oxford
University Press
N=6,  6!=720
N=100,  100! = ? XI. A A: C F PÉNDICE ÓDIGO UENTE

1. main.m
Por lo que cada punto en el grafo, es una permutación de las
ciudades. El siguiente archivo considera los siguientes parámetros
para su ejecución:
El espacio de búsqueda se puede representar mediante el
siguiente diagrama de árbol, definiendo las posibles - x: vector de ubicación en el eje x de la ciudad
combinaciones: (coordenada x)
- y: vector de ubicación en el eje y de la ciudad
(coordenada y)
1 - d: Distancia total para cada posible ruta entre
ciudades

La mejor solución viene dada por:

Sk: Solución o permutación construida por la hormiga k - t: Trazado de la ruta primaria, ones forma una matriz
de n x n. Representación del rastro de feromona
Sk = Ciudad_Inicial; (escogida de acuerdo a algún criterio)
mientras no se haya completado el tour puede ser realizado a través de una matriz de
{ números reales (t) de n x n.
Seleccionar próxima ciudad (j) con probabilidad
(i es la última ciudad incluida)
OPTIMIZACIÓN POR COLONIA DE HORMIGAS 6

- h: Arco de conveniencia, típicamente 1/dij, uno de title(['Curso óptimo de tamaño:


',num2str(k)]);
los parámetros para calcular la probabilidad de elegir
un arco óptimo. (Heurística Local) 2. info_hormigas.m
- iter: Número de ciclos
- alpha: Orden del efecto de visión de las hormigas. El function
[x,y,d,t,h,iter,alpha,beta,e,m,n,el] =
sistema admite que las hormigas posean una cantidad
info_hormigas;
de visibilidad nij, asociada con cada tramo, en un
valor que depende de la distancia del mismo (los iter=100;%Núm. de Iteraciones
cercanos tienen mayor preferencia que los lejanos) m=200;%Núm. de Hormigas
- beta: Orden del efecto de trazo
x=[8 0 -1 2 4 6 3 10 2.5 -5 7 9 11 13];
- e: Coeficiente de evaporación y=[2 4 6 -1 -2 0.5 0 3.7 1.8 1 0 4 3 2];
- m: número de hormigas
- n: número de nodos (tamaño de x) n=length(x);%Núm. de Nodos

- el: Coeficiente de costo de eliminación común


for i=1:n %Matriz de distancias entre
[x,y,d,t,h,iter,alpha,beta,e,m,n,el] = ciudades
info_hormigas; for j=1:n
d(i,j)=sqrt((x(i)-x(j))^2+(y(i)-
for i=1:iter y(j))^2);
[app] = p1ra_Posicion_hormigas(m,n); end
[at] = end
ciclo_hormigas(app,m,n,h,t,alpha,beta);
at = horzcat(at,at(:,1)); %Concatenar e=.1;%Coef. Evaporación
[cost,f]= cost_hormigas(m,n,d,at,el);
[t] =
alpha=1; %Orden del efecto de visión
actualizacion_rastro(m,n,t,at,f,e);
beta=5; %Orden del efecto de trazo
costoa(i) = mean(cost);
[mincost(i),number] = min(cost);
%Regresa los índices del vector donde están for i=1:n %Matriz de visión
los mínimos for j=1:n
besttour(i,:) = at(number,:); %La mejor if d(i,j)==0
ruta es la seleccionada con respecto al h(i,j)=0;
índice del mínimo en la matriz del tour else
iteracion(i)= i; h(i,j)=1/d(i,j); %Conveniencia
end del camino i,j (conocimiento a priori,
usualmente 1/dij
end
subplot(2,1,1);
end
plot(iteracion,costoa);
end
title('Promedio de costo (distancia) VS
Núm. de ciclos');
xlabel('Iteración'); t=0.0001*ones(n);%Trazado primario
ylabel('Distancia'); el=.96;%Coeficiente del costo común de
eliminación
[k,l]=min(mincost);
3. p1ra_Posición.m
for i=1:n+1
X(i)= x(besttour(l,i)); function
Y(i)= y(besttour(l,i)); [app]=p1ra_Posicion_hormigas(m,n);
end
rand('state',sum(100*clock)); %Reinicia
valores por cada estado y presenta
subplot(2,1,2); random numbers en ese estado
plot(X,Y,'--rs','LineWidth',2,...
'MarkerEdgeColor','k',... for i=1:m %Hasta la última hormiga
'MarkerFaceColor','g',...
'MarkerSize',10)
xlabel('X');ylabel('y');axis('equal'); app(i,1)=fix(1+rand*(n-1));
for i=1:n %Ubicación hormigas por nodo
text(X(i)+.5,Y(i),['\leftarrow nodo (primaria), fix
',num2str(besttour(l,i))]);
end end
OPTIMIZACIÓN POR COLONIA DE HORMIGAS 7

%e: Coeficiente de evaporación,


4. ciclo_hormigas.m persistencia del rastro

function [at] = function [t] =


ciclo_hormigas(app,m,n,h,t,alpha,beta); actualizacion_rastro(m,n,t,at,f,e);
for i=1:m %Hormigas
%app Ubicación de hormigas por nodo for j=1:n %Nodos
for i=1:m %Hasta la última hormiga dt=1/f(i); %Acumulación de
mh=h;
rastro
for j=1:n-1
c=app(i,j);
mh(:,c)=0; t(at(i,j),at(i,j+1))=(1-
e)*t(at(i,j),at(i,j+1))+dt;
temp=(t(c,:).^beta).*(mh(c,:).^alpha); %Actualizando rastro
s=(sum(temp));
p=(1/s).*temp; %Probabilidad de end
elegir el camino óptimo end
r=rand;
s=0;
for k=1:n
s=s+p(k); %Seleccionar la
siguiente ciudad
if r<=s %Si es óptimo
app(i,j+1)=k; %Crear la
nueva matriz del tour
break
end
end
end
end
at=app;% Generación de la matriz del tour XII. APÉNDICE B: RESULTADOS
durante el ciclo

Promedio de costo (distancia) VS Núm. de ciclos


5. cost_hormigas.m 100

80
function [cost,f]=
Distancia

cost_hormigas(m,n,d,at,el);
60
% m: Hormigas
% n: Nodos 40
% d: Distancia 0 10 20 30 40 50 60 70 80 90 100
Iteración
% at: Tour con probabilidad Curso óptimo de tamaño: 45.562
% el: Coeficiente de costo de 6  nodo 3

eliminación común 4  nodo 2  nodo 12 8


 nodo
 nodo 13
2  nodo 9  nodo 1  nodo 14
for i=1:m %Hasta la última hormiga
y

 nodo 10
 nodo 6
s=0; 0  nodo 7  nodo 11
 nodo 4
for j=1:n %Hasta la última ciudad -2  nodo 5
-5 0 5 10 15
s=s+d(at(i,j),at(i,j+1)); X
end
f(i)=s; %Valor objetivo de la
solución k
end
cost=f;
f=f-el*min(f);%Eliminación de costo
común

6. actualización_rastro.m

%at: Tour seleccionado


%f: Valor objetivo de la solución k
OPTIMIZACIÓN POR COLONIA DE HORMIGAS 8

Promedio de costo (distancia) VS Núm. de ciclos


80

70
Distancia

60

50

40
0 10 20 30 40 50 60 70 80 90 100
Iteración
Curso óptimo de tamaño: 45.562
6  nodo 3

4  nodo 2 nodo 12 8
nodo
 nodo 13
2  nodo 9  nodo 1  nodo 14
y

 nodo 10
0  nodo 6
 nodo 7  nodo 11
 nodo 4
-2  nodo 5
-5 0 5 10 15
X

Promedio de costo (distancia) VS Núm. de ciclos


80

70
Distancia

60

50

40
0 10 20 30 40 50 60 70 80 90 100
Iteración
Curso óptimo de tamaño: 45.7844
6  nodo 3

4  nodo 2 nodo 12 8
nodo
 nodo 13
2  nodo 9  nodo 1  nodo 14
y

 nodo 10
0  nodo 6
 nodo 7  nodo 11
 nodo 4
-2  nodo 5
-5 0 5 10 15
X

You might also like