Vous êtes sur la page 1sur 8

El Algoritmo Gentico como alternativa

a la Programacin Dinmica

Carlos Artemio Coello Coello

Escuela de Ingeniera Civil


Universidad Autnoma de Chiapas
Boulevard Belisario Domnguez km. 1081
Apartado Postal 61
C.P. 29000
Tuxtla Gutirrez, Chiapas
Mxico

Telfono :

52+(961) 5-03-22

Fax :

52+(961) 5-05-27

E-mail :

coello@eecs.tulane.edu

Araceli de Lourdes Yez Lpez

Instituto Tecnolgico de Tuxtla Gutirrez


Carretera Panamericana km. 1080
Tuxtla Gutirrez, Chiapas
Mxico

Telfono :

(52)+(961) 2-49-90

El Algoritmo Gentico como


alternativa a la Programacin Dinmica
Carlos Artemio Coello Coello
Universidad Autnoma de Chis.
Boulevard Belisario Dguez km. 1081
Tuxtla Gutirrez, Chiapas (Mxico)
coello@eecs.tulane.edu

Araceli de Lourdes Yez Lpez


Instituto Tecnolgico de Tuxtla Gutz.
Carretera Panamericana km. 1080
Tuxtla Gutirrez, Chiapas (Mxico)

RESUMEN
La programacin dinmica es una tcnica matemtica de optimizacin muy
utilizada en una gran variedad de disciplinas que, sin embargo, adolece
de varios problemas entre los que destaca el de la dimensionalidad. El
algoritmo gentico por su parte, es una tcnica de optimizacin ms
general que puede no slo resolver la clase de problemas que suelen
dejarse a la programacin dinmica, sino que adems es capaz de mantenerse estable an en situaciones en que los espacios de bsqueda son
muy grandes. Este trabajo muestra la forma de transformar un problema
de programacin dinmica en uno que pueda ser resuelto por un algoritmo
gentico.

Introduccin
Richard Bellman [1] desarroll en los aos 50s las
ideas bsicas de la programacin dinmica, postulando el
principio de optimalidad que dice:
"Una poltica ptima tiene la propiedad de que cualquiera que sean su estado
y decisin iniciales, las decisiones subsecuentes deben constituir una
poltica ptima con respecto al estado resultante de la decisin inicial."

Matemticamente
expresarse como:

el

principio

de

optimalidad

puede

f n (S n ) = mx R n (S n , d n ) + f n-1 (S n-1 )
dn

n=nmero de etapas subsecuentes en el proceso


Sn=variable de entrada a la n-sima etapa
dn=variable de decisin en la n-sima etapa
fn(Sn)=retorno mximo de un proceso con n etapas y entradas Sn en
la n-sima etapa
rn=Rn(Sn,dn)=funcin de retorno de la etapa n con entrada Sn y
variable de decisin dn
Sn-1=salida de la etapa n y entrada a la etapa n-1
fn-1(Sn-1)=funcin de retorno mximo desde las etapas 1 a la n-1

Esta ecuacin puede interpretarse de la siguiente


manera: cada componente de una estructura en serie influye
en todas las componentes que le siguen, y como slo la

ltima componente es independiente, puede ser suboptimizada


independientemente para cada variable de estado de entrada
que reciba. Una vez logrado esto, se agrupan las 2 ltimas
etapas y se suboptimizan en forma independiente para cada
variable de estado de entrada posible. Este proceso se
contina hasta que todo el problema haya sido optimizado.
El trmino programacin hace alusin a una planificacin de
actividades, de entre las cuales se determinan aquellas que
producen la mejor solucin o que optimizan el problema. Por
su parte, el trmino dinmica se debe al tipo de problemas
en que tuvo sus primeras aplicaciones esta tcnica, en los
que la variable tiempo indicaba el paso de una etapa a otra
(por ejemplo, la determinacin de la ruta crtica).
La justificacin del uso de la programacin dinmica
para resolver problemas de optimizacin proviene de la
representacin incorrecta de muchos fenmenos reales, como
los que se resuelven con la programacin lineal o con el
clculo diferencial; es decir, la programacin dinmica
permite resolver problemas de carcter ms general que los
que permite la programacin lineal, presentando adems las
siguientes ventajas sobre sta: (a) se obtiene una solucin
ptima aun en los casos en que la regin de soluciones
factibles no sea convexa, y (b) no est restringida a
variables continuas.
Las ventajas que presenta sobre el clculo diferencial
son an mayores, ya que las suposiciones que lo definen
resultan tremendamente limitantes para una gran parte de
los problemas que se presentan en el mundo real. Los requerimientos de que la funcin que describe el problema sea
continua y con derivadas continuas en todos los puntos, nos
impedirn resolver problemas como la expansin de un
sistema elctrico o de vas terrestres, en los que la solucin queda en trminos de variables enteras que describen
funciones no continuas.Estos problemas pueden ser resueltos
exitosamente por la programacin dinmica, pues lo que esta
tcnica hace es realizar una bsqueda sistemtica a travs
del conjunto de combinaciones posibles de los valores de
las variables que definen una funcin objetivo del problema
considerado, hasta encontrar la solucin ptima. Sin embargo, la programacin dinmica tiene a su vez algunas
desventajas:
Cada problema requiere un anlisis particular, y de la formulacin
correcta depende el fracaso o xito de la tcnica.
La limitacin ms importante es el nmero de variables estado
(entrada) en cada etapa. Si este nmero se incrementa mucho, las limitantes computacionales se vuelve sumamente serias, porque la explosin
combinatoria no se har esperar. A este problema Bellman lo bautiz como la "maldicin de la dimensionalidad" [2].

Algunas de las aplicaciones que se le han encontrado a


la programacin dinmica son [3]:
Asignacin de Recursos : Maximizar los beneficios totales del uso de
recursos asignados para un cierto proyecto.
Programacin Cronolgica de Produccin : Cumplir demandas especficas
por perodo durante un horizonte dado de planeacin, de manera que se
minimicen los costos totales de produccin y de inventario.
Problemas de Ajuste : Encontrar un surtido de tamaos estndar de un
producto de manera que se minimice el desperdicio o el costo total de
produccin.
Operaciones de Proceso de Mltiples Etapas : Un producto debe procesarse en una secuencia preestablecida a travs de un cierto nmero de
mquinas, cada una de las cuales realiza diferentes cantidades de
procesamiento. El objetivo consiste en maximizar la tasa general de
procesamiento de la planta.
Control de Procesos Qumicos : Un producto debe someterse a una
secuencia de reacciones qumicas. El objetivo es minimizar el costo del
producto final.

Nociones de Algoritmos Genticos


A fines de los 60s un investigador de la Universidad
de Michigan llamado John Holland desarroll una tcnica de
bsqueda basada en los mecanismos de supervivencia del ms
apto planteados en la teora de la evolucin de Darwin. Su
objetivo principal era que las computadoras pudieran aprender por s mismas. Su tcnica fue llamada originalmente
"planes reproductivos", pero el nombre algoritmo gentico
se hizo popular tras la publicacin de su libro [4] en
1975. Sin embargo, la referencia definitiva al tema ha sido
el libro publicado por un discpulo de Holland, llamado
David Goldberg [5] en 1989. La operacin de un algoritmo
gentico simple puede ilustrarse con el siguiente segmento
de pseudo-cdigo [6]:
generar poblacin inicial, G(0);
evaluar G(0);
t:=0;
repetir
t:=t+1;
generar G(t) usando G(t-1);
evaluar G(t);
hasta encontrar una solucin;

Inicialmente, se genera aleatoriamente la poblacin inicial, que estar constituda por un conjunto de cromosomas,
o cadenas de caracteres que representan las soluciones

posibles del problema. A cada uno de los cromosomas de esta


poblacin se le aplicar la funcin de aptitud a fin de
saber qu tan buena es la solucin que est codificando.
Sabiendo la aptitud de cada cromosoma, se procede a la
seleccin de los que se cruzarn en la siguiente generacin
(presumiblemente, se escoger a los "mejores"). De esta
cruza surgir el siguiente lote de cromosomas con los que
se repetir el proceso anterior. Adicionalmente, existe un
operador de mutacin que modificar de vez en cuando un
alelo (i.e., un bit de la cadena representativa) de un
cromosoma. Este operador garantiza la introduccin de nuevo
material cromosmico, y la interconexin total de nuestro
espacio de bsqueda. El Algoritmo Gentico se corre durante
un nmero predeterminado de generaciones, o hasta que la
poblacin se haya estabilizado (i.e., cuando todos o la
mayora de los individuos tengan la misma aptitud).
Algunas de las ventajas ms notables de los Algoritmos
Genticos con respecto a la programacin dinmica son las
siguientes:
Es independiente del problema que se desea resolver, lo que significa
que no se tiene que reformular para cada caso en particular.
Opera de forma simultnea con un gran nmero de soluciones, en contraposicin con la ejecucin secuencial de las tcnicas tradicionales.
A esta propiedad se le conoce como "paralelismo implcito".
Usa operadores probabilsticos en vez de los tpicos operadores determinsticos de las otras tcnicas.
Se ha aplicado con mucho xito a problemas que dan lugar a una explosin combinatoria, sin que esto afecte su eficacia.
No suele quedar atrapado en mximos o mnimos locales como las tcnicas de bsqueda convencionales.

Ejemplo de Aplicacin
A fin de ilustrar cmo resolver un problema tpico de
la programacin dinmica haciendo uso del algoritmo
gentico, mostraremos a continuacin un ejemplo.
Ejemplo 11 : Tres plantas trmicas abastecen un centro de
carga que demanda una cierta cantidad de energa elctrica
P de 180 MW, y se pregunta cunta energa elctrica debe
proporcionar cada una de las plantas de manera que el costo
total de generacin sea mnimo, teniendo en cuenta que a
cada planta le corresponde una curva caracterstica que
relaciona la produccin de energa con su costo, y cuyas
ecuaciones se muestran a continuacin:

Tomado de [7].

Curva A : C1 = 0.3P1 - 18.0P1 + 738.0


Curva B : C2 = 0.166P2 - 6.66P2 + 616.0
Curva C : C3 = 0.208P3 - 12.08P3 + 733.3

donde las Cs representan los costos en pesos/hora, y las Ps


la potencia generada en MW.
1) Representacin : Lo primero que necesitamos determinar
para poder aplicar el algoritmo gentico, es cul ser el
esquema a utilizarse para representar las soluciones
posibles del problema. En el planteamiento original del
problema se tom un rango de 20 MW a 80 MW, con intervalos
de 5 MW. Nosotros tomaremos un rango de 0 MW a 100 MW con
intervalos de 1 MW (un conjunto de valores que hara que la
programacin dinmica consumiera una cantidad enorme de
tiempo). De tal forma, tenemos 101 posibles valores para P,
o sea que necesitamos 7 bits para representarlos (27= 128).
Dado que hay 3 posibles Ps, las cadenas tendrn una longitud de 21 bits (3x7 = 21). De acuerdo a lo anterior, un
cromosoma tpico en nuestra representacin ser como el
mostrado en la Figura 1.
2) Funcin de Aptitud : Dado que el objetivo es obtener las
potencias que sumen 180, y que tengan un costo mnimo,
podemos usar la siguiente funcin de aptitud penalizada:
F(x) =

1. 0
(v * 500 +1) *(C1+ C2 + C3)

donde C1, C2 y C3 son los costos, que se calculan como indicamos anteriormente, y v es el valor absoluto de la
diferencia entre la suma obtenida y 180. Ntese que se usa
el valor recproco del costo, porque el algoritmo gentico
siempre maximiza, y en este caso deseamos efectuar una
minimizacin. Debe tenerse cuidado, por supuesto de que
C1+C2+C3 no sea cero, pues se producira un error de
sistema. Esta situacin puede anticiparse con un chequeo
antes de efectuar la divisin, asignando un valor muy bajo
(e.g. cero) a la aptitud en caso de que esta situacin se
presente.
3) Operadores : Se usar una cruza de 2 puntos, la cual se
efecta de la forma que se indica en la Figura 2. La probabilidad que se dar a la misma ser del 80%. En cuanto a la
mutacin, se le asignar una probabilidad baja, tal y como
sugiere Goldberg [5], por lo que ser del orden del 1%. El
tamao de poblacin manejado para este ejemplo ser de 50
cromosomas, y se correr el algoritmo gentico durante 20
generaciones.

Figura 1 : Cadena representativa de un cromosoma del ejemplo 1.

Figura 2 : Uso de 2 puntos de cruza entre 2 individuos. Note cmo en este


caso se mantienen los genes de los extremos, y se intercambian los del centro. Tambin aqu existe la posibilidad de que uno o ambos puntos de cruza se
encuentren en los extremos de la cadena, en cuyo caso se har una cruza
usando un solo punto, o ninguna cruza, segn corresponda.

4) Resultados : El resultado obtenido en una corrida tpica


es de $2,410.68, correspondiente a los valores de P1=70 MW,
P2=48 MW y P3=62 MW. Este valor es menor que el obtenido con
programacin dinmica usando el planteamiento original del
problema, que arroja una solucin de $2,623.10. El tiempo
que le tom al algoritmo gentico obtener la solucin presentada fue de slo 13 segundos.
Detalles de Implementacin
La implementacin que usamos para nuestras pruebas es
una variante del SGA (Simple Genetic Algorithm) presentado
por Goldberg en su libro [5] a la que se le incorpor un
mecanismo de seleccin mediante torneo binario y una cruza
de 2 puntos, como se indic anteriormente. Se mantuvo el
esquema de representacin binario aconsejado originalmente
por Holland, y se manejaron poblaciones pequeas para todas
las pruebas, las cuales se corrieron en una PC AT 286 de 12
MHz, compilndose el cdigo bajo Turbo Pascal 6.0. La salida de resultados se produjo directamente en pantalla, presentndose un reporte resumido por cada generacin. Esto
implica un ligero retraso en el proceso de clculo, y la
velocidad del algoritmo gentico puede incrementarse an
ms si nos limitamos a imprimir nicamente la mejor respuesta tras el nmero de generaciones deseado.

Conclusiones
El problema tpico de la programacin dinmica es que
es vctima de la llamada "maldicin de la dimensionalidad"
a la que el mismo Bellman hizo alusin. En este trabajo
hemos visto cmo, por su parte, la tcnica de bsqueda
conocida como el algoritmo gentico, se ve mucho menos
afectada por este fenmeno, adems de poder aplicarse de
forma ms fcil, rpida y eficiente en la solucin de un
problema de optimizacin. Si adems consideramos que el
algoritmo gentico tiene un carcter mucho ms general, y
goza del llamado "paralelismo implcito" que le permite
trabajar con varias soluciones simultneamente, parecen
sobrar razones para proponerlo como la mejor opcin para
resolver problemas de optimizacin sometidos a restricciones, como los que suelen abordarse con la programacin
dinmica. Creemos que el uso extendido de esta novedosa
tcnica se traducir en grandes beneficios para aquellos
profesionales que tienen que enfrentarse a esta clase de
problemas de manera cotidiana.
Bibliografa
[1] Bellman, Richard. Dynamic Programming. Princeton University Press,
Princeton. pp. 83. Nueva Jersey. 1957.
[2] Bellman, Richard. Adaptive Control Processes:
Princeton, New Jersey. Princeton University Press.

Guided

Tour.

[3] Daellenbach, Hans G.; George, John A. y McNickle, Donald C. Introduccin a las Tcnicas de Investigacin de Operaciones. CECSA. Mxico.
1987. 711 p.
[4] Holland, John. Adaptation in Natural and Artificial Systems. University of Michigan Press. 1975.
[5] Goldberg, David E. Genetic Algorithms in Search, Optimization and
Machine Learning. Addison-Wesley Publishing Co., Inc. 1989. 412 p.
[6] Buckles, Bill P. & Petry, Frederick E. Genetic Algorithms. IEEE
Computer Society Press. Technology Series. 1992. 109 p.
[7] Luthe, Rodolfo; Olivera, Antonio y Schutz,
Numricos. Editorial Limusa. Mxico. 1990. 443 p.

Fernando.

Mtodos

Vous aimerez peut-être aussi