You are on page 1of 16

Captulo

El algoritmo de
optimizacin por enjambre
de partculas (PSO)
Objetivos

El objetivo de este captulo es presentar la analoga y los conceptos bsicos


del algoritmo de optimizacin por enjambre de partculas ("Particle Swarm
Optimization", PSO). Con esto, el lector ser capaz de aplicarlo en implementaciones
propias. De forma general, se describe la teora referente a PSO y su codicacin.
Por medio de un ejemplo prctico se analizan los operadores principales y sus
aplicaciones, mientras que de forma terica se estudian algunas modicaciones
propuestas en la literatura.

Optimizacin y mtodos de cmputo evolutivo Cuevas

Alfaomega

68

Optimizacin

4.1 Introduccin a la optimizacin por enjambre de partculas

Desde sus inicios la optimizacin por enjambre de partculas ha atrado la atencin de los investigadores en diversas reas de ingeniera y ciencias. Existen diferentes campos de estudio en los
cuales hay situaciones que exigen encontrar soluciones que puedan considerarse como mejores, con
base en ciertos criterios establecidos. Algunos de esos problemas no permiten el uso de mtodos
tradicionales de optimizacin, porque adems de realizar operaciones complejas, pueden quedar
atrapados en soluciones locales. Para hacer frente a estas situaciones, el algoritmo PSO es fcil de
implementar y sus operadores son sencillos de comprender para el lector. Adems, por medio de la
distribucin de la poblacin de partculas en el espacio de bsqueda y de los operadores propios de
PSO se evita caer en los ptimos locales y con esto dar soluciones imprecisas.
La optimizacin por enjambre de partculas estndar fue originalmente propuesta por Kennedy
y Eberhart [31] y a pesar de que existe una gran cantidad de modificaciones e hibridaciones, este captulo se centra en el estudio del mtodo PSO con sus operadores bsicos. Adems de esto tambin se
analizarn algunas de las modificaciones de PSO que son ms aceptadas en la comunidad cientfica
y su aplicacin a problemas con restricciones. Actualmente, es posible encontrar en la literatura
referente aplicaciones que involucran el uso de enjambres de partculas en reas como: el control
automtico [32], el diseo de rutas de vehculos [33], planeacin de rutas para robots [34], estimacin
del consumo elctrico [35], etctera. Con lo que se comprueba que PSO sigue siendo una alternativa
confiable a las tcnicas tradicionales.
A partir del origen del PSO ha surgido una nueva vertiente en los algoritmos metaheursticos
denominada: inteligencia de enjambre [36]. Una gran cantidad de tcnicas metaheursticas usan la
inteligencia de enjambre como parte de sus operadores. Aunque este concepto se puede aplicar con
diferentes analogas de la naturaleza, la propuesta original del PSO est inspirada en el comportamiento que tienen las bandadas de aves o los bancos de peces [31], [2]. De forma general, para este
algoritmo se tiene una poblacin de partculas, las cuales operan sobre un espacio de bsqueda
acotado. Para cada iteracin se generan nuevas posiciones para las partculas, las cuales son obtenidas usando una velocidad que se calcula considerando la mejor posicin global y la mejor posicin actual de cada partcula. Para determinar la calidad de poblacin se requiere de una funcin
objetiva, donde se evalan los individuos cada vez que toman una nueva posicin. En la seleccin
de los miembros de la poblacin se debe saber si se trata de un problema de maximizacin o minimizacin, de esta forma los operadores de PSO sern empleados correctamente. En cada iteracin
los elementos de la poblacin comparten informacin, la cual les permite acercarse con mayor o
menor rapidez a la solucin global del problema.
A diferencia de otros mtodos similares, la optimizacin por enjambre de partculas no tiene
operaciones que implican el cruzamiento o la mutacin de elementos de la poblacin. Con esto se
evita el uso de sistemas de numeracin distintos al del espacio de bsqueda. Los operadores de
PSO permiten explorar el espacio de bsqueda y a la vez explotar las regiones en las que se tiene
ms probabilidad de encontrar el ptimo global. Este captulo describe la teora referente a PSO y
adems de explicar los operadores del algoritmo, tambin se explican algunas versiones de PSO
modificadas para incrementar su rendimiento en diversos problemas de optimizacin. Finalmente
se muestra un ejemplo prctico codificado usando el algoritmo PSO estndar, para que el lector
pueda aplicarlo fcilmente.
Alfaomega

Optimizacin y mtodos de cmputo evolutivo Cuevas

El algoritmo de optimizacin por enjambre de partculas (PSO)

4.2 Optimizacin por enjambre de partculas

69

El modelo bsico del PSO considera las soluciones candidatas como partculas, las cuales de forma
inicial estn distribuidas de manera aleatoria en un espacio de bsqueda, este conjunto de partculas
es conocido como la poblacin inicial. La calidad de la poblacin se determina al evaluar a los individuos en la funcin objetivo, con esto tambin se determina al mejor de los elementos. Las nuevas
posiciones de las partculas y la velocidad con que stas son desplazadas, se calculan considerando
el valor del mejor elemento global y el valor actual de cada partcula en conjunto con un nmero
aleatorio. Cada vez que las partculas son desplazadas, deben de evaluarse nuevamente en la funcin objetivo. Solamente se actualizan las mejores partculas actual y global, cuando se encuentran
valores que mejoras a los que se tenan almacenados. El pseudocdigo del algoritmo 4.1 muestra
las fases principales del algoritmo PSO estndar, mientras que en las secciones siguientes se detalla
cada una de estas fases.
Algoritmo 4.1 Optimizacin por enjambre de partculas
1.

Inicializar la poblacin de las partculas

2.

Evaluar la poblacin en la funcin objetivo y elegir la mejor partcula

3.

while (criterio de paro)

4.

for (todas las partculas en todas las dimensiones)

5.

Generar una nueva velocidad

6.

Calcular una nueva posicin

7.

Evaluar la funcin objetivo y elegir la mejor partcula

8.

end for

9.

Actualizar la mejor partcula de la poblacin

10.

end while

4.2.1 Inicializacin
Como en la mayora de los algoritmos metaheursticos PSO requiere de una etapa de inicializacin.
De forma genrica en esta fase se crean las soluciones candidatas que a travs del proceso de optimizacin sern modificadas por los operadores propios de cada algoritmo. En el caso del PSO, la
poblacin inicial de partculas (soluciones candidatas), se genera distribuyendo aleatoriamente las
soluciones en un espacio de bsqueda acotado por los lmites superior e inferior definidos previamente. En esta fase tambin se definen los parmetros del problema a optimizar, es decir las dimensiones, lmites del espacio de bsqueda y las restricciones (en caso de que existan). La ecuacin 4.1
describe la optimizacin de las partculas para PSO.

x ki, t = l k + rand (uk l k ), x ki, t xtt

(4.1)

Donde: xki,t es la i-sima partcula de la poblacin xt, i es el ndice que se refiere al nmero de partculas y tiene como valor mximo el tamao de la poblacin (i = 1, 2, , Par_N ). La dimensin del
Optimizacin y mtodos de cmputo evolutivo Cuevas

Alfaomega

70

Optimizacin

problema se define por la variable k y el nmero de iteraciones con la variable t. Mientras lk y uk son
los lmites inferior y superior respectivamente para una de las dimensiones del espacio de bsqueda,
por ltimo rand es un nmero aleatorio uniformemente distribuido entre el rango de cero a uno.

4.2.2 Velocidad de las partculas


Para poder obtener la nueva posicin que tendrn las partculas en el espacio de bsqueda, primero
es necesario calcular la velocidad de cada una de ellas. Para esto se necesita el valor previo de la
velocidad, si se trata de la primer iteracin este valor ser igual a cero. Adems se necesitan los
mejores valores globales y locales de cada partcula. En la ecuacin 4.2 se presenta cmo se lleva a
cabo el clculo de dicha velocidad.
vt1  vt  rand1  (P  Xt)  rand2  (G  Xt)

(4.2)

Donde: vt+1 es el valor de la velocidad que se calcula para la iteracin t+1, vt es la velocidad en
la iteracin anterior t, xt es el vector que contiene las posiciones de cada partcula, P contiene las
mejores posiciones actuales asociadas a la vecindad de cada partcula, mientras que G es la mejor
partcula actual a nivel global. Por otra parte, rand1 y rand2 son nmeros aleatorios usualmente
distribuidos de forma uniforme en el rango de cero a uno. Las operaciones matemticas se realizan
de forma vectorial respetando las reglas del lgebra de vectores. En la figura 4.1 se describen grficamente los elementos que intervienen tanto en el clculo de la velocidad, como en la obtencin de
las nuevas posiciones de cada partcula.
pi,t
gi,t
rand2x(gi,ti t-x)

rand1x(pi,ti t-x)
vi,t+1
xi,t
xi,t+1
i,t

Figura 4.1. Descripcin grfica del clculo de velocidades


y movimiento de partculas en PSO.

Los valores aleatorios rand1 y rand2 tienen como propsito en la ecuacin 4.2, dar la posibilidad de que se elija cualquier trayectoria siempre y cuando se siga la direccin del ptimo local y
global. Ambas direcciones se conjuntan en una sola operacin. Es importante mencionar al lector
que la mayora de las modificaciones del PSO que se pueden encontrar en la literatura, realizan alteraciones al clculo de la velocidad. De forma tal que el autor tiene la libertad de proponer nuevas
versiones del algoritmo.
Alfaomega

Optimizacin y mtodos de cmputo evolutivo Cuevas

71

El algoritmo de optimizacin por enjambre de partculas (PSO)

4.2.3 Movimiento de las partculas


Despus de calcular la velocidad las partculas son desplazadas hacia nuevas posiciones en la iteracin actual. Para realizar este movimiento se realiza una simple operacin donde se combina la velocidad con las posiciones anteriores de la poblacin, este operador se describe en la ecuacin 4.3.
xt+1 = xt + vt+1

(4.3)

Donde xt+1 es el vector donde son almacenadas las nuevas posiciones obtenidas en la iteracin t+1,
xt corresponde a las posiciones previas de las partculas, es decir, las que se calcularon en la iteracin t. Finalmente vt+1 es el vector de velocidad que se obtuvo usando la ecuacin 4.2. En la literatura y como parte de las modificaciones, se pueden encontrar implementaciones que alteran la
forma en que las partculas son desplazadas.

4.2.4 Estructura bsica del algoritmo PSO


En el diagrama de flujo de la figura 4.2 se muestra a detalle la estructura bsica del algoritmo PSO.

Inicializar las posiciones de la poblacion y


las velocidades, ecuaciones 4.1 y 4.2

Evaluar la poblacion
en la funcin objetivo (f(x))

Extraer la mejor partcula actual(P)


de acuerdo a la funcin objetivo

Generar una nueva velocidad


ecuacin 4.2

Generar una nueva posicin


ecuacin 4.3

No
Se han evaluado
todas las partculas?
No
S
Actualiza la mejor partcula
de la poblacin(G)

Se cumple el
criterio de paro?

S
Fin

Figura 4.2. Diagrama de flujo del algoritmo PSO.


Optimizacin y mtodos de cmputo evolutivo Cuevas

Alfaomega

72

Optimizacin

De acuerdo con la figura 4.2, en el algoritmo PSO primero se genera una poblacin inicial de
partculas y con esto tambin son inicializadas las velocidades de cada una de ellas, mediante las
ecuaciones 4.1 y 4.2. Despus, las partculas son evaluadas en la funcin objetivo la cual depende
del problema a optimizar. El siguiente paso consiste en extraer la mejor partcula actual, dependiendo de la funcin objetivo y del problema. Es decir, el mximo o el mnimo. Como siguiente punto,
se genera un nuevo vector de velocidades para una partcula en especfico, usando la ecuacin 4.2.
Seguido de esto se genera una nueva posicin para dicha partcula, mediante la ecuacin 4.3. Estos
dos ltimos pasos, se repiten para todas las partculas de la poblacin y una vez que toda la poblacin fue evaluada, se verifica el criterio de paro. Si dicho criterio se cumple, el algoritmo termina,
si no, se repite el proceso.

4.3 Codificacin de PSO

Todas las etapas que se han explicado en las secciones anteriores, se han codificado en MatLAB.
Al igual que las dems implementaciones presentadas en este libro, la de PSO ha sido realizada de
forma sencilla, con el propsito de facilitar la comprensin al lector. Para verificar la funcionalidad
del algoritmo PSO se usa como funcin objetivo la ecuacin de Rosenbrock[37], que con frecuencia
es considerada para analizar el comportamiento de las tcnicas metaheursticas. La funcin de Rosenbrock y sus caractersticas se describen en la ecuacin 4.4.
d 1

2
2
f ( x ) = 100 ( x +1 x i2 ) + ( x i 1) ,
i 1

x i [ 5, 10 ]

(4.4)

Donde: el espacio de bsqueda est acotado por los lmites l = 5 y u = 10, d corresponde al
nmero de dimensiones, para el ejemplo propuesto d = 2. La ecuacin de Rosenbrock es un problema de minimizacin, que tiene como el ptimo global en f(x) = 0 con x = [1,1] para d = 2. La
superficie de bsqueda para este problema se muestra en la figura 4.3, mientras que la codificacin
en MatLAB se describe en el programa 4.1.

Figura 4.3. Superficie de bsqueda de la funcin de Rosenbrock.


Alfaomega

Optimizacin y mtodos de cmputo evolutivo Cuevas

73

El algoritmo de optimizacin por enjambre de partculas (PSO)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%
%Funcin de Rosenbrock
%Erik Cuevas, Valentn Osuna-Enciso, Diego Oliva, Margarita Daz
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%
%Funcin que recibe un vector x n-dimensional
function fx = rosenbrock(x)
%Nmero de dimensiones 2 para este problema
n = 2;
sum = 0;
%Funcin de Rosenbrock
for j = 1:n-1;
sum = sum+100*(x(j)^2-x(j+1))^2+(x(j)-1)^2;
end
%Regresa el valor de la funcin objetivo
fx = sum;

Programa 4.1. Cdigo en MatLAB para la funcin de Rosenbrock.

El cdigo para PSO se describe en el programa 4.2. Para fines prcticos y con el propsito de
evitar complicaciones al lector, se ha agregado una fase adicional, donde se verifica que las nuevas
posiciones obtenidas en cada iteracin, no salgan de las dimensiones del espacio de bsqueda.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%
%PSO Estndar, propuesto por Kennedy y Eberhart [31]
%Prueba con funcin de Rosenbrock
%Erik Cuevas, Valentn Osuna-Enciso, Diego Oliva, Margarita Daz
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%
%Limpiar memoria y cerrar ventanas de MatLAB
close all
clear all
%dimensiones del espacio de bsqueda
d = 2;
%lmites del espacio de bsqueda
%lmite inferior
l = [-5, -5];
%lmite superior
u = [10, 10];
%Mximo nmero te iteraciones de PSO
Max_iter = 500;
%Cantidad de partculas en la poblacin
Part_N = 50;
Optimizacin y mtodos de cmputo evolutivo Cuevas

Alfaomega

74

Optimizacin

%Proceso de inicializacin de PSO Ecuacin 4.1


x = l(1) + rand(Part_N,d).* (u(1) - l(1));
%Evala la funcin objetivo
for i = 1:Part_N
obj_func(i,:) = rosenbrock(x(i,:));
end
%Obtiene el mejor valor global (mnimo)
[glob_opt, ind] = min(obj_func);
%Vector de ptimo global
%Vector de unos del tamao de la poblacin
G_opt = ones(Part_N,d);
%Valores del ptimo en dimensin 1
G_opt(:,1) = x(ind,1);
%Valores del ptimo en dimensin 2
G_opt(:,2) = x(ind,2);
Mejor_pos = [x(ind,1),x(ind,2)];
%Mejor local para cada partcula
Loc_opt = x;
%Inicializa velocidades
v = zeros(Part_N,d);
%inicia proceso de optimizacin PSO
t = 1;
%Criterio de paro
while t < Max_iter
%Calcula la nueva velocidad ecuacin 4.2
v = v + rand(Part_N,d) .* (Loc_opt - x) + rand(Part_N,d) .* (G_opt
- x);
%Calcula nueva posicin ecuacin 4.3
x = x + v;
for i = 1:Part_N
%Se verica que las partculas no se salgan de los lmites u y l
if x(i,1) > u(1)
x(i,1) = u(1);
elseif x(i,1) < l(1)
x(i,1) = l(1);
elseif x(i,2) > u(2)
x(i,2) = u(2);
elseif x(i,2) < l(2)
x(i,2) = l(2);
end
%Se evalan las nuevas posiciones en la funcin objetivo
Nva_obj_func(i,:) = rosenbrock(x(i,:));
%Se verica si se actualizan los ptimos locales
if Nva_obj_func(i,:) < obj_func(i,:)
%Actualiza ptimo local
Loc_opt(i,:) = x(i,:);
%Actualiza funcin objetivo
obj_func(i,:) = Nva_obj_func(i,:);
end
end
%Obtiene el mejor valor global (mnimo)
[Nvo_glob_opt, ind] = min(obj_func);
Alfaomega

Optimizacin y mtodos de cmputo evolutivo Cuevas

75

El algoritmo de optimizacin por enjambre de partculas (PSO)

%Se verica si se actualiza el ptimo global


if Nvo_glob_opt < glob_opt
glob_opt = Nvo_glob_opt;
%Valores del ptimo en dimensin 1
G_opt(:,1) = x(ind,1);
%Valores del ptimo en dimensin 2
G_opt(:,2) = x(ind,2);
Mejor_pos = [x(ind,1),x(ind,2)];
end
%Almacena los valores de funcin objetivo en cada iteracin
Evol_func_obj(t) = glob_opt;
%Incrementa iteraciones
t = t + 1;
end
%Graca la evolucin de la funcin objetivo
plot(Evol_func_obj)
disp([Mejor posicin x: ,num2str(Mejor_pos)])
disp([Mejor valor funcin objetivo: ,num2str(glob_opt)])

Programa 4.2. Cdigo en MatLAB para el algoritmo PSO.


Un proceso adicional permite que en cada iteracin sea almacenado el ptimo global, que se
grafica al final del proceso de optimizacin. En la figura 4.4(a) se presenta una vista superior de la
superficie de la funcin objetivo, donde adems se grafican la poblacin y el ptimo global al ser
inicializados. En la figura 4.4(b) aparece la poblacin y el ptimo global actuales tras las primeras
125 iteraciones. Mientras que en la figura 4.4(c) se grafican tanto la poblacin final como el ptimo
global al trmino del proceso de optimizacin. Finalmente la evolucin de los mejores valores de
la funcin objetivo, se presenta en la figura 4.4(d), para obtener estos resultados se han empleado
50 partculas y 250 iteraciones. Estos valores pueden calibrar de diversas maneras, en este captulo
han sido elegidos tras diversos experimentos realizados. La mejor posicin del ptimo global obtenido es x = [0.9936,0.992] con un valor de f(x) = 0.002, los cuales son muy cercanos a los valores
esperados para este problema.
10

10

Espacio de bsqueda
Poblacin inicial
ptimo global inicial

8
6

2
Eje x2

Eje x2

Espacio de bsqueda
Poblacin actual
ptimo global actual

0
-2

0
-2

-4

-4

-6

-6

-8

-8

-10

-10

10
8

-5

0
Eje x1

a)

Espacio de bsqueda
Poblacin final
ptimo global final

-10

-10

10
8

Optimizacin
y mtodos de cmputo evolutivo Cuevas
6
6
4

-2
-4

f(x1,x2)

Eje x2

2
0

4
2
0
-2
-4

-5

0
Eje x1

b)
Alfaomega

Eje x2

Eje x2

2
0
-2

0
-2

-4

-4

-6

-6

-8

-8

-10

-10

76

-10

-5

0
Eje x1

10

Espacio de bsqueda
Poblacin final
ptimo global final

8
6

-5

0
Eje x1

10
8
6

4
f(x1,x2)

2
Eje x2

Optimizacin
-10

0
-2

2
0
-2

-4

-4

-6

-6

-8

-8

-10

-10

-10

-5

0
Eje x1

-10

-5

c)

0
Interacciones

d)

Figura 4.4. Ejemplo de optimizacin usando el algoritmo PSO: a) poblacin y ptimo global despus de
ser inicializados. b) poblacin y ptimo global tras 125 iteraciones. c) poblacin y ptimo global al final de
las iteraciones. d) evolucin de la funcin objetivo.

4.4 Variantes de PSO

Como se ha analizado en las secciones anteriores el algoritmo PSO es una alternativa eficiente para
diversos problemas de optimizacin. Sin embargo, algunas investigaciones han comprobado que este
mtodo puede quedar atrapado en ptimos locales [38], lo cual afecta directamente su desempeo. Con
el objetivo de contrarrestar esta deficiencia, se han generado un gran nmero de variantes del PSO.
Algunas de ellas se basan en la modificacin de la etapa de inicializacin de la poblacin. Otras
incluyen nuevos parmetros que permiten generar un balance entre la exploracin ya explotacin.
Mientras que algunos investigadores han propuesto diferentes tcnicas que incluyen vectores de
inercia u operaciones de mutacin usando el ptimo global tras cada iteracin. Tambin se han hecho
propuestas para que el PSO pueda resolver problemas de optimizacin con restricciones. Sin embargo, es importante aclarar que no todas las variantes mejoran completamente el desempeo de PSO,
para esto se debe buscar cul se adapta mejor al problema que se pretende resolver. En esta seccin
se analizarn las variantes ms importantes de PSO que se han encontrado tras un anlisis minucioso.

4.4.1 Variantes en el proceso de inicializacin


Dentro de las diferentes tcnicas de inicializacin que se proponen una que resulta muy interesante,
presenta el uso del Opposition-Based Larning, OBL[39], [40], el cual es un mtodo de aprendizaje
automtico, que se encarga de encontrar los valores opuestos de una poblacin en el espacio de
bsqueda. De acuerdo con los autores de OBL un nmero opuesto se puede definir por medio de la
ecuacin 4.5.
x j = uj + lj xj

(4.5)

Para la ecuacin 4.5, x j corresponde al valor opuesto del elemento de la poblacin, mientras
que xj es un elemento de la poblacin que previamente ha sido inicializado (por ejemplo: aleatoAlfaomega

Optimizacin y mtodos de cmputo evolutivo Cuevas

77

El algoritmo de optimizacin por enjambre de partculas (PSO)

riamente). Finalmente uj y lj corresponden a los lmites superior e inferior del espacio de bsqueda en la dimensin j, respectivamente. Una vez que las posiciones opuestas de las partculas son
calculadas, stas deben evaluarse en la funcin objetivo. Las mejores partculas existentes entre la
poblacin generada de manera aleatoria y sus valores opuestos, son las que sern optimizadas por
los operadores de PSO.
x si f x < f ( x )
(4.6)
x=
x si otro caso

( )

La ecuacin 4.6 presenta la regla empleada para elegir los valores que existen entre ambas
poblaciones. Aunque en este caso se presenta para minimizar la funcin objetivo, slo cambiando
el signo se puede adaptar para un problema de maximizacin. Es importante mencionar que el OBL
se puede incorporar en diversas etapas del proceso de optimizacin y no solamente en la inicializacin. Es decir, cada vez que la poblacin sufre alguna modificacin, se pueden sus valores opuestos.
En la figura 4.5 se muestra una descripcin grfica del proceso de optimizacin usando el
algoritmo OBL. En la figura 4.5 (a), se presenta como ejemplo el espacio de bsqueda de una funcin matemtica de prueba en tres dimensiones. Para este problema se pretende encontrar el valor
mximo de dicha funcin usando OBL. Por lo tanto, en la figura 4.5 (b), se tienen tres conjuntos de
posibles soluciones. La poblacin P (lnea punteada), corresponde al conjunto de soluciones iniciales. Mientras que la poblacin OP (lnea con guiones) se refiere al conjunto de soluciones opuestas,
que han sido calculadas con la ecuacin 4.5. Por lo tanto, al comparar ambos conjuntos usando la
ecuacin 4.6, se genera un nuevo conjunto P que contiene las mejores soluciones existentes entre
las soluciones iniciales y las opuestas. De tal manera que este nuevo conjunto puede ser modificado
por medio de los operadores del algoritmo PSO.

a)

b)

Figura 4.5. Ejemplo grfico del funcionamiento del OBL.


Adems del uso de OBL como estrategia de inicializacin, dentro de las variantes de PSO existen una gran cantidad de investigaciones, que se han llevado a cabo empleando diferentes secuencias
matemticas. Ejemplo de esto se presenta en la referencia [41], donde los autores hacen un estudio de
Optimizacin y mtodos de cmputo evolutivo Cuevas

Alfaomega

78

Optimizacin

los efectos que se tienen al iniciar la poblacin con las secuencias de Halton, Sobol y Faure. Aqu se
logra comprobar que la secuencia de Sobol es la que da mejores resultados empleando PSO.

4.4.2 Variantes en la velocidad de las partculas


Otras modificaciones que comnmente se llevan a cabo para incrementar el rendimiento del algoritmo PSO, consisten en generar nuevas ecuaciones para el clculo de la velocidad de las partculas.
Una de las tcnicas ms usadas para calcular la velocidad se presenta en la ecuacin 4.7.
vt+1 = vt + 1 e[P Xt] + 2 e[G Xt]

(4.7)

Donde 1 y 2 son dos vectores cuyos elementos son valores aleatorios que se modifican en cada
iteracin y se encuentran distribuidos uniformemente entre 0 y 1. Por otra parte, se emplea el producto
de Hadamart existente entre dos matrices y se define por el operador e. Los parmetros y , son
conocidos como las constantes de aceleracin o parmetros de aprendizaje, de forma experimental en
la literatura es comn encontrar que estos valores estn establecidos de la siguiente manera:

(4.8)

Algoritmo PSO acelerado


Otra modificacin que es comn encontrar para PSO consiste en incluir una variable adicional a la
ecuacin 4.7 con el objetivo de acelerar el proceso de optimizacin y la convergencia. Esta modificacin se conoce como funcin de inercia , aqu el vector vt de la ecuacin 4.7 es sustituido por
v tt . De tal manera, que la ecuacin 4.7 puede ser reescrita como sigue:
vt+1 = vt + 1 e[P Xt] + 2 e[G Xt]

(4.9)

Aqu toma valores aleatorios distribuidos entre 0 y 1. Sin embargo, en numerosas aplicaciones en la literatura, se considera este valor como una constante que toma los valores como se
menciona en la ecuacin 4.10.

0.5 : 0.9

(4.10)

Para continuar con la analoga de PSO, el uso de es equivalente a tener una masa que estabiliza el movimiento de las partculas, con esto se espera que el algoritmo tenga una ms rpida
convergencia.
Otra interesante propuesta se refiere al uso de solo el mejor global (G) en lugar de usar tambin, las mejores posiciones actuales (P). De tal manera que se simplifica la forma en que se calcula
el vector de velocidad y queda definido por la ecuacin 4.11.
v t +1 = v t + ( 1 2 ) + (G
( G XXt)t )

(4.11)

Donde nuevamente el valor de es aleatorio y uniformemente distribuido entre 0 y 1. Mientras


que el factor de 1/2 slo se usa por conveniencia matemtica. En esta misma modificacin denominada PSO Acelerado, tambin se ha propuesto una nueva ecuacin para desplazar las partculas
Alfaomega

Optimizacin y mtodos de cmputo evolutivo Cuevas

El algoritmo de optimizacin por enjambre de partculas (PSO)

79

hacia sus nuevas posiciones. De esta manera, la ecuacin 4.3 se puede reescribir como a continuacin se muestra:
Xttt ++ G
G ++ (( 00..55))
xxttt+++111 == ((11 ))X
X

(4.12)

Los valores tpicos que se usan para los parmetros de la ecuacin 4.12 se encuentran en los
rangos: 0.1 : 0.4 y 0.1 : 0.7 . Sin embargo, para fines prcticos en la literatura es comn
encontrar que los valores que se usan para ambas variables son 0.2 y 0.5 , para funciones
unimodales. Es importante mencionar que tanto como tienen como propsito escalar los valores de las nuevas posiciones en el espacio de bsqueda.

4.4.3 Otras mejoras al algoritmo PSO


Existe una gran cantidad de modificaciones del algoritmo PSO y hasta ahora se han analizado las
ms relevantes. Sin embargo hay dos vertientes que son importantes, una de ellas es la estimacin
de parmetros para reducir la aleatoriedad (PSO acelerado) y la segunda es el uso de diversas reglas
para poder resolver problemas de optimizacin con restricciones.
Mejora del PSO acelerado
Es bien sabido que la mayora de los algoritmos de optimizacin metaheursticos tienen parmetros
que deben ser ajustados para que se tenga un buen desempeo. La versin estndar de PSO cuenta
con pocos parmetros que deben ser calibrados. Sin embargo, la mayora de las modificaciones involucran el uso de nuevos parmetros, tal es el caso del PSO acelerado que se presenta en la seccin
4.2.1. Existen en la literatura referente, diversas propuestas para la estimacin automtica de estos
parmetros. Ejemplo de esto es la tcnica que se presenta para calcular el valor de . Adems de
esto, con dicha modificacin se reduce la aleatoriedad que pueda existir en los clculos. Para esto
se emplea una funcin montona decreciente de la siguiente forma:

= 0e

(4.13)

Esta ecuacin 4.13 tambin puede definirse como:

= 0 t ,

( 0 < < 1)

(4.14)

Para ambas ecuaciones el valor inicial del parmetro de aleatoriedad se encuentra en el rango:
0 0.5 : 1. Mientras que t es el nmero de iteraciones del algoritmo y ( 0 < < 1) es un parmetro
de control. Un ejemplo de esto consiste en elegir un valor de 0 = 0.7 y = 1 de y t = 10 este modo:

= 0.710

4.5 PSO para optimizacin con restricciones

(4.15)

Las tcnicas explicadas hasta ahora han sido para problemas de optimizacin sin restricciones. Sin
embargo, en la prctica la mayora de los problemas tienen restricciones. Por tal motivo un algoritmo metaheurstico robusto debe ser capaz de encontrar las soluciones de este tipo de problemas.
Optimizacin y mtodos de cmputo evolutivo Cuevas

Alfaomega

80

Optimizacin

El algoritmo PSO en un principio fue creado para trabajar con problemas sin restricciones. En la
literatura referente existe una gran cantidad de modificaciones propuestas para que PSO pueda ser
un optimizador capaz de encontrar las soluciones a dichos problemas.
De forma general, un problema de optimizacin (minimizacin) con restricciones se define de
la siguiente manera:
Minimizar
x l

fi ( x ) ,

i = 1, 2, K... , M ,

sujeto a

j ( x ) = 0,

j = 1, 2, K , J ,

k ( x ) 0,

k = 1, 2, K... , K ,

(4.16)

...

Donde fi(x) corresponde al conjunto de funciones objetivo, j ((xx)) y k ((xx))son las restricciones
del problema. De forma grfica, la figura 4.6 presenta la superficie de bsqueda de un problema
de optimizacin con restricciones. Se tiene un espacio acotado por los lmites superior e inferior
y de entro de l se define la funcin objetivo f1 ((xx)). Tambin dentro de este espacio se definen las
restricciones, de tal manera que las soluciones del problema se encuentran en una seccin reducida
del espacio de bsqueda.

Lmite inferior

Lmitesuperior

f1(x)
1(x)
1(x)
Espacio factible

Figura 4.6. Optimizacin con restricciones.


Como ya se mencion, no hay una nica forma de encontrar el valor ptimo de este tipo de
problemas. Pero, s existe un conjunto de tcnicas que son ampliamente usadas y con las que se
ha modificado el algoritmo PSO. Sin embargo, por su simplicidad una de las ms usadas es el de
descartar soluciones. El proceso consiste en verificar que cada partcula satisfaga todas las restricciones para poder ser evaluada en la funcin objetivo. Si alguno de los elementos de la poblacin no
satisface las restricciones, se genera una nueva partcula y este proceso se lleva a cabo hasta que se
encuentre una posible solucin que cumpla con las restricciones. Para generar cada nueva solucin,
se puede hacer mediante los operadores propios de PSO o de manera aleatoria, pero siempre debe
verificarse que las restricciones se cumplan antes de evaluar la solucin en la funcin objetivo. En
la figura 4.7 se presenta el diagrama de flujo de esta tcnica.
Alfaomega

Optimizacin y mtodos de cmputo evolutivo Cuevas

81

El algoritmo de optimizacin por enjambre de partculas (PSO)

de soluciones

Se satisfacen
todas las
necesidades?

No

S
Evaluar
la funcion objetivo

No

Se evalu
toda la
poblacin?
S
Continuar con el
proceso de optimizacin

Figura 4.7. Diagrama de flujo para la tcnica de descartar soluciones


en optimizacin con restricciones.

Otro popular mtodo para afrontar los problemas de la optimizacin con restricciones, es convertirlo en un problema sin restricciones. Para eso se emplea el mtodo de penalizacin en el que
se hace uso de los multiplicadores de Lagrange. A continuacin se muestra un ejemplo de este tipo
de funciones de penalizacin:
FF ((xxx)) == ff ((xxx)) ++ gg ((xx))

222

(4.17)

Donde F(x) es la nueva funcin objetivo sin restricciones, que contiene a la funcin objetivo
original f(x) con una restriccin definida por g(x). El parmetro de penalizacin se define como ? 1.
De este modo el problema se debe resolver como cualquier otro de los problemas de optimizacin
tratados en este libro. Es importante mencionar que para cada una de las restricciones se debe definir un valor de penalizacin distinto.
Por ltimo, una regla muy simple empleada para este tipo de problemas consiste en asignar un
valor de funcin objetivo considerado como psimo al miembro de la poblacin que no cumpla
con las restricciones del problema. De tal manera que para un problema de optimizacin, la partcula que no satisfaga alguna restriccin tendr un valor grande. Con esto lo que se pretende es slo
considerar las soluciones que se encuentran dentro del rea de bsqueda factible.
Optimizacin y mtodos de cmputo evolutivo Cuevas

Alfaomega

82

Optimizacin

Ejercicios
4.1

Considerando el proceso de optimizacin de PSO, proponga una mejora a la velocidad de las partculas teniendo en cuenta el concepto de inercia. Para esto, reescriba
el cdigo de PSO V t por V t en la ecuacin 4.2, para esto considere el valor de
0,1 . Observe si mejora la convergencia o el tiempo computacional.

4.2

Escriba o modifique el algoritmo PSO presentado en este captulo, para que optimice
la siguiente funcin objetivo multidimensional:
4
6
2
T
Minimizar f ( x ) = i exp Ai , j x j Pij , donde = [1.0,1.2,3.0,3.2 ]

j =1
i =1

10
3
17

0.05 10 17

A=
3
3.5 1.7
17
8 0.05

3.5 1.7 8

0.1 8 14
, P = 10 4

10 17 8

10 0.1 14

1312
2329
2348
4047

1696
4135
1451
8828

5596 124 8283 5886

8307 3736 1004 9991


3522 2883 3047 6650
8732 5743 1091 381

Considerando los lmites para cada una de las 6 dimensiones son: 0 x 1


4.3

Considerando la modificacin realizada en el ejercicio 4.1 y la funcin objetivo propuesta en el ejercicio 4.2, compare el desempeo de ambos algoritmos con base en la
evolucin de la funcin objetivo.

4.4

En base a la ecuacin 4.2, Cmo modificara el algoritmo PSO para evitar que quede
atrapado en ptimos locales?

4.5

Escribe o modifica un programa en Matlab, en el cual el algoritmo PSO encuentre la


solucin global de la siguiente funcin objetivo:
Minimizar
Donde > 0

n
x j
f ( x ) = ( i j + ) i 1 , n xi
j =1 i =1
i

El valor de afecta el valor de la solucin ptima?

Alfaomega

Optimizacin y mtodos de cmputo evolutivo Cuevas