Sie sind auf Seite 1von 51

INTRODUCCIN A LA RESOLUCIN DE PROBLEMAS CON

ALGORITMOS GENTICOS
GUILLERMO GARCA

PROFESOR DE INVESTIGACIN DE OPERACIONES

Ttulo abreviado: Introduccin a los Algoritmos Genticos


Autor: Guillermo Garca, Prof. de Investigacin de Operaciones I y II. Universidad Catlica Andrs
Bello. Caracas, Venezuela Tel: (+58) 4166366479 Email: guillermo@ggarciao.com
ltima revisin: 28 de Marzo de 2010

PALABRAS CLAVES

Problema, Problemas de Decisin, Problemas de Bsqueda, Problemas de Optimizacin,


Problemas de Conteo, Problema Multiobjetivo, Frente Pareto, Tcnicas Computacionales
Determinsticas, Bsqueda Exhaustiva, Bsqueda Ternaria, Simplex, Ramificacin y
acotamiento, Tcnicas Computacionales Heursticas, Bsqueda Tab, Simulated Annealing,
Complejidad Computacional, Complejidad P, Complejidad NP, NP Completo, Algoritmo
Genticos, Individuos, Poblacin, Cromosoma binario, Funcin Objetivo, Asignacin de
Fitness, Operadores Genticos, Operador de Seleccin, Seleccin con Ruleta, Seleccin con
Torneo, Operador de Eleccin, Eleccin Aleatoria, Eleccin Basada en el Individuo, Operador
de Cruce, Cruce de un Punto, Cruce de dos Puntos, Cruce Cortar y Empalmar, Operador de
Mutacin, Algoritmos Genticos Multiobjetivo, Asignacin de Fitness en Algoritmos
Genticos Multiobjetivos

PROPSITO DEL DOCUMENTO


El presente trabajo tiene como objetivo principal crear una base de conocimiento slida sobre la
utilizacin de los algoritmos genticos en la resolucin de problemas modelados matemticamente.
Pasando desde la definicin formal de problemas hasta la implementacin de algoritmos genticos,
este trabajo define, explica y contextualiza muchos de los conceptos que toda persona debe manejar
al momento de solucionar modelos matemticos: tipos de problemas, problemas multiobjetivos, la
complejidad computacional de dichos problemas y tcnicas computacionales que los resuelven.

Garca 2010 Introduccin a los Algoritmos Genticos

INTRODUCCIN: DESDE EL PROBLEMA HASTA LA SOLUCIN


El ser humano est constantemente plantendose nuevas metas u objet
objetivos,
ivos, evitando los estados
estacionarios, imaginndose que todo es mejorable. Lo que separa a un ser de su objetivo, es lo que
usualmente se denomina como problema
problema:: un estado o situacin que debe ser cambiada a travs de
una accin. Esta accin es lo que sse denomina usualmente como solucin.

Fig. 1 Problema: cruzar un abismo. Solucin: un puente

Cuando el problema puede ser planteado de forma matemtica, a travs de la formulacin o


modelado, la bsqueda de la solucin puede realizarse a travs de tcnicas
cas computacionales.
computacionales Estas
tcnicas buscan dentro de todas las posibles soluciones del problema,, seleccionando la mejor
encontrada como resultado. Esta bsqueda puede ser realizada de forma:

Determinstica:
Formalmente, una tcnica es determinstica cuando para una misma entrada E siempre
arroja el mismo resultado R. Adicionalmente, este tipo de tcnicas dan como resultado la
solucin ptima e inmejorable, ya que garantizan de una forma u otra que todas las
soluciones factibles fueron consideradas.

Heurstica:
Una tcnica es considerada heurstica cuando cada vez que se aplica, el resultado R puede
ser distinto para la misma entrada E. La solucin encontrada por este tipo de tcnicas es
considerada buena, pero jams se puede decir que es ptima, ya qu
quee solo considera una
parte de las soluciones factibles, usando un criterio considerado correcto, ms no perfecto,
para descartar soluciones no ptimas.

Garca 2010 Introduccin a los Algoritmos Genticos

Solucin
ptima

Solucin
Buena
Tcnica
determinstica

Tcnica
Heurstica

Fig. 2 Tcnica Determinstica vs. Tcnica Heurstica


El uso de tcnicas determinsticas correctamente diseadas garantiza la obtencin, si existe, de la
solucin ptima e inmejorable, por lo cual su uso es siempre deseado, pero no siempre factible.
Todo depende de la complejidad computacional del problema a resolver.
La complejidad computacional es una cualidad de un problema, que se refiere a la cantidad de
recursos computacionales que consumira su resolucin, independientemente de la tcnica
utilizada. Si la clase de complejidad computacional de un problema es demasiado elevada, las
tcnicas determinstica no pueden ser aplicadas porque evaluar todas las soluciones factibles es
imposible en tiempos humanamente decentes. Es aqu cuando las tcnicas heursticas tienen
validez, ya que dan una solucin considerada buena en un tiempo humanamente aceptable.
Las clases de complejidad computacional se definen tomando en cuenta tres factores:

El Tipo de Problema: la forma del problema a ser resuelto. Ej: Problema de decisin, de
bsqueda, de optimizacin, etc.

El Modelo de Cmputo: el tipo de computador que resolver el problema. Ej: Mquina de


Turing Determinstica, Mquina de Turing No Determinstica, etc.

Los recursos necesarios: se refieren al tiempo o espacio a ser consumidos. Ej: Tiempo
Polinomial, Espacio Logartmico, etc.

Usando estos factores, se han definido clases de complejidad computacional para clasificar
problemas: como P que contiene todos los problemas de decisin que pueden ser resueltos en
tiempos polinomiales en una mquina de Turing determinstica; o NP que contiene todos los
problemas de decisin que pueden ser resueltos en tiempos polinomiales en una mquina de Turing
no determinstica.
3

Garca 2010 Introduccin a los Algoritmos Genticos

NP
NP-Completo

Fig. 3 Relacin entre los conjuntos P, NP y NP-Completo


Conocer la clase de complejidad computacional de un problema permite determinar que tcnica
computacional utilizar para resolverlo. En algunos casos, el problema no podr ser resuelto de
forma determinstica (por ejemplo, los problemas NP-completos) y por eso se abordan con
aproximaciones o tcnicas heursticas.
Dentro de las tcnicas heursticas ms utilizadas para resolver problemas se encuentran los
algoritmos genticos. Esta tcnica, inspirada en el proceso evolutivo de los seres vivos, comienza
con un conjunto aleatorio de soluciones factibles al problema e iterativamente las va mejorando
usando mecanismos evolutivos:

Seleccin: Las soluciones ms fuertes tendrn la capacidad de cruzarse

Eleccin: Las soluciones capaces de cruzarse forman parejas.

Cruce: Las soluciones padres generan soluciones hijas que suelen ser ms fuertes

Mutacin: Las soluciones hijas tienen caractersticas que no proviene de sus padres

Representacin
binaria
Solucin
Real

Representacin
binaria

0
1
0
1
0
0
1
1

Solucin
Real

0
1
0
1
1
0
1
0

Fig. 4 El valor binario de los caracteres ASCII suele ser una buena representacin
cromosmica de los caracteres alfanumricos

Garca 2010 Introduccin a los Algoritmos Genticos


Cada solucin es codificada en una cadena de nmeros y/o caracteres llamada cromosoma. Este
cromosoma es portado por un individuo de la poblacin y a travs de las generaciones y gracias a los
operadores evolutivos, la informacin codificada se mezcla con otra para generar una o varias
nuevas soluciones.
Aunque empricamente los algoritmos genticos han demostrado su eficiencia, al no poder
conseguir la solucin ptima al problema, es importante saber estudiar su comportamiento. Esto se
logra mediante un anlisis estadstico de la poblacin, generacin a generacin, a travs de la
aplicacin de tcnicas estadsticas como:

Anlisis exploratorio: Necesario para determinar cules medidas de tendencia central y


dispersin usar para el estudio descriptivo.

Estudio descriptivo: Anlisis e interpretacin de las medias de tendencia central y


dispersin determinadas en el anlisis exploratorio.

Este estudio permite verificar si la ejecucin del algoritmo gentico tiene el comportamiento
deseado, y de ser as, la solucin obtenida podr ser considerada, con confianza, como una buena
solucin, aunque no se pueda saber si es ptima o no.
Ciertos cambios han de ser realizados cuando se busca resolver problemas multiobjetivo. Este tipo
de problema, subconjunto de los problemas de optimizacin, buscan optimizar ms de un objetivo al
mismo tiempo. Los objetivos suelen ser competitivos, lo que se traduce en la existencia de una
relacin inversa entre ellos (cuando un objetivo mejora, los otros empeoran) y no hay una forma
analtica de relacionarlos. Esto hace que la solucin a este tipo de problema sea un conjunto de
soluciones, calificadas como ptimas Pareto.

g(x) = x2

h(x) = (x-2)2

Fig. 5 Shaffer F2 es un ejemplo clsico de optimizacin multiobjetivo

Garca 2010 Introduccin a los Algoritmos Genticos

UN VISTAZO PRCTICO A LA DEFINICIN DE PROBLEMAS


El da a da de los seres humanos consiste en cambiar el estado actual en que se encuentran,
buscando mejorarlo. Independientemente de lo que cada ser defina como mejor, todos se
encuentran frente a lo mismo: cambiar el estado actual requiere resolver ciertos planteamientos y
se sabe que si no se responden correctamente, no se llegar al estado deseado sino a otro, en
muchos casos impredecible. Estos planteamientos con mltiples respuestas, llamadas soluciones, es
lo que se define como problema.
Existen varios tipos de soluciones:

Solucin No Factible: es una respuesta imposible o invlida. Son todas aquellas soluciones
que se deben descartar al momento de la resolucin del problema.

Solucin Factible: es una respuesta alcanzable o vlida. Resolver un problema consiste en


determinar cul de ellas es la Solucin ptima.

Solucin ptima1: Solucin Factible inmejorable. Es la solucin que resuelve el problema de


la mejor manera posible. Pueden existir ms de una, pero todas producen el mismo
beneficio (soluciones ptimas alternativas).

Regin No
Factible
Regin Factible

X
Regin Factible

Fig. 6. Espacio de Solucin para el problema de optimizar f(x) = 1/x

Aunque no todos los problemas son de optimizacin, suele usarse el trmino solucin ptima para referirse
a la respuesta correcta a cualquier problema

Garca 2010 Introduccin a los Algoritmos Genticos


Para la interpretacin y anlisis de problemas, las soluciones se suelen graficar en un espacio de
soluciones, en el cual se pueden observar la regin factible y regin no factible de del problema2. Para
ciertos tipos de problemas, como los problemas de optimizacin, este recurso visual permite hacer
un anlisis menos abstracto del problema, ayudando a la definicin de la estrategia a seguir para
resolverlo. Para otros tipos, como los problemas de bsqueda, el espacio de soluciones simplemente
representa el formato de la respuesta.
Ejemplo: Si se quiere saber qu valor de x genera el mayor valor de y (maximizar) para y = 1/x, el
espacio de solucin est formado por todos los valores posibles de x. En la Fig. 6 se puede observar
que se tienen dos regiones factibles, x menor que cero (x < 0) y x mayor que cero (x > 0). Como la
funcin no est definida para x = 0, este valor conforma la regin no factible del problema.

TIPOS DE PROBLEMAS
Un detalle importante a tomar en cuenta al momento de plantear problemas es saber determinar la
naturaleza del mismo.
Ejemplo: El problema de determinar los divisores de un nmero entero X, tiene como respuesta una
lista de nmeros enteros que dividen a X sin residuo. En cambio, el problema de saber si un nmero
X es primo, tiene como respuesta un valor booleano: SI o NO. Aqu se nota una clara diferencia en el
espacio de solucin, lo que se traduce en la necesidad de definir una estrategia distinta para
solucionarlo.
A
Problema
Espacio de
Solucin
Tcnica de
resolucin

Conocer los divisores de un nmero


entero X

Conocer si un nmero X es primo

Listas de nmeros enteros

SI o NO

Dividir X entre todos los nmeros

Obtener los divisores de X en una lista L. Si

menores que Piso(X/2). Si la divisin da

tiene solo dos elementos (uno y X) el

cero, se agrega el divisor a una lista L

nmero es primo.

Tabla 1. Comparacin de dos problemas de naturaleza distinta

El espacio de solucin se puede graficar si y solo si las soluciones se pueden ordenar y tienen menos de 4
dimensiones.

Garca 2010 Introduccin a los Algoritmos Genticos


Se puede observar en la Tabla 1 que los problemas se diferencian en el espacio de solucin y, por
consiguiente, en la tcnica de resolucin. Aunque la solucin de B se puede obtener a partir de la
solucin de A, se debe hacer un clculo o procedimiento adicional, lo que ya hace las tcnicas de
resolucin distintas.

Las ciencias de la computacin clasifican a los problemas computables3 segn su naturaleza en los
siguientes grupos:

PROBLEMAS DE DECISIN
Los problemas que se pueden plantear en un sistema formal4 cuya respuestas posibles son
exclusivamente SI o NO son considerados Problemas de Decisin. Bsicamente son problemas que
buscan determinar la validez de una sentencia. Fjese que una de las caractersticas fundamentales
que definen a este tipo de problemas es que su espacio de solucin es binario: SI o NO, VERDARERO
o FALSO, UNO o CERO. Esto influye a la tcnica de resolucin a aplicar, ya que usualmente se asume
que la sentencia es verdadera hasta que se demuestre lo contrario, o viceversa.
Cuando a un problema de decisin se le puede disear un procedimiento de decisin5 que le d
respuesta, se dice que el problema es decidible. En caso contrario, si no se puede conseguir un
algoritmo para buscarle respuesta, se dice que el problema es indecidible6 y esto solo se determina a
travs de demostraciones matemticas. Es importante tener claro esto, ya que de estar trabajando
en un problema sobre el cual es muy difcil disear un algoritmo, posiblemente haya que recurrir a
demostraciones matemticas para determinar que es indecidible, es decir, que no tiene solucin.
Ejemplo:
Problema de la particin. Dado un conjunto de nmeros, determinar si se puede dividir este
conjunto en dos particiones buscando que la suma de los elementos de las particiones sumen lo
mismo.
3

Los problemas computables son todos aquellos problemas que se pueden resolver mediante un algoritmo.
Un sistema formal (Lgica) est formado por en un lenguaje formal y un conjunto de reglas de inferencia que
juntos permiten derivar o concluir una expresin a partir de otras expresiones. Ejemplo: (3+1 = 4). Ntese
que podemos derivar 4 a partir de 1 y 3, gracias al lenguaje de las matemticas (nmeros y operadores) y las
reglas de inferencias que la rigen (la suma).
5 Un procedimiento de decisin es tcnica de resolucin algortmica (algoritmo) que resuelve un problema de
decisin
6 Problema de la Parada, de Alan Turing y el Problema de la Correspondencia de Emil Post son dos problemas
indecidibles muy referenciados.
4

Garca 2010 Introduccin a los Algoritmos Genticos


Este problema busca determinar si existe una forma de separar un multi-conjunto7 de nmeros
enteros en dos particiones, con la condicin especial que la suma de los nmeros de las particiones
arrojen el mismo resultado.
 
  
1,1,2,2,3,4,5  2,2, 5   1,1,3,4
 
2

5!  1

4!  9

1,2,3,5,5,7  1,2, 3,7   3,5,5


 
1

7!  3

5!  13

Ntese que la respuesta a este problema es binaria: SI o NO hay particiones posibles. Este espacio
de solucin afecta el diseo de la tcnica de resolucin, en la cual se asumir que no hay particiones
hasta que se demuestre lo contrario, o viceversa.

PROBLEMAS DE BSQUEDA
Cuando el problema planteado consiste en buscar en un conjunto de entrada aquellos elementos
que cumplan con una determinada condicin (o condiciones) se est frente a un Problema de
Bsqueda. El espacio de solucin de este tipo de problemas son tuplas8 de elementos, pudiendo ser
estos nmeros o cadenas de caracteres (pertenecientes a un lenguaje). Para este caso, el espacio de
solucin no ayuda a la definicin una tcnica de resolucin, ya que aqu el foco est en estudiar la
entrada y no la salida.
Hay dos formas comunes, ms no nicas, de los problemas de bsqueda:

Bsqueda directa: Los que requieren conseguir los elementos del conjunto de entrada que
cumplan con las condiciones dadas. Este tipo de problema tienen un conjunto finito de
elementos de entrada, y la salida o respuesta es un subconjunto de elementos de dicha
entrada.

7
8

Un multi-conjunto es un conjunto que puede contener elementos repetidos.


Las tuplas son una secuencia ordenada de objetos. Ejemplos: una lista o vector, una fila de una tabla, etc.

Garca 2010 Introduccin a los Algoritmos Genticos

Bsqueda combinatoria: Los que requieren combinar los elementos de la entrada para
conseguir la combinacin de ellos que cumpla con las condiciones dadas. Aqu la salida no
es una lista de elementos del conjunto de entrada, sino una lista de combinaciones de ellos.

Entender estas formas es muy importante porque esto afectar considerablemente el diseo de las
tcnicas de resolucin a aplicar. En el caso de problemas de bsqueda directa, usualmente la
tcnica esta en hacer un nico recorrido ordenado por la entrada, mientras la bsqueda
combinatoria recorre la entrada varias veces, armando combinaciones que cumplan con las
condiciones.
Ejemplo:
Factorizacin prima. Dado un nmero compuesto9 N, encontrar sus factores primos.
Un nmero entero, si no es primo, puede ser expresado como un producto de nmeros menores
que l. En matemtica, a esto se le llama Factorizacin. La Factorizacin Prima es un caso particular
de factorizacin, donde se exige que los nmeros menores, llamados factores, sean primos.
  $   

105  3 & 5 & 7
207  3 & 3 & 23
349  349   !
Es importante entender que la entrada de este problema de bsqueda directa no es el nmero a
descomponer, sino todos los posibles divisores de este. Por ejemplo, si se quiere descomponer el
nmero 105, el conjunto de entrada al problema es el rango de nmeros enteros [1, 105]10. Dentro
de este conjunto hay que buscar los elementos (nmeros) que cumplan con la condicin (ser un
divisor de 105 y ser un nmero primo).

PROBLEMAS DE CONTEO
Cuando se necesita saber la cantidad de elementos que cumplen con determinada condicin, se est
frente a un Problema de Conteo. Usualmente se define de la siguiente manera: dado el conjunto de
9

Nmero que es el resultado del producto de otros nmeros, llamados factores.


Este rango es el ms obvio, pero se puede reducir de varias maneras. Por ejemplo, [1, 52], ya que si
multiplicamos 53 (vecino de la cota superior) por cualquier nmero entero mayor que 1 da ms de 105.
10

10

Garca 2010 Introduccin a los Algoritmos Genticos


entrada E, determinar el tamao de S, donde S es un subconjunto de E formado por los elementos
que cumplen con la condicin dada11. Esta es la forma de los problemas de conteo ms estudiada
por las ciencias de la computacin porque son las que requieren un cmputo particular para su
resolucin.
En este tipo de problemas, el espacio de solucin siempre es un nmero entero mayor o igual que
cero, es decir [0,). Pero aqu el espacio de solucin ayuda poco a la creacin de la tcnica de
resolucin, ya que la tarea importante es manipular la entrada para contar eficientemente los
elementos.
Ejemplo:
Grafos Hamiltonianos. Contar la cantidad de ciclos hamiltonianos existentes en un grafo.

Fig. 7. Un ciclo hamiltoniano en un dodecaedro


Un Ciclo Hamiltoniano es un camino en el grafo que visita todos los nodos una sola vez, empezando
y terminando en el mismo nodo. Para dar respuesta a este problema se debe disear un algoritmo
que vaya visitando todos los nodos del grafo, sin repeticiones, comenzando y terminando en el
mismo nodo y cada vez que consiga un ciclo que cumpla con las condiciones dadas, se aumenta un
contador, que comienza en cero porque se asume que no hay ciclos al comienzo. Ntese que el
contador siempre ser un nmero entero mayor o igual a cero, igual que el espacio de solucin de
todos los problemas de conteo.
11

Hay problemas de conteo que no tienen esta forma, como por ejemplo los problemas que se resuelven con
Teora Combinatoria.

11

Garca 2010 Introduccin a los Algoritmos Genticos

PROBLEMAS DE OPTIMIZACIN
Cuando se debe maximizar o minimizar el resultado arrojado por una funcin o procedimiento, se
dice que es un problema de optimizacin. Su forma usual es una funcin, llamada funcin objetivo,
que a partir de un grupo de parmetros de entrada, arroja una nica salida. El objetivo es encontrar
los valores de los parmetros de entrada que arrojen la mejor salida (mximo o mnimo).
El espacio de solucin de este tipo de problemas est conformado por tuplas de tamao igual al
nmero de parmetros que recibe la funcin objetivo, donde cada posicin de la tupla representa un
parmetro. Este tipo de espacio de solucin es el ms sencillo de manipular porque las tuplas
funcionan como un punto en un sistema de coordenadas12. Esto es importante tenerlo claro, ya que
la respuesta a este tipo de problemas son los valores de los parmetros de entrada (una tupla), no la
salida que ellos producen. La salida de la funcin es un resultado secundario, que es consecuencia
de haber conseguido la tupla que optimiza al problema.

Salida de la
Funcin a
optimizar

Parmetro B

Parmetro A

Espacio de
Solucin

Fig. 8. Espacio de Solucin de un problema de optimizacin de dos parmetros

Como la resolucin de este tipo de problemas consiste en conseguir un mximo o mnimo, el espacio
de solucin debe estar bien limitado en la direccin de la optimizacin, aunque su contenido sea
infinito. Si esto no es as, siempre se podr conseguir una tupla A que genere una mejor salida que la
tupla B, lo que hace que la bsqueda de la mejor tupla sea imposible o, en el mejor de los casos,
obvia. Las fronteras del espacio de solucin se llaman restricciones, las cuales simplemente indican
que valores de los parmetros de entrada son considerados vlidos.

12

En la mayora de los casos el dominio de los parmetros es R lo que hace al espacio de solucin continuo.
Esto permite usar el Sistema de Coordenada Cartesiano para graficar dicho espacio.

12

Garca 2010 Introduccin a los Algoritmos Genticos


Ejemplo:
Problema de la Mochila. Se tiene un contenedor (mochila) que tiene una capacidad mxima M (en
peso), y un grupo de elementos, cada uno con peso Pi y valor Vi. El objetivo es conseguir la
combinacin de elementos que entren dentro del contenedor (
( ) *) que maximice el valor del

contenido (* & ( ). Este es un problema de optimizacin combinatoria.


MOCHILA
Capacidad = 10
Peso = 5
Valor = 8

Peso = 7
Valor = 6

Peso = 3
Valor = 6

Peso = 5
Valor = 3

Peso = 8
Valor = 14

Peso = 3
Valor = 4

Peso = 4
Valor = 4

Peso = 3
Valor = 6
Peso = 9
Valor = 5

Fig. 9 Problema de la Mochila


La forma ms comn de plantear el espacio de solucin es con tuplas de tamao igual a la cantidad
de elementos del problema. Los valores admisibles en la tupla son solo uno (1) y cero (0), donde
uno (1) indica que el elemento est dentro del contenedor, mientras que cero (0) indica que esta
fuera. Para obtener el peso de la mochila para determinada tupla A, se suman todos los pesos de los
elementos con uno (1) en la tupla, mientras lo que tienen cero (0) no se suman porque estn fuera.
El proceso es equivalente para obtener el valor de la mochila. Definido de esta manera, el problema
se centra en conseguir la combinacin de unos y ceros que respete la restriccin de peso del
contenedor y maximice el valor de su contenido.
Debido a la restriccin de peso del contenedor, la respuesta a este problema no es simplemente
meter a todos los elementos dentro de la mochila, por lo cual hay tuplas que son factibles y otras
que son no factibles.

EQUIVALENCIA ENTRE TIPOS DE PROBLEMAS


Los problemas se clasifican por tipos, pero pequeas transformaciones a la forma del mismo
permiten cambiarlo a otro tipo de problema, considerndolo equivalente. Lo importante es que este
cambio sea tan pequeo en comparacin con el resto de la definicin que el problema, con o sin el
cambio, se resuelva prcticamente de la misma forma.
13

Garca 2010 Introduccin a los Algoritmos Genticos


En la Tabla 1 se puede ver un par de problemas equivalentes. El primero, conocer los divisores de
un nmero X. Este es un problema de bsqueda, donde la entrada son todos los nmeros enteros
menores que Piso(X/2) y la salida una lista de nmeros enteros. El segundo problema, es conocer si
un nmero X es primo o no. Esto es un problema de decisin sencillo: una sentencia como entrada
(X es primo?) y de respuesta binaria (SI o NO). Pero analizando en detalle los problemas, al
conseguir los divisores de X podemos saber si es primo o no con una simple operacin extra: contar
los divisores. Ntese que el foco del problema est en conseguir los divisores, porque una vez
encontrados, contarlos es muy sencillo. Por este anlisis, llamado reduccin13, podemos decir que el
problema de decisin Determinar si X es primo o no es equivalente al problema de bsqueda
Determinar los divisores de X.

Ejemplo: Problema de la Particin.


Problema de
Decisin

Problema de de
Bsqueda

Problema de Conteo

Problema de
Optimizacin

Dado un conjunto de
nmeros, determinar si
se puede dividir en dos
particiones haciendo
que la suma algebraica
de los elementos de las
particiones sumen lo
mismo.

Dado un conjunto de
nmeros,
determinar
todas las formas de
dividir a dicho conjunto
en
dos
particiones,
haciendo que la suma de
los elementos de las
particiones sumen lo
mismo.

Dado un conjunto de
nmeros,
determinar
cuntas formas existen
de dividir a dicho
conjunto
en
dos
particiones, haciendo que
la suma de los elementos
de las particiones sumen
lo mismo.

Dado un conjunto de
nmeros, determinar la
divisin
en
dos
particiones que minimice
la diferencia en la suma
de los elementos de las
particiones.

Tabla 2. Problema de la Particin planteado de varias formas


En la Tabla 2 se puede ver como el problema de la particin se puede plantear de diversas formas,
manteniendo su esencia. Ntese que si resolvemos el problema de bsqueda, podemos responder el
problema de conteo y el problema de decisin con una simple operacin extra. Ahora, en muchos
casos solo nos importar resolver el problema de decisin, as que al encontrar la primera forma de
particionar el conjunto detenemos la bsqueda. Aqu se nota que, aunque sean equivalentes,
resolver el problema de decisin de este planteamiento es ms rpido que resolver el problema de
bsqueda, aunque la complejidad es la misma: conseguir la particin. El problema de optimizacin
de este planteamiento difiere un poco de los dems, ya que el no busca saber si se puede o no
particionar el conjunto respetando la restriccin, sino que conseguir las particiones que
13

Formalmente, un problema computable es reducible a otro problema computable cuando se puede usar la
tcnica de resolucin de uno en el otro para resolverlo eficientemente.

14

Garca 2010 Introduccin a los Algoritmos Genticos


minimicen la diferencia de sus sumas. Es evidente, que el mejor resultado que puede conseguir la
tcnica de resolucin del problema de optimizacin es unas particiones cuya diferencia sea cero (0),
lo que es igual a resolver el problema de bsqueda.

Ejemplo: Factorizacin Prima.


Problema de
Decisin

Problema de de
Bsqueda

Problema de Conteo

Dado un nmero N,
determinar
si
ese
nmero tiene solo dos
factores primos.

Dado un nmero N,
determinar sus factores
primos.

Dado un nmero N,
determinar la cantidad
de factores primos que lo
componen.

Problema de
Optimizacin
----------------

Tabla 3. Problema de la Factorizacin Prima planteado de varias formas


En la Tabla 3 se tiene al problema de la factorizacin prima planteado de diversas formas. Aqu
nuevamente resolver el problema de bsqueda permite responder el problema de decisin y el
problema de conteo agregando una sencilla operacin. Lo importante a observar en este ejemplo, es
que no existe un problema de optimizacin obvio para el problema de la factorizacin prima14. Esto
busca ejemplificar que la reduccin no siempre puede conseguir equivalencias.

Ejemplo: Problema de la Mochila.


Problema de
Decisin

Problema de de
Bsqueda

Problema de Conteo

Problema de
Optimizacin

Dado un contenedor de
capacidad
C
y
elementos con peso Pi y
valor Vi, determinar si
existe un contenido
que
respete
la
capacidad
del
contenedor ( +, < C)
y cuyo valor sea igual a
R ( -,  .).

Dado un contenedor de
capacidad C y elementos
con peso Pi y valor Vi,
determinar todas las
formas posibles de crear
un contenido que respete
la
capacidad
del
contenedor (
 < C) y
cuyo valor sea igual a R
(   /).

Dado un contenedor de
capacidad C y elementos
con peso Pi y valor Vi,
determinar
cuntas
formas existen de crear
un contenido que respete
la
capacidad
del
contenedor (
 < C) y
cuyo valor sea igual a R
(   /).

Dado un contenedor de
capacidad C y elementos
con peso Pi y valor Vi,
maximizar el valor del
contenido del contenedor
(* & ), respetando
que la suma de su
contenido no supere su
capacidad (
 < C)

Tabla 4. Problema de la Mochila planteado de varias formas

14

Puede que exista un problema de optimizacin complejo, que requiera en determinada parte resolver el
problema de la factorizacin prima, pero usualmente es un paso a realizar, no el objetivo de la optimizacin.

15

Garca 2010 Introduccin a los Algoritmos Genticos


El problema de la Mochila puede ser planteado de diversas formas, como se ve en la Tabla 4.
Normalmente, la forma de problema de optimizacin es la ms usada, pero aqu la reduccin nos
permiti conseguir problemas equivalentes, ya que puede que no se quiera optimizar el valor de la
mochila, sino conseguir la combinacin que nos permita obtener exactamente el valor deseado.

COMPLEJIDAD COMPUTACIONAL DE LOS PROBLEMAS


Aunque los estudios enmarcados en la Teora de la Complejidad Computacional son de corte
matemtico muy abstracto y con fines ms demostrativos que prcticos, es importante que las
personas dedicadas a resolver problemas entiendan los principios que rigen a esta rea de
conocimiento, ya que las intuiciones y demostraciones manejadas en la Teora de la Complejidad
afectan considerablemente la forma de resolver problemas en la vida real.
La Teora de la Complejidad se dedica a determinar la complejidad intrnseca asociada a las tareas
computacionales, es decir, a problemas computables. Ntese que el objetivo est asociado al
problema, no a la tcnica de resolucin, por lo cual la complejidad computacional es una
caracterstica del problema, sin importar cmo se solucione15.
La complejidad computacional de un problema es una caracterstica cualitativa que busca agrupar
problemas computables por la cantidad de tiempo de procesamiento y espacio de memoria que
consume su resolucin. Pero los problemas computables no pueden tratarse aislndolo del contexto
como cualquier otro problema matemtico, ya que est demostrado que el consumo de recursos en
la resolucin de un problema depende del tamao de la entrada y el modelo de cmputo. En la
prctica esto es fcilmente observable en el comportamiento de las computadoras16:

Una bsqueda secuencial en un archivo de 2 Megabytes requiere MENOS tiempo de


procesamiento que la misma bsqueda en un archivo de 2 Gigabytes.

Un algoritmo de bsqueda secuencial en un archivo, ejecutada en un computador con un


solo procesador requiere MS tiempo de procesamiento que la misma bsqueda, en el
mismo archivo, en un computador de dos procesadores (paralelismo).

15 Realmente, la complejidad de un problema se determina basndose en la forma en que se comporta la


tcnica de resolucin ms eficiente conocida para resolverlo. As que aunque la complejidad se le atribuya al
problema, siempre depende de la mejor tcnica de resolucin conocida.
16 Estos ejemplos pueden no ser rigurosos ni formales para la Teora de Complejidad, pero si muestran a
grandes rasgos el impacto que tiene en el consumo de recursos el tamao de la entrada y el modelo de
cmputo.

16

Garca 2010 Introduccin a los Algoritmos Genticos


Para formalizar esta agrupacin, se han definido clases de complejidad que definen funciones
matemticas de comportamiento del consumo de recursos basado en el tamao de la entrada. Es
importante destacar que dicha funcin est formulada segn el modelo de cmputo usado: si
cambia el modelo de cmputo, la funcin tendr una forma diferente.
Otro aspecto importante en la definicin de clases de complejidad es el tipo de problema, pero esto
requiere poca atencin en la prctica ya que empricamente se piensa que todo problema puede ser
planteado como un problema de decisin (por reduccin). Gracias a esta gua emprica casi siempre
se utiliza las clases de complejidad definidas para los problemas de decisin al momento de describir
la complejidad de la mayora de los problemas computables.
En resumen, los problemas computables se clasifican por clases de complejidad, las cuales se definen
analizando tres (3) aspectos del problema: tipo de problema, modelo de cmputo y el
comportamiento de consumo de recursos (funcin).
Sabiendo cmo se crean las clases de complejidad, es importante entender lo difcil que es
considerar todos los modelos de cmputo existentes, principalmente por su complejidad
matemtica. Es por esta razn que la Teora de la Complejidad utiliza varias formas de Mquinas de
Turing para simplificar el anlisis, pero sin sacrificar su validez en el mundo real. Este punto est
tratado en la Tesis de Church-Turing, la cual dice que un problema computable puede ser resuelto
en una Mquina de Turing si y solo si puede ser resuelto por cualquier otro modelo de cmputo
general y razonable17. Asumiendo esta tesis, al demostrar que un problema se puede solucionar en
una Mquina de Turing se concluye que tambin se puede resolver en un computador actual.

CLASES P, NP Y NP-COMPLETO
Una buena forma de entender las clases de complejidad es pensar en ellas como conjuntos de
problemas y por ende, hay que familiarizarse con las intersecciones y los subconjuntos, que
contienen a los problemas que pertenecen a ms de una clase.
Basados en la regla emprica que intuye que por reduccin todo problema puede expresarse como
un problema de decisin, aqu se mencionar solamente las clases que clasifican a dichos problemas.

17

Es una Tesis y no un Teorema porque es una intuicin emprica no demostrada. La forma de modelo de
cmputo general y razonable se dej abstracto intencionalmente para hacer entrar dentro de ella a todos
aquellos modelos de cmputo conocidos hasta el momento.

17

Garca 2010 Introduccin a los Algoritmos Genticos


Las dos primeras clases que hay que mencionar relacionada con los problemas de decisin, son las
clases decidible e indecidible. Estos dos conjuntos disjuntos, separan a los problemas que se pueden
solucionar (decidibles) de los que no (indecidibles).

Indecidibles

Decidibles

Fig. 10 Clases de problemas de decisin


Los problemas indecidibles son categricamente no solucionables por computadora, por lo cual su
estudio en la Teora de la Complejidad no va ms all de la determinacin de su indecibilidad: Si se
determina por demostracin matemtica, que un problema no se puede solucionar por
computadora, se clasifica como indecidible y no se estudia ms18.
Los problemas decidibles, que son aquellos problemas de decisin a los cuales se les pueden crear al
menos un algoritmo que los solucione, son el centro de estudio de las ciencias de la computacin,
porque son todos aquellos planteamientos a los que una computadora puede dar respuesta.
Dentro del conjunto de problemas decidibles, se encuentra un zoolgico de clases que agrupan a
dichos problemas por la forma que consumen espacio de memoria y tiempo de procesamiento, pero
este ltimo aspecto es el ms estudiado en la prctica.
La clase P fue una de las primeras en definirse. Incluye a todos los problemas de decisin que puede
consegursele respuesta en tiempo polinomial (0!) en una Mquina de Turing
Determinstica19. En otras palabras, se trata de todos aquellos problemas que para una entrada de
tamao n, se le consigue respuesta en un tiempo  0!. Por ejemplo: si para un determinado
problema con una entrada n se puede conseguir una solucin en  1

2 en una Mquina de

Turing Determinstica o equivalente, se puede decir que el problema pertenece a la clase P.

18

Un problema indecidible muy usado como ejemplo por los computistas es el Halting Problem, el cual
consiste en construir un algoritmo que dado otro algoritmo O con su entrada E, pueda determinar si el
algoritmo 0 terminar de procesar a E en algn momento. Esto es equivalente a crear una aplicacin que
determine que otra aplicacin est guindada.
19 Una Mquina de Turing Determinstica es aquella que para determinado comando, siempre ejecuta una
misma y nica accin.

18

Garca 2010 Introduccin a los Algoritmos Genticos


La clase P es una de las ms obvias dentro de la Teora de la Complejidad, porque incluye a muchos
de los problemas matemticos bsicos que requieren muchas operaciones consecutivas, lo cuales
fueron los que motivaron la creacin del computador. Por ejemplo, est demostrado que
determinar si un nmero X es primo o no, es un problema de decisin de clase P.
Ahora, NP es una clase particular de problemas donde no se habla del tiempo consumido para su
solucin, sino del tiempo consumido para determinar si una solucin dada es correcta o no. Un
problema pertenece a la clase NP si se puede chequear la validez de una solucin dada en tiempo
polinomial en una Mquina de Turing Determinstica20.
Con un pequeo ejercicio mental podemos entender que todo problema en P est tambin en NP: Si
podemos conseguir la solucin en tiempo polinomial (problema en P), en el peor de los casos
validar si la solucin es la correcta se tardar el mismo tiempo polinomial que conseguirla
(problema en NP). Nuevamente el problema de determinar si un nmero es primo es edificante:
Est demostrado que determinar si un nmero X es primo o no se resuelve en un tiempo
polinomial, por ende est en P, ahora chequear la validez de la respuesta X es primo es igual a
volver a determinar si X primo y esto se resuelve en tiempo polinomial, por lo cual el problema
tambin est en NP.

NP
P

Fig. 11 Relacin entre las clases P y NP


Saber que todo problema P est tambin en NP responde positivamente a la pregunta Todo
problema que se puede solucionar en tiempo polinomial se puede validar su solucin en tiempo
polinomial?, pero lo que an no se ha respondido categricamente es el sentido inverso de esa
pregunta Todo problema al cual se le puede validar su solucin en tiempo polinomial se puede

20

La definicin original de NP es: Un problema pertenece a NP si se puede obtener una solucin en tiempo
polinomial en una Mquina de Turing No Determinstica. El detalle es que est demostrado que ambas
definiciones son equivalente.

19

Garca 2010 Introduccin a los Algoritmos Genticos


solucionar en tiempo polinomial?21 De ser positiva la respuesta, eso implicara que
 2
, pero
empricamente se piensa que esto no es verdad, ya que hay muchos problemas a los cuales no se le
ha podido disear una tcnica de resolucin que los solucione en tiempo polinomial, pero validar si
la respuesta es correcta se puede hacer en tiempos polinomiales. Este conjunto es 2
3
.
Estos problemas son los ms estudiados por las ciencias de la computacin, porque son problemas
decidibles, lo que significa que son solucionables, pero que no se puede conseguir la respuesta
correcta en tiempos humanamente decentes, lo que es casi igual a no solucionarlos. La esperanza
est en que aunque no se ha conseguido una forma de solucionarlos en tiempo polinomial,
matemticamente no se ha demostrado que no hay forma de conseguirlo.
Estudiando a fondo el conjunto de problemas pertenecientes a (2
3
) se defini un grupo
particular de problemas llamados NP-Completos, cuya caracterstica adicional es que todo problema
en NP puede ser reducido a ellos, es decir, que cualquier problema NP se puede reducir a un
problema NP-Completo. La definicin de esta clase es un gran aporte, ya que si se soluciona en
tiempos decentes un problema en NP-Completo, se estara solucionando todos los problemas en NP,
demostrando as que
 2
. Pero la experimentacin ha mostrado lo contrario, ya que los
problemas pertenecientes a la clase NP-Completo son los problemas ms difciles de NP.

NP
NP-Completo

Fig. 11 Relacin entre las clases P, NP y NP-Completo


Entendiendo las clases de complejidad y las relaciones entre ellos, solo falta conocer la tcnica que
determina si un problema pertenece o no a determinada clase. Formalmente, esto se logra a travs
de demostraciones matemticas, basado en teoremas y axiomas, pero en la prctica la clave est en
la reduccin. Toda persona que resuelva problemas debe conocer la mayor cantidad de problemas
posibles ya clasificados, y tratar de reducir el problema de la vida real a alguno de estos.

21

Esta pregunta se le suele referenciar como P vs NP. Este planteamiento es considerado uno de los grandes
enigmas matemticos de la actualidad.

20

Garca 2010 Introduccin a los Algoritmos Genticos


Una vez clasificado el problema que se est tratando, la persona encargada de resolverlo puede
aplicar una de las tcnicas conocida para solucionarlos, haciendo pequeas adaptaciones. Rara vez,
una persona que soluciona problemas se ve forzado a definir una tcnica de resolucin nueva, esto
es solo justificable si el problema no pudo ser clasificado por reduccin22.

EJEMPLOS: REDUCCIN DE PROBLEMAS REALES


La realidad est llena de problemas y aquellos que pretendan resolverlos definitivamente deben
tener la capacidad de abstraccin que les permita reducirlos a un modelo matemtico bien
conocido o en estudio. Cualquier otra estrategia para resolver problemas que no contemple el
modelado matemtico y la reduccin como parte fundamental del anlisis estn condenados a dar
respuestas sesgadas, que solo con suerte resultarn ser las correctas. En Teora de la Toma de
Decisiones se clasifican las decisiones por la calidad del anlisis previo a la toma de decisin, no al
resultado: Una decisin es buena cuando se estudi a profundidad y los pasos de dicho estudio son
reproducibles. As, en caso de que el resultado sea positivo, siempre se podr tomar la misma
decisin cuando las condiciones, establecidas en el estudio, se den. En caso que el resultado sea
negativo, se sabe que no se puede volver a tomar esa decisin en las condiciones determinadas por
el estudio, lo que requiere que se profundice el anlisis para llegar a la respuesta correcta.
Una buena estrategia al momento de elaborar el modelo matemtico, es compararlo con modelos ya
existentes, tratando de hacer una reduccin del mismo para ver si son equivalentes. De poder
conseguirse una equivalencia entre el problema real y el problema abstracto ya estudiado, se
podrn reutilizar las tcnicas de resolucin conocidas, lo que asegura que el problema se est
abordando correctamente desde el punto de vista matemtico. Si no se consigue una equivalencia,
situacin que es poco probable, valdr la pena formalizar el problema encontrado tratando de
clasificarlo y determinndole su complejidad, y as abultar los conocimientos en el rea de
problemas computables.
Ejemplo: Balanceo de Carga23  Problema de la Particin (clase NP-Completo)
Para mejorar los tiempos de respuestas de aplicaciones de alta demanda, como muchas de las
aplicaciones de internet, se suelen dedicar varios centros de cmputo (servidores) para atender a
22 Las personas que se encargan de definir las tcnicas de resolucin a problemas conocidos y clasificados son
investigadores cuyo foco de inters es la tcnica de resolucin en s, ms que el problema mismo.
23 El Balanceo de Carga es un planteamiento que est en constante estudio por la academia y la industria, por
lo cual, la estrategia de solucin aqu plasmada puede no usarse comnmente hoy en da.

21

Garca 2010 Introduccin a los Algoritmos Genticos


las peticiones de los usuarios. Cada una de estas peticiones requiere una capacidad de memoria y
procesamiento distinta, aunque haciendo un buen estudio estadstico se pueden crear tipos de
peticiones que agrupen a las peticiones que se asemejen en la cantidad de memoria y
procesamiento que consumen. Una vez creados los tipos de peticiones y cada una de las peticiones
posibles clasificadas en dichos tipos, se puede crear un Balanceador de Carga, que busque repartir
las peticiones concurrentes entre N servidores, buscando que cada uno de ellos realice la misma
cantidad de esfuerzo computacional.
Supngase que se tiene tres tipos de peticiones A, B y C y cada una de ellas tiene asociado un
consumo de memoria y procesamiento, establecido previamente por estudio estadstico. En
determinado momento t, al Balanceador de Carga le llegan 4 peticiones al mismo tiempo, creando la
situacin de la Tabla 5. Ahora este debe repartir las peticiones entre dos (2) servidores, buscando
que cada uno de ellos realice el mismo esfuerzo computacional. Es decir, para la situacin de la
Tabla 5 se deseara que cada servidor utilice 21,5 Kb de memoria y 14 mseg de procesador, pero
las peticiones no se pueden separar, as que el problema aqu es conseguir dos (2) particiones de
peticiones que minimicen la diferencia entre el esfuerzo computacional que se necesita para
atenderlas.
Peticin Tipo

Memoria

Procesamiento

8 Kb

5 mseg.

15 Kb

3 mseg.

5Kb

10 mseg.

15 Kb

3 mseg.

43 Kb

28 mseg.

Total

Tabla 5. Ejemplo de 4 peticiones concurrentes en determinado momento t.


Si se obvia la parte la parte tcnica de manipulacin de peticiones y la distribucin de aplicaciones,
al realizar una reduccin del problema de balanceo de carga, se llegar a la forma de optimizacin
del problema de la particin, como se ve en la Tabla 2. Poder hacer esta equivalencia nos permite
atacar el problema del balanceo de carga con las mismas tcnicas que resuelven el problema de la
particin, lo que nos garantiza que la respuesta dada ser buena, basada en certezas matemticas.

22

Garca 2010 Introduccin a los Algoritmos Genticos


Ejemplo: Ruptura de la encriptacin RSA  Problema de la Factorizacin Prima (clase NP)
El algoritmo RSA es uno de los algoritmos de encriptacin de clave asimtrica24 ms utilizado de
hoy da para enviar datos de forma segura y autenticada. El aporte de este algoritmo est en la
forma en la que genera la clave pblica y la clave privada:
La generacin de las claves (pblica y privada) se basa en varias operaciones matemticas no muy
complejas sobre un par de nmeros, identificados en el algoritmo como p y q. Operando estos dos
nmeros con varias funciones matemticas se obtienen todos los nmeros que conforman la clave
pblica y la clave privada. La clave pblica est formada por un nmero n (modulus n) y un
exponente de cifrado e, mientras que la clave privada est formada por la el mismo nmero n y
exponente de descifrado d.
Es bien sabido, porque es parte del algoritmo RSA, que n es el producto de p y q (   5 6). Si se
puede obtener p y q a partir de n, que es parte de la clave pblica, se puede obtener la clave privada
(operando a p y q como lo dicta el algoritmo para obtener a d). Si se reduce el problema, obtener p y
q a partir de n es equivalente a resolver el problema de factorizacin prima para n.
Ejemplo: Reparticin de paquetes  Problema de Grafos Hamiltonianos (clase NP-Completo)
Las empresas mueven constantemente sus productos desde la fbrica hacia los almacenes, desde
los almacenes hacia las tiendas, desde las tiendas hacia los hogares de los consumidores. Este
transporte requiere la coordinacin de dos aspectos fundamentales: los productos y el transporte25.
El estudio del transporte es de suma importancia, ya que se debe disear una forma de operar que
permita a los orgenes despachar a los destinos minimizando el costo de transportar los productos.
Uno de los elementos ms estudiados en la estructura de costo del transporte es la definicin de la
ruta de costo mnimo, ya que recorrer ineficientemente los destinos se traduce en costos que
pueden evitarse. La ruta ptima debe considerar que el transporte visite todos los destinos
necesarios, y evidentemente, volver al origen de donde parti26.

24 La encriptacin de clave asimtrica es una forma de cifrar y descifrar datos con una clave pblica, que todo
el mundo puede conocer, y una clave privada, que solo el que descifra los datos puede conocer.
25 Tambin son aspectos importantes la demanda y oferta de los productos, pero usualmente estos aspectos
son difciles de controlar y se asumen como condiciones.
26 Esto no necesariamente es as, ya que dependiendo de la realidad de la empresa, el transporte pudiera
partir de determinado lugar y pernotar en otro, pero esto es un pequeo detalle que no cambia la complejidad
del problema

23

Garca 2010 Introduccin a los Algoritmos Genticos


Este problema tiene una representacin natural en grafos, donde los nodos son el origen y los
destinos, los lados son los caminos, y los pesos de los la
lados
dos el costo asociado a recorrer el camino. Si
en el grafo se obvian los destinos que el transporte no tiene que visitar, conseguir la ruta de costo
mnimo es igual a resolver la forma de optimizacin del problema de los grafos hamiltonianos:
hamiltonianos
determinar el ciclo hamiltoniano de costo mnimo.

Fig. 10 El problema de reparticin de paquetes en ciudades de Alemania


Ejemplo: Portafolio de Inversin  Problema de la Mochila (clase NP-Completo)
Completo)
Un portafolio de inversin es una combinacin de bonos y acciones que generan determinado
rendimiento al inversionista. Estadsticamente se ha determinado una relacin entre la cantidad de
dinero invertido en acciones y la cantidad de dinero invertida en bonos, y el riesgo que generar
dicha combinacin27. El riesgo se ccomporta
omporta de forma directa al rendimiento, ya que al aumentar el
riesgo, aumenta el rendimiento, pero el objetivo de todo inversionista es maximizar el rendimiento,
minimizando el riesgo. Ahora, estos estudios estadsticos solo hablan de acciones y bonos del
pasado, que seguramente ya no tengan el riesgo y el rendimiento de aos o meses anteriores, o
quiz ya ni existan. Es por eso que este estudio habla de las acciones y bonos como cosas abstractas,

27

Este estudio se le suele asociar con la bsqueda del Minimum Risk Portafolio, el cul es una combinacin de
bonos y acciones que generan el mnimo riesgo.

24

Garca 2010 Introduccin a los Algoritmos Genticos


que el inversionista debe transformar en realidad, seleccionando del mercado las acciones y bonos
disponibles en la actualidad. Esta decisin, no es sencilla y suele ser imprudente tomarla sin tratar,
por lo menos, de conseguir un modelo matemtico, que si bien no considere todas las variables, que
por lo menos tome en cuenta las que son importantes para el inversionista.

Portafolio
Capacidad = 10 MM
Costo = 5
Rend. = 8

Costo = 7
Rend. = 6

Costo = 3
Rend. = 6

Costo = 5
Rend. = 3

Costo = 8 MM
Rendimiento = 14 M

Costo = 3
Rend. = 4

Costo = 4
Rend. = 4

Costo = 3
Rend. = 6
Costo = 9
Rend. = 5

Fig.11 Portafolio de Inversin que busca maximizar el rendimiento


El modelo matemtico que ms se asemeja a este problema es la forma de optimizacin del
problema de la mochila, donde el contenedor es el portafolio, la capacidad del contenedor es la
cantidad de dinero que posee el inversionista, los elementos son las acciones y bonos. El peso de
cada elemento es su costo de adquisicin mientras que su valor es el rendimiento que promete28. El
objetivo: maximizar el rendimiento del portafolio, respetando la cantidad de dinero disponible.

TCNICAS DETERMINSTICAS PARA RESOLUCIN DE PROBLEMAS


DE OPTIMIZACIN
Una tcnica computacional se considera determinstica cuando para una entrada E retorna siempre
la misma salida S, sin importar otras variables del entorno, como el tiempo. En pocas palabras son
tcnicas consistentes y sin contradicciones, ya que siempre arrojan la misma salida para cada
entrada29.
Teniendo claro que un problema se considera resuelto cuando se consigue su solucin ptima,
podemos decir que una tcnica determinstica de resolucin de problemas es una tcnica

28 Es importante destacar que el rendimiento de los bonos es garantizado, mientras el rendimiento de las
acciones es estimado a partir de proyecciones, pero para el estudio se suelen considerar igual o se puede
multiplicar el rendimiento de la accin por algn factor asociado a la confianza en la proyeccin.
29 Las funciones matemticas son consideras determinsticas ya que siempre arroja el mismo resultado para
cada valor posible de x. Por ejemplo: 7&!  & 1 para &  2 8 7&!  4

25

Garca 2010 Introduccin a los Algoritmos Genticos


computacional que consigue siempre la solucin ptima SO para la entrada E, sin importar cuando
ni como se ejecute la tcnica. Este es el comportamiento deseado de toda tcnica resolucin de
problemas, el detalle es que no siempre esta solucin se consigue en tiempos humanamente
aceptables; en pocas palabras, las tcnicas determinsticas solo resuelven los problemas en P30.
Es importante destacar, que hay tcnicas determinsticas genricas, que pueden ser aplicadas a
problemas de diferente tipo y forma hacindole pequeas adecuaciones31, as como existen tcnicas
determinsticas especficas que solo resuelven a determinado problema. Aqu solo trataremos
algunas tcnicas determinsticas genricas para la resolucin de problemas de optimizacin, ya
que una buena parte de los problemas de la vida real se plantean de esta forma.

BSQUEDA EXHAUSTIVA
Esta tcnica es tambin llamada bsqueda por fuerza bruta por ser la solucin ms sencilla pero la
menos inteligente. Esta tcnica consiste en comparar cada solucin factible SF con todas las otras
soluciones factibles, si no existe una solucin factible mejor, se puede decir que la solucin factible SF
es la solucin ptima SO. Como esta tcnica recorre todo el espacio de solucin varias veces, dicho
espacio no requiere estar ordenado de una manera especial.
Solucion solucionOptima = null, solucionFactible = null;
boolean esOptima;
for(int i = 0; i < espacioDeSolucion.length; i++){
solucionOptima = espacioDeSolucion[i];
esOptima = true;
for(int j = 0; j < espacioDeSolucion.length; j++){
solucionFactible = espacioDeSolucion[j];
if(solucionFactible.esMejorQue(solucionOptima)){
esOptima = false;
break;
}
}
if(esOptima){
break;
}
}
return solucionOptima;

Fig. 12 Pseudo-cdigo de una bsqueda exhaustiva para problemas de optimizacin con espacio de
solucin no ordenados.

30

Muchas de estas tcnicas se puede aplicar a problemas NP, pero los tiempos de respuestas no son
aceptables, hablndose usualmente de siglos o milenios del calendario gregoriano (el usado por el mundo
occidental) para entradas grandes.
31 A este tipo de tcnicas tambin se le llaman meta-determinsticas.

26

Garca 2010 Introduccin a los Algoritmos Genticos


Si se observa la Fig. 12 se puede notar claramente cmo funciona esta tcnica: Se toma una solucin
y se asume como ptima luego se compara con TODAS las soluciones factibles del espacio de
solucin. Si alguna la vence, la marcamos como no ptima y pasamos a la prxima, si nadie la venci
ya se consigui la solucin ptima y el algoritmo se detiene.
Como muchas otras, esta tcnica presenta dos escenarios:

El mejor escenario es cuando la primera solucin considera ptima es la ptima, ya que se


recorre el espacio de solucin una sola vez, lo que implica n iteraciones (siendo n el tamao
del espacio de solucin).

El peor escenario es cuando la ltima solucin considerada ptima es la ptima, ya que se


recorre el espacio de solucin n veces, lo que implica n2 iteraciones.

BSQUEDA TERNARIA
Si el espacio de solucin tiene un orden natural estrictamente ascendente y luego estrictamente
descendente (o viceversa), se puede aplicar un principio de divide y vencers para obtener la
solucin ptima. La bsqueda ternaria divide el espacio de solucin en tres reas A, B y C de igual
tamao. La idea es ir demostrando que la solucin ptima no est en las reas A C, y por ende esta
en las dos restantes. Luego, se divide las reas restantes en otras tres reas y se repite el proceso,
recursivamente, hasta que se consigue un rea no divisible en tres, lo que es igual a decir que
quedan solo dos soluciones factibles, que definitivamente una de ella es la solucin ptima32.
Descartada
A

A Estudiar
B

A Estudiar
C

Descartada
B

Crece
Decrece
Crece

Crece

Decrece

Decrece

Fig. 13 Dos iteraciones de bsqueda ternaria en grficas

32

Es importante destacar que esta tcnica puede tener un sinfn de variantes para adecuarlas al problema y
su espacio de solucin. La forma aqu descrita es una forma muy genrica.

27

Garca 2010 Introduccin a los Algoritmos Genticos


Esta tcnica compara los puntos extremos de las reas A, B y C determinando si la funcin crece o
decrece en dicha rea. Por ejemplo, en la primera grfica de la Fig. 13 podemos observar que el
rea A y B crecen mientras el rea C decrece.
Una vez determinado el comportamiento de cada rea, se puede notar que el punto mximo de la
funcin estar entre un rea que crece y una que decrece (o viceversa), porque entre ellas est el
punto de inflexin de la funcin, es decir, la solucin ptima. Volviendo a la Fig. 13 se puede
observar que el punto ms alto de la curva est siempre entre las dos reas que cambian de
comportamiento: en la primera grfica podemos observar que el algoritmo decidi seguir
estudiando las reas B y C, donde este ltimo contiene a la solucin ptima.

SIMPLEX
Las tcnicas basadas en bsquedas solo trabajan correctamente con espacios de solucin ordenados
y discretos donde la cantidad de soluciones factibles es finita. Pero existen muchos problemas cuyo
espacio de solucin es ordenado pero continuo y por ende entre dos soluciones factibles A y B
cualesquiera, existen infinitas soluciones factibles.
Cuando el modelo matemtico de un problema de optimizacin, incluyendo las restricciones, est
formado exclusivamente por ecuaciones y/o inecuaciones lineales y su espacio de solucin es
continuo y ordenado se pueden aplicar tcnicas de resolucin de problemas de programacin
lineal33, como el algoritmo SIMPLEX.
Restriccin
A

Restriccin
B

Restriccin
C

Regin
Factible

Fig. 14. Problema de programacin lineal planteado de forma grfica

33

Es importante saber que est demostrado que cualquier problema de programacin lineal pertenece a la
clase de complejidad P.

28

Garca 2010 Introduccin a los Algoritmos Genticos


Esta tcnica se basa en la premisa comprobada de que la solucin ptima de los problemas de
optimizacin est en las fronteras (restricciones) del espacio de solucin, nunca en su interior. Esto
reduce enormemente el espacio de solucin, pero an existen infinitos puntos en las fronteras
(recuerde que el espacio es continuo). Pero adems se sabe que la solucin ptima est en las
intersecciones de las restricciones (recuerde que son lneas rectas), por lo cual ya tenemos un grupo
finitos de puntos en los cuales buscar. En la Fig. 14 se pueden ver las restricciones en verde, y las
intersecciones, que son los puntos considerados por SIMPLEX, estn marcadas con un crculo azul.
Ciertamente, se puede aplicar una bsqueda exhaustiva en el conjunto finito de intersecciones de
las restricciones, pero igualmente conseguir estos puntos requiere un esfuerzo computacional muy
alto. SIMPLEX es un algoritmo muy eficiente porque es capaz de buscar ordenadamente sobre los
puntos de las intersecciones sin saber cules son antes de comenzar, es decir, va calculando las
intersecciones a medida que las necesita, lo que ahorra muchsimo esfuerzo computacional.

RAMIFICACIN Y ACOTAMIENTO
Muchos problemas de programacin lineal no pueden dar respuesta con valores con decimales,
porque no tendra sentido en la vida real. Esto hace que el espacio de solucin vuelva a ser finito,
pero agrega una dificultad: la solucin ptima ya no est sobre las restricciones, sino sobre un punto
cerca de ellas34. En la Fig. 15 se puede observar que la regin factible no es un espacio continuo,
sino un grupo de puntos. Es importante resaltar que las soluciones factibles no estn sobre las
intersecciones de las restricciones, y por ende SIMPLEX es incapaz de darle respuesta.

Restriccin
A

Restriccin
B

Restriccin
C

Fig. 15 Problema de programacin entera planteado de forma grfica


34

Un problema de programacin entera o binaria, que no es ms que un problema de programacin lineal con
restricciones especiales, pertenece a la clase NP-Completo

29

Garca 2010 Introduccin a los Algoritmos Genticos


Una forma de solucionar este tipo de problemas es usando la tcnica de Ramificacin y
Acotamiento, que consiste en ir agregando cotas (restricciones) al problema para que los puntos del
espacio de solucin formados por nmeros enteros estn sobre las restricciones, y por ende se puede
aplicar SIMPLEX. Al momento de agregar una cota, se deben considerar dos escenarios: que la cota
sea del tipo mayor o igual que o del tipo menor o igual que, generndose as dos ramas. Esta
agregacin de cotas y resolucin con SIMPLEX se va realizando recursivamente sobre cada una de
las ramas hasta obtener la rama que contenga a la solucin ptima.

TCNICAS META-HEURSTICAS PARA RESOLUCIN DE PROBLEMAS


DE OPTIMIZACIN
Un problema se considera solucionado cuando se consigue la solucin ptima, no una solucin
factible buena o mejor que otras en comparacin. Es por esta razn que siempre se trata de resolver
problemas usando tcnicas determinsticas, ya que garantizan la obtencin de la solucin ptima.
Pero si la tcnica determinstica promete la obtencin de dicha solucin utilizando una cantidad de
tiempo y espacio increblemente altos, se debe considerar que la tcnica no puede aplicarse a ese
problema.
Retomando los conceptos de complejidad computacional, se dice que un problema est en la clase P
si existe al menos una forma de solucionarlo en tiempos polinomiales en una Mquina de Turing sin
importar el tamao de la entrada, es decir, que exista al menos una tcnica determinstica que los
solucione en tiempos decentes para cualquier entrada. Por ende, si un problema es NP-Completo, es
porque ninguna de las tcnicas determinsticas conocidas lo puede resolver en tiempos decentes si
la entrada es relativamente grande35. Por esta razn, es que hoy en da se considera aceptable
darle respuestas a los problemas NP-Completos con soluciones factibles buenas o mejores que otras
por comparacin, a travs de tcnicas heursticas.
Una tcnica es considerada heurstica cuando su diseo est basado en experiencias, intuiciones
y/o inspiraciones que se aplican para conseguir una solucin factible buena, la cual se asume que
est muy cercana a la solucin ptima, ya que estas tcnicas carecen de un mecanismo que

35

En la prctica se pueden aplicar tcnicas determinsticas a problemas NP-Completos y conseguir la solucin


ptima, pero obviamente la entrada tiene que ser muy pequea. A medida que la entrada aumenta en tamao,
el tiempo requerido para la resolucin tambin aumenta pero no proporcionalmente.

30

Garca 2010 Introduccin a los Algoritmos Genticos


garantice que todas las soluciones fueron consideradas36. Por esta razn, nunca se puede saber si la
solucin factible encontrada por una tcnica heurstica es o no es la solucin ptima.
Otra caracterstica usual de las tcnicas heursticas es que la solucin factible que dan como
respuesta puede cambiar dependiendo de cuando se ejecute. En otras palabras, ejecutar dos veces
una tcnica heurstica para un problema con la misma entrada puede generar dos soluciones
factibles distintas, el detalle es que estas soluciones deben generar un beneficio igual o parecido.
Aquellas tcnicas heursticas genricas que pueden aplicarse a varios problemas, e incluso,
ignoran la forma del mismo, se le llaman tcnicas meta-heursticas. Estas suelen ser las ms
utilizadas en la resolucin de problemas NP-Completos por su versatilidad y su comprobada
efectividad.

BSQUEDA TAB
La bsqueda tab es una tcnica de bsqueda local, es decir, que no busca en todo el espacio de
solucin sino que empiezan con una determinada solucin factible del espacio y se limita a buscar en
sus alrededores. Ntese que lo importante aqu est en determinar la solucin factible inicial y
definir los alrededores donde se buscar: dos de los criterios ms sencillos de usar son empezar
en una solucin factible seleccionada de forma aleatoria y definir los alrededores a travs de la
distancia cartesiana entre las soluciones factibles. Una vez parada en una solucin factible, llamada
solucin actual, las tcnicas de bsqueda local seleccionan la mejor solucin en sus alrededores.
Esto lo hacen iterativamente hasta que se cumpla una condicin de parada, usualmente un nmero
de iteraciones definido al comienzo o si no consiguen una solucin factible mejor que la solucin
actual en los alrededores.
Iteracin
Uno

Solucin
Actual

Iteracin
Dos

Iteracin
Tres

Solucin
Actual

Solucin
Actual

Iteracin
Cuatro

Solucin
Actual

Fig. 16 Una representacin de la Bsqueda Tab

36

Las tcnicas que cuentan con este tipo de mecanismos son las determinsticas

31

Garca 2010 Introduccin a los Algoritmos Genticos


La bsqueda tab es una implementacin especial de una bsqueda local por poseer una lista tab,
que contiene a todas las soluciones que el algoritmo debe ignorar de los alrededores. La lista tab
puede contener soluciones indeseables por alguna restriccin y/o soluciones ya consideradas. En la
Fig. 16 se puede notar que las soluciones factibles de los alrededores de la solucin actual tienen
un color diferente para cada iteracin, lo que representa las soluciones a estudiar en dicha
iteracin. Ntese que por ejemplo en la iteracin tres no se consideran las soluciones de la iteracin
dos aunque estn muy cercanas a la solucin actual, ya que estn contenidas en la lista tab porque
ya fueron consideradas.

SIMULATED ANNEALING
Esta tcnica meta-heurstica es una implementacin especial de una bsqueda local, es decir, que su
funcionamiento principal se basa en la bsqueda de una mejor solucin que la actual en los
alrededores hasta que se cumpla una condicin de parada definida.
Simulated Annealing define su funcionamiento inspirndose en el proceso de Recocido de Acero,
tcnica empleada para disminuir los defectos en el material que consiste en calentar el acero para
luego enfriarlo controladamente. El calor hace que los tomos salgan de su posicin inicial,
cambiando a posiciones de mayor energa. Cuando la temperatura del material es alta los tomos se
mueven prcticamente de forma aleatoria pero mientras baja la temperatura del material de forma
controlada el movimiento de los tomos se hace ms selectivo, ya que el material presenta mayores
diferenciales de energa y un determinado tomo puede no conseguir cerca de l una mejor
posicin en comparacin con su posicin actual.
En la Fig. 17 se puede observar una implementacin de una bsqueda local inspirada en el proceso
de Recocido del Acero. Lo primero que se define es la temperatura actual que suele ser un valor
muy alto, y una temperatura mnima a la que se llegar cuando poco a poco se disminuya la
temperatura (como en el Recocido). Estas dos temperaturas forman parte de la condicin de parada
de esta tcnica, ya que cuando la temperatura actual sea menor o igual que la temperatura mnima,
el algoritmo se detiene37. Luego, se selecciona la solucin factible donde se comenzar la bsqueda.
La forma ms sencilla de hacerlo es seleccionando una solucin al azar. Una vez establecidas las
temperaturas y seleccionada la solucin factible inicial comienzan las iteraciones.

37

Otras condiciones de parada adicionales se pueden agregar al algoritmo para mejorar su funcionamiento,
como por ejemplo nmero mximo nmero de iteraciones.

32

Garca 2010 Introduccin a los Algoritmos Genticos


int temperaturaActual = 999999999;
int temperaturaMinima = 9999;
Solucion solucionActual = espacioDeSolucion.seleccionarSolucionInicial();
Solucion solucionProxima = null;
boolean bajarTemperatura;
while(temperaturaActual > temperaturaMinima){
bajarTemperatura = false;
while(!bajarTemperatura){
solucionProxima =
espacioDeSolucion.seleccionarSolucionCercaDe(solucionActual);
double deltaDeEnergia = solucionProxima.costo() solucionActual.costo();
if(deltaDeEnergia < 0){
solucionActual = solucionProxima;
bajarTemperatura = true;
} else {
double probabilidad =
DistribucionBoltzmann.calcular(deltaDeEnergia,temperaturaActual);
double aleatorio = Math.random();
if(aleatorio > probabilidad){
solucionActual = solucionProxima;
bajarTemperatura = true;
}
}
}
ControladorDeTemperatura.bajar(temperaturaActual);
}
return solucionActual;

Fig. 17 Pseudo-cdigo de Simulated Annealing para un problema de minimizacin.


Para cada iteracin, se selecciona una solucin de los alrededores de la solucin actual, la cual se
analizar para ver si es aceptable o no como prxima solucin a considerar. Si la nueva solucin
mejora a la actual, ya se acepta como solucin actual y se pasa a la prxima iteracin, sino se
aceptar la nueva solucin basndose en una probabilidad, usando una distribucin de Boltzmann38
(

9

;<;=>?@
!
A;BC;=@AD=@

) que depende de la desmejora que genera la nueva solucin (delta) y la temperatura

actual.39 Luego de este anlisis, se disminuye la temperatura actual antes de seleccionar la prxima
solucin a estudiar. Una de las estrategias ms sencillas para disminuir la temperatura es restarle
una constante (disminucin lineal).

38 La distribucin probabilstica de Boltzmann describe los estados de un sistema desde la perspectiva de la


energa.
39 Ntese que si la solucin no es seleccionada ni por su delta ni por la distribucin probabilstica, se
selecciona una nueva solucin a considerar pero sin disminuir la temperatura actual.

33

Garca 2010 Introduccin a los Algoritmos Genticos

ALGORITMOS GENTICOS TCNICA META-HEURSTICA


BIOINSPIRADA
Las tcnicas meta-heursticas basan su funcionamiento en intuiciones educadas, experiencias
repetidas o inspiraciones en otros elementos porque suelen ser guas confiables en la resolucin de
problemas por demostracin experimental. Por ejemplo, la evolucin de los seres vivos es, sin duda
alguna, un mecanismo de resolucin de problemas de optimizacin muy efectivo: Para las especies,
sobrevivir es el problema a resolver y las soluciones son aquellos individuos de la especie que lo
logren. La vida ha demostrado a travs del tiempo que las especies siempre consiguen un grupo de
individuos que evitan la extincin, por lo cual este proceso evolutivo es una gua emprica excelente
para solucionar problemas.
Las especies logran sobrevivir gracias a los mecanismos evolutivos que hacen que los individuos de
prximas generaciones se adapten cada vez ms a las condiciones del medio ambiente. Estos
mecanismos tienen principios sencillos, aunque en la vida real ocurren de forma increblemente
compleja.
Uno de los mecanismos ms conocidos es la seleccin natural, aporte de Charles Darwin, el cual
establece que los individuos ms aptos de la especie son los que sobreviven y por esto, a medida
que pase el tiempo los individuos menos aptos perecen. La interpretacin de esto es muy sencilla:
los individuos que no solucionan el problema de sobrevivir correctamente desaparecen, mientras
aquellos que tienen una solucin aceptable perduran. En la naturaleza, la definicin de aptitud de
un individuo para sobrevivir es increblemente compleja, pero de una u otra forma existe. Por
ejemplo, para las gacelas en frica, la velocidad y perspicacia en la huida es vital para sobrevivir a
los ataques de depredadores, por lo cual los ms lentos y/o menos brillantes poco a poco sern
devorados. El resultado de la seleccin natural es una generacin actual de individuos apta para
sobrevivir, pero es el mecanismo de la herencia, aporte de Gregor Mendel, el que determina cmo la
prxima generacin tienden a ser tan o ms apta que sus antecesores.
A travs del intercambio gentico producido en la fecundacin, los progenitores transmiten sus
caractersticas buenas y malas a la descendencia, pero como los progenitores son dos individuos
con ms caractersticas buenas que malas, aptos por seleccin natural, normalmente la
descendencia heredar las caractersticas buenas de sus progenitores combinadas. Esta
combinacin no siempre es exacta, ya que en el intercambio se crean combinaciones genticas que
en los progenitores no existe, por recombinacin gentica y/o mutacin.
34

Garca 2010 Introduccin a los Algoritmos Genticos


Inspirado en este proceso natural de resolucin de problemas de optimizacin, el Dr. John Henry
Holland diseo los algoritmos genticos. Su simple diseo, su versatilidad y su comprobada eficacia
hicieron de esta rea de la Inteligencia Artificial una de las ms estudiadas y aplicadas en la
prctica.
Un algoritmo gentico es una abstraccin del proceso evolutivo de los seres vivos conformado por
un conjunto de elementos y una secuencia de pasos que simulan los mecanismos reales que
permiten a las especies sobrevivir. Esta abstraccin tiene dos componentes importantes: los
elementos de evolucin y el algoritmo evolutivo.
Los elementos de evolucin son estructuras de datos que simulan a los individuos de las especies y
la forma en que se organizan. Aunque en la naturaleza exista un sinfn de elementos que participan
en el proceso evolutivo, los algoritmos genticos suelen considerar slo estos:

Cromosoma representa a una solucin factible del espacio de solucin del problema a
resolver. La solucin factible se codifica en una lista o arreglo de elementos, usualmente
caracteres alfanumricos, para que se asemeje vagamente a la cadena de aminocidos que
conforman al cromosoma. Esta representacin facilita el intercambio gentico que se ha de
realizar en el algoritmo gentico, sin necesidad de que este conozca la naturaleza del
problema y de sus soluciones.

Bondad o Fitness es la evaluacin del cromosoma con respecto al problema a resolver. Suele
ser un nmero real que permite comparar a los cromosomas permitiendo determinar cul
es el mejor.

Individuo es el contenedor que porta al cromosoma y a la bondad o fitness. Muchas veces no


se hace diferencia entre un individuo y un cromosoma, pero esta estructura es muy til si se
quiere agregar caractersticas o comportamientos al individuo que no tengan que ver con la
solucin factible que representa.

Poblacin conjunto finito de soluciones factibles en forma de individuos. Representa un


subconjunto del espacio de solucin del problema a resolver.

Estos elementos interactuaran rigindose por un algoritmo evolutivo, que es simplemente una
secuencia de pasos que simulan los mecanismos evolutivos de la vida real contenidos en un ciclo.
Cada ciclo de ejecucin del algoritmo evolutivo se le llama generacin, lo que representa el
transcurrir del tiempo de la vida real. Los elementos de evolucin van cambiando generacin tras
generacin, segn los mecanismos evolutivos, permitiendo as tener soluciones mejores en cada
35

Garca 2010 Introduccin a los Algoritmos Genticos


una de ellas. Por ende, la ejecucin de un algoritmo gentico busca tomar una poblacin inicial e irla
cambiando generacin tras generacin hasta que se decida parar por alguna razn, usualmente una
cantidad mxima de generaciones o la deteccin de que ya los individuos no estn mejorando. El
resultado se espera que sea una poblacin final con individuos mucho mejores que los de la
poblacin inicial.
Los pasos que usualmente posee un algoritmo gentico son40:
1. Generacin de la Poblacin Inicial representa la creacin de los primeros individuos. La
tcnica ms obvia es seleccionar aleatoriamente soluciones factibles del problema, pero
experimentalmente se ha comprobado que para muchos problemas esta no es la mejor
forma. Usualmente se busca crear una tcnica de generacin de la poblacin inicial por cada
problema que se desea resolver, ya que la idea es repartir lo mejor posible a los individuos
sobre el espacio de solucin.
2. Evaluacin de la Poblacin A cada individuo se le determina su bondad o fitness.
Usualmente la bondad es igual al resultado de evaluar la solucin factible en la funcin que
representa el problema, pero en ciertos casos la bondad de un individuo es calculada de
otra forma41 y por ende es importante tener este paso bien claro y separado de los dems.
3. Operador de Seleccin permite seleccionar de la poblacin a los individuos con mejor
bondad o fitness, que son los que tendrn la opcin de cruzarse para generar descendencia.
El resultado de este operador es un subconjunto de los individuos ms aptos de la
poblacin, usualmente con repeticiones42.
4. Operador de Eleccin permite aparear a los individuos seleccionados. Este operador no es
muy usual ya que casi siempre se opta por aparear aleatoriamente a los mejores individuos,
pero es importante destacar que se pueden establecer estrategias de apareamiento que
pueden favorecer a la evolucin.
5. Operador de Cruce permite el intercambio gentico entre los individuos apareados,
generando as la descendencia. Usualmente consiste en segmentar las listas o arreglos que

40 Los algoritmos genticos es un marco referencial para implementar algoritmos que solucionan problemas,
no es un algoritmo per se. Por esta razn se pueden conseguir algoritmos genticos que tengan formas
diferentes a las descritas en este trabajo, aunque en general, tendrn la misma esencia.
41 La asignacin de bondad o fitness para problemas multiobjetivo no toma en cuenta la funcin del problema
a resolver, sino la ubicacin de los individuos en el espacio de solucin.
42 Un operador de seleccin con repeticiones es aquel que puede seleccionar a un individuo ms de una vez,
por lo cual tiene ms probabilidades de cruzarse.

36

Garca 2010 Introduccin a los Algoritmos Genticos


simbolizan a los cromosomas de los individuos apareados y generar los cromosomas de la
descendencia uniendo dichos segmentos.
6. Operador de Mutacin permite introducir cambios en el contenido de los cromosomas
recin creados para as garantizar la diversidad de la poblacin. Experimentalmente se ha
demostrado que el aporte de este operador es clave ya que si no se utiliza, las poblaciones
tienden a contener individuos muy parecidos y a las pocas generaciones el mejoramiento se
detiene.
7. Actualizacin de Archivo Externo permite almacenar los mejores individuos obtenidos en
cada generacin para evitar que se pierdan cuando se operen con los otros pasos evolutivos,
como por ejemplo la mutacin. Es equivalente a llevar un saln de la fama de cada
generacin. Esta tcnica no est para nada inspirada en el proceso evolutivo real, pero
experimentalmente se ha demostrado que su utilizacin aporta al mejoramiento de las
poblaciones.
8. Operador de Truncamiento dependiendo del operador de cruce utilizado, se pueden
generar dos o ms descendientes por cada apareamiento, lo que produce un crecimiento
fuerte en el tamao de la poblacin. Este operador se utiliza cuando es necesario que las
poblaciones tengan un tamao mximo. Este operador no suele ser utilizado, ya que lo
normal es que los operadores de seleccin y cruce generen una poblacin de tamao
constante.
Individuo[] poblacion, seleccionados, descendencia, archivoExterno;
Pareja[] parejas;
int generacionActual = 0;
int generacionFinal = 100;
poblacion = Operadores.generarPoblacionInicial();
seleccionados = null;
while(generacionActual < generacionFinal){
generacionActual++;
seleccionados = Operadores.seleccion(poblacion);
parejas = Operadores.eleccion(seleccionados);
for(Pareja pareja : parejas){
descendencia = Operadores.cruce(pareja.individuo1(),pareja.individuo2());
Operadores.mutar(descendencia);
Operadores.agregarA(poblacion, descendencia);
}
Operadores.actualizar(archivoExterno, poblacion);
Operadores.truncar(poblacion);
}
return Operadores.mejorSolucionDe(archivoExterno);

Fig. 18 Pseudo-cdigo de un algoritmo gentico.


37

Garca 2010 Introduccin a los Algoritmos Genticos

ELEMENTOS DE EVOLUCIN
Los elementos de evolucin son el componente fundamental del modelado de un problema a ser
resuelto a travs de algoritmos genticos. Representan al problema a resolver y las soluciones
factibles de dicho problema. El primer paso que ha de hacerse para aplicar algoritmos genticos es
determinar la estructura y forma de los elementos de evolucin, para luego determinar los
mecanismos de evolucin que se le aplicarn.

PROBLEMA Y ESPACIO DE SOLUCIN


Aunque no sean propiamente elementos de evolucin, el estudio del problema y su espacio de
solucin es parte fundamental para poder determinar los elementos de evolucin que lo
representan. Este estudio se comprende simplemente de la identificacin del problema a resolver y
como son sus soluciones factibles.
Ejemplo: El Problema del Agente Viajero43, busca determinar el recorrido de menor costo partiendo
de un nodo, que permita visitar todos los nodos del grafo una sola vez y que adems termine en el
mismo nodo de partida.
Planteado de esta forma, este problema de optimizacin busca determinar cul de todos los
recorridos posibles es el de menor costo. Esto nos permite determinar que una solucin factible es
un recorrido del grafo que comienza en un nodo, recorre todos los dems y termina en el mismo
nodo de partida; y el espacio de solucin son todos los recorridos posibles que cumplan con las
condiciones dadas. En la Fig. 19 se puede observar una representacin en forma de conjuntos
ordenados de un par de soluciones factibles al problema del Agente Viajero.

C
B

Solucin Factible 1
{O,A,D,C,E,B,O}

Solucin Factible 2
{O,A,C,D,E,B,O}

Fig. 19 Modelado de soluciones factibles al problema del Agente Viajero

43

El Problema de Grafo Hamiltoniano es mejor conocido con el nombre del Problema del Agente Viajero.
La forma ms estudiada de este problema es su forma de problema de optimizacin.

38

Garca 2010 Introduccin a los Algoritmos Genticos

CROMOSOMA
Una vez determinado un modelo matemtico que represente las soluciones factibles del problema a
resolver, se puede proceder a conseguir una representacin cromosmica de dichas soluciones. Lo
importante aqu es tener claro que un cromosoma, en el contexto de algoritmos genticos, es una
lista o vector de caracteres alfanumricos.
Ejemplo: Para el problema del Agente Viajero se ha determinado un modelo matemtico de un
conjunto ordenado de elementos, lo que es igual a una lista a vector, lo que nos indica que ya se
tiene una representacin cromosmica vlida.
Representacin
cromosmica

Representacin
cromosmica

O
A
D
C
E
B
O

Modelo
matemtico
{O,A,D,C,E,B,O}

O
A
C
D
E
B
O

Modelo
matemtico
{O,A,C,D,E,B,O}

Fig. 20 Representacin cromosmica ineficiente


En la Fig. 20 se puede observar una representacin cromosmica vlida de soluciones, pero
experimentalmente se ha comprobado que estas representaciones de alto nivel suelen ser muy
ineficientes. La recomendacin, y se podra decir que es una obligacin, es conseguir una
representacin cromosmica binaria, es decir, una lista de unos (1) y ceros (0).
El modelo matemtico ms usado para el problema del Agente Viajero es el de un grafo
representado en forma de matriz44. Luego, esa matriz se puede transformar en una lista o vector,
concatenando filas o columnas. Con esto, se tiene una representacin cromosmica binaria de las
soluciones factibles del problema.
J
K
E, F, G, H, , I, E  L
M
N
O

J
0
R0
Q
Q1
Q0
Q0
P0

K L M
1 0 0
0 0 0
0 0 0
0 0 0
0 0 1
0 1 0

N
0
1
0
0
0
0

O
0
0U
T
0T
1T
0T
0S

Fig. 21 Solucin factible para el problema del Agente Viajero en una matriz
44

La matriz es el modelo matemtico ms usado para representar grafos.

39

Garca 2010 Introduccin a los Algoritmos Genticos

BONDAD O FITNESS
La bondad o fitness suele ser simplemente un nmero escalar perteneciente a los reales, que
permite comparar a dos cromosomas de forma cuantitativa. Aunque parezca la parte ms sencilla
del modelo de algoritmos genticos, este elemento es sin duda uno de los ms importantes. La
bondad o fitness de un cromosoma se determina operando dicho cromosoma con una funcin
objetivo, es decir:
V  $WEV Y  !.
En la mayora de los casos, la funcin objetivo coincide con la funcin matemtica que representa el
problema a resolver, pero no siempre es as. Por ejemplo, se pueden definir funciones objetivos que
basen su clculo en algn tipo de comparacin del cromosoma evaluado con el resto de la
poblacin45.
Ejemplo: El problema del Agente Viajero busca minimizar el costo del recorrido, por lo cual una
funcin objetivo obvia y muy efectiva es aquella que dado un recorrido (cromosoma), arroje el
costo del mismo (bondad o fitness), es decir:
V  H G/     !

INDIVIDUO
Es simplemente una estructura de datos que permite almacenar el cromosoma y a su bondad o
fitness. Lo importante de considerar tener esta estructura bien definida y separada de las dems es
que se pueden agregar otras caractersticas al individuo, pero esta estructura no es considerada
parte fundamental de los algoritmos genticos, ya que no es necesaria su existencia para su
funcionamiento.
Ejemplo: se podra almacenar en el individuo algn mecanismo y/o dato que le permita decir si se
quiere aparear o no con determinado individuo, lo que sera utilizado por el operador de eleccin.
Este tipo de consideraciones son muy experimentales y no se suelen ver con frecuencia en
implementaciones clsicas de algoritmos genticos.

45

En el caso de solucin de problemas multiobjetivo la bondad o fitness suele calcularse comparando al


individuo actual con el resto de la poblacin, segn su posicin en el espacio de solucin.

40

Garca 2010 Introduccin a los Algoritmos Genticos

POBLACIN
Es la lista de individuos que generacin tras generacin ir cambiando de contenido, es decir, de
individuos. Esta estructura debe permitir agregar y eliminar individuos fcilmente, ya que es el
objetivo principal de su existencia.

Poblacin
Ind. 1

Ind. 2
Ind. N

Bondad

...
Ind. 3

Bondad

Cromo.
Bondad

Cromo.

Bondad
Cromo.

Cromo.

Fig. 22 Elementos de Evolucin

MECANISMOS DE EVOLUCIN
Aunque los algoritmos genticos sean una meta-heurstica, la experiencia ha demostrado que es
importante adecuar o entonar los mecanismos de evolucin para cada problema basndose en
pequeos experimentos de tipo ensayo y error. En otras palabras, se hace una configuracin
inicial de los mecanismos de evolucin y luego se van haciendo pequeos ajustes que son probados
con corridas experimentales, buscando evitar consumir muchos recursos computacionales46.

GENERACIN DE LA POBLACIN INICIAL


Este mecanismo permite generar a los individuos pertenecientes a la generacin cero (0). Este
mecanismo debe garantizar que los primeros individuos son una muestra representativa del
espacio de solucin del problema, sin importar que sean buenas o malas soluciones.
Para disear un buen mecanismo de generacin de poblacin inicial se debe usar toda la
informacin previa que se maneje sobre el espacio de solucin del problema a resolver. Si se conoce
el comportamiento del espacio de solucin (hacia donde se crece o decrece la funcin objetivo, por
ejemplo) se puede crear un mecanismo especfico que genere soluciones cerca de los lugares del

46Se

deben disear pruebas experimentales que consuman mucho menos recursos que los que se invertir en
resolver el problema definido.

41

Garca 2010 Introduccin a los Algoritmos Genticos


espacio de solucin donde se sabe que la funcin objetivo se empieza a optimizarse, evitando los
lugares del espacio de solucin que se saben lejos de la solucin ptima. Otra forma correcta de
generar soluciones factibles inciales es utilizar un algoritmo ingenuo de resolucin del problema,
que suelen generar soluciones factibles mejores que las encontradas de forma aleatoria.
Ahora, si se desconoce el espacio de solucin o este no est ordenado, la tcnica ms utilizada es el
muestreo aleatorio, el cual consiste en generar un numero N de soluciones factibles de forma
aleatoria. Como todo muestreo aleatorio, lo importante es determinar el nmero N que hace que el
muestreo sea representativo del espacio de solucin.
Ejemplo: En Problema del Agente Viajero, se pueden generar soluciones factibles inciales con un
algoritmo avaro47 que busque minimizar el costo del recorrido. En la prctica, esto tiende a ser
mejor que hacer construcciones aleatorias de caminos hamiltonianos.

EVALUACIN DE LA POBLACIN
Ms que un mecanismo, se podra decir que esto es un paso o actividad que hay que ejecutar para
poder aplicar otros mecanismos evolutivos de forma determinstica, principalmente el mecanismo
de seleccin. La evaluacin de la poblacin consta simplemente en aplicar la funcin objetivo a cada
solucin factible representada en la poblacin. Esto permite colocar un escalar a cada individuo,
hacindolo comparable por su calidad (contextualizada en el problema a resolver). Este paso suele
separarse de todos los dems para que la evaluacin de la poblacin pueda hacerse de forma
individual (solo el cromosoma) o global (cromosoma y/o relacin con los otros individuos de la
poblacin).
Muchas implementaciones de algoritmos genticos no tienen este paso separado, ya que la bondad
o fitness suele ser simplemente una funcin que depende del cromosoma, por lo cual al momento
de crearse el individuo se puede calcular su bondad. Pero hay otras asignaciones de bondad o
fitness ms complejas que no dependen solo del cromosoma., como por ejemplo, se puede tener una

47 Greedy Algorithms son tcnicas de resolucin de problemas que buscan soluciones optimas movindose de
una solucin actual SA a aquella solucin factible vecina que genere el menor costo (o mxima ganancia). Se le
conoce con el nombre avaro, ya que esta tcnica toma siempre la opcin ms rentable, sin prever las
consecuencias de esa decisin.

42

Garca 2010 Introduccin a los Algoritmos Genticos


funcin de asignacin de bondad o fitness que determine la calidad de un individuo tomando en
consideracin que tan lejos o cerca est de los otros individuos en el espacio de solucin48.

OPERADOR DE SELECCIN
Este mecanismo de evolucin es el encargado de simular la teora de seleccin natural darwiniana.
Segn esta teora, solo los individuos ms aptos sobreviven y tienen descendencia, por lo cual la
prxima generacin ser una mezcla de muchas caractersticas genticas buenas, mejorando as,
generacin tras generacin, a la poblacin.
Para poder realizar esta seleccin de forma determinstica y por ende justa, los algoritmos
genticos usan la bondad o fitness como factor de comparacin. Los individuos ms aptos sern
aquellos cuya bondad o fitness sea superior en comparacin al del resto de la poblacin. Los
individuos considerados aptos por este operador, tendrn el derecho a cruzarse si el operador de
eleccin le consigue pareja, mientras que los individuos no aptos simplemente son descartados y no
son pasados al operador de eleccin. Como los individuos seleccionados por este operador forman
un subconjunto de la poblacin, una de las decisiones a tomar es el tamao de este subconjunto, y
otra es si se permiten individuos repetidos o no.
El tamao del subconjunto afecta considerablemente la diversidad de la poblacin resultante, ya
que si el subconjunto es muy pequeo la descendencia ser muy parecida, lo que ir disminuyendo
la diversidad muy rpido generacin tras generacin. Si el algoritmo converge a un valor
rpidamente, lo ms seguro es que se quede atrapado en un valor subptimo que quiz se pudiera
haber superado de haber habido ms individuos con caractersticas diferentes que sacaran a la
poblacin de esa tendencia subptima. Si el subconjunto es muy grande, el operador tender a
comportarse igual a una seleccin aleatoria de individuos, aumentando la diversidad rpidamente
generacin tras generacin. El problema es que si la diversidad aumenta bruscamente, el algoritmo
gentico nunca converger a un valor, por lo cual no se conseguir ni si quiera un valor subptimo
claro49.
Se dice que un operador de seleccin tiene repeticiones cuando dicho operador puede seleccionar a
un mismo individuo ms de una vez, es decir, que aparece repetido en el subconjunto de individuos

48

En el algoritmo gentico multiobjetivo SPEA2 la funcin de asignacin de fitness incluye un estimador de


densidad que estudia la ubicacin de los individuos de la poblacin en el espacio de solucin.
49 En efecto, cuando en un algoritmo gentico la diversidad es muy alta, su comportamiento se asemeja
mucho al de un algoritmo de bsqueda aleatorio.

43

Garca 2010 Introduccin a los Algoritmos Genticos


seleccionados. Usualmente, cuando un operador de seleccin selecciona a un individuo ms de una
vez, es porque dicho individuo tiene una bondad alta, por lo cual su aparicin repetida en el
conjunto de individuos seleccionados aumenta su probabilidad de cruzarse. Experimentalmente se
ha comprobado que los operadores con repeticiones funcionan mejor que los que no la consideran,
por lo cual la tendencia es implementar operadores de seleccin con repeticiones50.
Una vez decidido el tamao del subconjunto y si este permite o no repeticiones, se debe aplicar un
algoritmo que seleccione a los mejores individuos de la poblacin.
Una de las tcnicas ms obvias es la de ordenar a la poblacin de mayor a menor, usando a la
bondad o fitness como factor de comparacin, y se toman los primeros N elementos de la lista como
los seleccionados, pero experimentalmente se ha visto que esta tcnica destruye la diversidad
violentamente, lo que hace que el algoritmo converja a un solo valor en muy pocas generaciones.
Otra tcnica es seleccionar N individuos de forma aleatoria, pero otra vez la diversidad se ve
afectada brutalmente, aumentando muy rpido generacin tras generacin, lo que hace que el
algoritmo nunca converja.

Una mezcla de estos dos acercamientos consiste en seleccionar

individuos aleatoriamente entre los N mejores individuos, lo que mejora la diversidad y permite
repeticiones, pero ha tenido un mal rendimiento experimental en la mayora de los casos.
Estos experimentos han llevado a una especie de nocin general de que todos los algoritmos de
seleccin determinsticos y la seleccin aleatoria afectan muy bruscamente la diversidad y por
ende son operadores ineficaces. Esto hizo que la atencin se centrara en algoritmos heursticos de
seleccin, algunos agregan valor a la seleccin aleatoria mientras otros se basan en probabilidades.
Torneo
Una de los operadores de seleccin ms utilizados es el Torneo. Este operador consiste en simular
enfrentamientos de bondad o fitness en un torneo jerrquico entre subconjuntos de individuos de
la poblacin, donde el vencedor de dicho torneo ser el seleccionado. Se deben ejecutar tantos
torneos como individuos se quieran seleccionar. El detalle importante de este operador es la
organizacin de los torneos.
Si el tamao del subconjunto del torneo es muy grande, se podrn organizar pocos torneos
diferentes, lo que resultar que siempre el mismo grupo de individuos sea el que gane los torneos.
50

No se debe descartar a los operadores de seleccin sin repeticiones, ya que estos pueden funcionar muy
bien para ciertos problemas. Usualmente la decisin de permitir o no las repeticiones se hace basndose en
pruebas experimientales y comparacin de resultados de ambas tcnicas sobre el problema a resolver.

44

Garca 2010 Introduccin a los Algoritmos Genticos


Ntese que esto puede tender a parecerse mucho al algoritmo determinstico de seleccionar a los N
mejores individuos de la poblacin.
El torneo binario con repeticiones es un operador de seleccin donde se arman torneos de solo dos
individuos escogidos de forma aleatoria y el ganador de ese nico enfrentamiento ya se considera
seleccionado. Se le dice que es un operador con repeticiones ya que un mismo individuo puede
participar en ms de un torneo si es aleatoriamente escogido, y en consecuencia puede ganar ms
de un enfrentamiento. La prctica ha demostrado que esta forma tiene un mejor rendimiento en
comparacin a otras organizaciones de torneos.
int cantidadASeleccionar = 100;
Individuo contrincanteUno, contrincanteDos, ganador;
Individuo[] seleccionados;
for(int i = 0; i < cantidadASeleccionar; i++){
contrincanteUno =
poblacion[Utilitarios.numeroAleatorioNoMayorQue(poblacion.length)];
contrincanteDos =
poblacion[Utilitarios.numeroAleatorioNoMayorQue(poblacion.length)];
if(contrincanteUno.bondad > contrincanteDos.bondad){
ganador = contrincanteUno;
}else{
ganador = contrincanteDos;
}
seleccionados = Utilitarios.agregar(ganador, seleccionados);
}
return seleccionados;

Fig. 23 Pseudo-cdigo de un operador de seleccin Torneo Binario con repeticiones.


Ruleta
Otro operador de seleccin tan ampliamente implementado como el Torneo, es el operador de
Ruleta, llamado tambin Rango. Su implementacin ms bsica es ms compleja que la de Torneo,
pero no requiere tantas consideraciones como este ltimo. Es un algoritmo que requiere poca
entonacin, y lo nico que se ha determinado con la prctica es que funciona mejor con
repeticiones.
Este algoritmo utiliza una abstraccin del juego de la ruleta rusa, donde las posiciones o nmeros
en la ruleta son los individuos. Si la bola de la ruleta cae sobre determinado individuo, este es el

45

Garca 2010 Introduccin a los Algoritmos Genticos


seleccionado. Al igual que el torneo, se deben lanzar tantas bolas a la ruleta como individuos se
quieran seleccionar.
Si cada individuo ocupa el mismo espacio en el circulo de la ruleta, este algoritmo tiende a
comportarse igual a una seleccin aleatoria, pero si el espacio o rango en la ruleta que ocupan los
individuos se define en funcin de su bondad o fitness, la bola tendr ms probabilidades de caer en
el rango de un individuo bueno que de un individuo malo.
double[] rangos = new long[poblacion.length];
double sumaDeBondades = 0;
int cantidadASeleccionar = 100;
Individuo individuo, individuoSeleccionado;
Individuo[] seleccionados;
for(int i=0; i < poblacion.length; i++){
individuo = poblacion[i];
if(i != 0){
rango[i] = rango[i-1] + individuo.bondad;
}else{
rango[i] = individuo.bondad;
}
}
double bola;
for(int i = 0; i < cantidadASeleccionar; i++){
bola = Utilitarios.numeroAleatorioNoMayorQue(sumaDeBondades);
individuoSeleccionado = null;
for(int j = 0; j < rangos.length; j++){
if(bola < rango[i]){
individuoSeleccionado = poblacion[i];
}
}
seleccionados = Utilitarios.agregar(individuoSeleccionado, seleccionados);
}
return seleccionados;

Fig. 24 Pseudo-cdigo de un operador de seleccin Ruleta o Rango con repeticiones.

OPERADOR DE ELECCIN
Muchos algoritmos genticos no formalizan la separacin de este operador, ya que la
implementacin clsica de apareamiento es la seleccin aleatoria de parejas entre los individuos
seleccionados. Algunos lo hacen formar parte del operador de seleccin, otros lo hacen formar
parte del operador de cruce, pero si este paso no se separa de los dems, se puede estar perdiendo
46

Garca 2010 Introduccin a los Algoritmos Genticos


la oportunidad de agregar valor a la tc
tcnica
nica de resolucin al momento de emparejar a los
individuos seleccionados.
IBC (Individual Based Choice)
Una vez seleccionados los individuos que pueden cruzarse se puede implementar una tcnica de
eleccin como IBC, la cual permite a cada individuo escoge
escogerr la pareja con la cual se cruzar. Se
pueden utilizar distintos criterios de eleccin basado en la bondad o fitness, como por ejemplo, un
individuo solo se cruzar con individuos con mejor bondad o fitness que l.
Este operador no es muy usual en las imp
implementaciones
lementaciones clsicas de algoritmos genticos, e incluso
se puede decir que est en fase de incubacin, pero algunos resultados experimentales dicen que
con una buena definicin del criterio de eleccin se puede obtener muy buenos resultados, e incluso
podra
dra ser sustituto de los operadores de seleccin.

OPERADOR DE CRUCE
Encargado de la recombinacin gentica y de la creacin de la descendencia, el operador de cruce
es uno de los ms importantes mecanismos de evolucin que hacen que los algoritmos genticos
gentic
funcionen. Por cada pareja definida por el operador de eleccin, el operador de cruce toma los
cromosomas de una pareja y crear nuevas combinaciones a partir de los cromosomas padres. Estas
nuevas combinaciones genticas formarn parte de unos nuevos in
individuos
dividuos llamados descendencia.
Se pueden crear tantos hijos como combinaciones genticas creadas, pero la mayora de las
implementaciones solo generan solo dos individuos por cruce.

Padres

Padres

Hijos

Hijos

Un punto

Dos puntos

Padres
Hijos

Cortar y empalmar
Fig. 25 Operadores de Cruce
47

Garca 2010 Introduccin a los Algoritmos Genticos


La mayora de los operadores de cruce utilizados hoy en da se basan en la segmentacin de los
cromosomas padres en uno o varios puntos para luego unir los segmentos y as generar las nuevas
combinaciones. La mayora de las implementaciones usan el operador de cruce de dos puntos
(Two-point Crossover).

OPERADOR DE MUTACIN
Uno de los operadores ms sencillos, pero increblemente importante. Su responsabilidad es
mantener la diversidad en la poblacin agregando un poco de aleatoriedad en los cromosomas de
los individuos de la descendencia. Empricamente se ha demostrado que un algoritmo gentico sin
mutacin converge muy rpido y por ende tiende a estancarse en malas soluciones51.
La mutacin consiste en tomar cada cromosoma de la descendencia y cambiarlo en un porcentaje
muy, pero muy pequeo. El mejor porcentaje a utilizar no es fcil de determinar, usualmente se
define a travs de una entonacin basada en corridas consecutivas del algoritmo gentico con el
problema a resolver, y quedndose con la mutacin que genere mejores resultados.
En el caso de cromosomas binarios, el cambio a realizar con la mutacin es muy sencillo, ya que
consiste intercambiar unos (1) por ceros (0) y viceversa. Pero en otro tipo de representacin
cromosmica este cambio puede que no sea tan obvio y se requiera definir un algoritmo especfico
para realizarlo.

ACTUALIZACIN DE ARCHIVO EXTERNO


Como se ha visto hasta ahora, los mecanismos de evolucin de los algoritmos genticos funcionan
con acercamientos heursticos, por lo cual es posible que algunas soluciones buenas no sean
seleccionadas por el operador de seleccin, o quiz el operador de cruce o el de mutacin afecten
negativamente a una solucin buena. Para evitar esto, se ha creado un mecanismo elitista que
mantiene en un archivo externo una copia de las mejores soluciones conseguidas durante la corrida
del algoritmo gentico.
Este archivo externo no solo sirve para saber cul es la mejor solucin conseguida por el algoritmo
gentico, ya que se puede utilizar para corregir el funcionamiento del mismo. Por ejemplo, si en una
generacin se determina que la diversidad de la poblacin es demasiado alta y que incluso las
51

Como la mutacin afecta la diversidad, afecta la efectividad del algoritmo gentico: Si hay mucha mutacin
aumenta la diversidad y si hay muy poca mutacin la diversidad disminuye. La idea se centra en conseguir la
mutacin que mantenga la diversidad.

48

Garca 2010 Introduccin a los Algoritmos Genticos


soluciones estn desmejorando, se pueden introducir las soluciones del archivo externo para
incentivar el mejoramiento de la poblacin actual.

OPERADOR DE TRUNCAMIENTO
Muchas decisiones tomadas en los otros mecanismos de evolucin pueden producir que la
poblacin crezca. Por ejemplo, si el operador de cruce genera cuatro descendientes de dos padres,
la prxima generacin se duplica en tamao. Otro posible caso es que se decida que los padres no
salen de la poblacin al tener a su descendencia, lo que hace que en cada generacin la poblacin se
duplique. Este crecimiento se traduce en consumo de recursos computacionales, lo que
definitivamente es un problema que se debe solucionar si se desea que el algoritmo gentico
funcione correctamente en una computadora.
El operador de truncamiento es simplemente un mecanismo de control de crecimiento de la
poblacin. Simplemente se le coloca un tamao mximo a la poblacin y si este tamao mximo es
superado, el operador de truncamiento elimina individuos de la poblacin hasta que se tenga una
poblacin de tamao igual y menor al mximo establecido. Este operador no debera afectar el
rendimiento del algoritmo gentico, por lo cual hay que buscar alejarse de los extremos al momento
de escoger a que individuos eliminar. Por ejemplo, si se escoge eliminar a los peores individuos de
la poblacin, se pudiera estar afectando seriamente a la diversidad, mientras que el muestreo
aleatorio debera funcionar equitativamente, eliminando a tantos individuos malos como buenos.

EVALUANDO A LOS ALGORITMOS GENTICOS


Usualmente, las tcnicas metaheursticas se aplican a problemas que no se pueden resolver de
forma determinstica, como los problemas NP-Completos. Por ende, no se puede conocer la solucin
ptima del mismo lo que hace que la evaluacin del rendimiento de este tipo de tcnica sea relativa,
basndose principalmente en la comparacin con otras tcnicas.
La primera mtrica utilizada para comparar tcnicas metaheursticas es la mejor solucin factible
obtenida al final de una corrida o ejecucin de la tcnica. Este indicador es determinstico y permite
comparar fcilmente dos o ms tcnicas meta heursticas de forma sencilla. El detalle, es que al ser
heursticas, estas tcnicas no siempre obtendrn la misma mejor solucin factible, por lo cual hay
que hacer un estudio comparativo en varias, o mejor dicho, muchas corridas o ejecuciones
independientes. Ahora, escoger la mejor solucin obtenida por la tcnica A en cientos o miles de

49

Garca 2010 Introduccin a los Algoritmos Genticos


corridas y compararla con la mejor solucin obtenida por la tcnica B en la misma cantidad de
ejecuciones tambin es considerado errado, ya que la mejor solucin obtenida por las tcnicas pudo
haber sido producto de condiciones especiales, pero las dems soluciones obtenidas pueden estar
lejos de ese caso especial. Es importante tener en cuenta que las comparaciones de tcnicas
metaheursticas deben tener consideraciones estadsticas o mnimo deben considerar a todas las
soluciones obtenidas.

DOMINANCIA
Esta es una de las formas ms sencillas de comparar tcnicas metaheursticas ya que permite
comparar las soluciones obtenidas en cientos o miles de corridas tomando en cuenta a todas las
soluciones, no solo a las mejores. El nico detalle que tiene es que permite comparar solo a dos (2)
tcnicas a la vez52.
Lo primero que se debe hacer es ejecutar la tcnica de resolucin unos cientos o miles de veces y
almacenar para cada corrida la mejor solucin alcanzada en un conjunto llamando mejores
soluciones obtenidas. Una vez obtenidos los conjuntos de mejores soluciones de las dos tcnicas a
comparar, llamadas aqu tcnicas A y B, se procede a calcular la dominancia, que se hace en los dos
sentidos soluciones de A que dominan a las soluciones de B y viceversa.
Para cada solucin i de A se contabiliza cuantas soluciones de B son peores. Esta cantidad
representa cuantas soluciones de B son dominadas por i. Esta cantidad de soluciones dominadas se
almacena en un acumulador que llamaremos cantidad de soluciones dominadas. Luego se hace el
mismo anlisis de forma inversa y se comparan las soluciones dominadas53.
WG 

F
 Z WG 
 F!, I!
I

WG 

I
 Z WG 
 I!, F!
F

] ^WG 

([\

([\

F
I
_ WG  ` 8 F  I
I
F

52 La dominancia es una comparacin transitiva, as que se pueden hacer comparaciones no directas entre
varias tcnicas basndose en este concepto.
53 La forma ms elegante de hacer la comparacin de dominancia es llevando las soluciones dominadas a

porcentaje de dominancia. La formula es:   GG  


b

50

n
o
glhp(mlm mi cdefg(dhic q

cdefg(dhicjdk(hlmlc

Garca 2010 Introduccin a los Algoritmos Genticos

CONVERGENCIA Y DIVERSIDAD
La convergencia es un estudio que consiste en determinar para cada generacin cual es el valor de
la funcin objetivo ms representativo
ntativo de la poblacin y graficarlo. Esto da como resultado una
curva que indica cmo va mejorando este valor representativo generacin tras generacin.
El valor representativo es la medida de tendencia central (convergencia), determinada a travs de
un anlisis exploratorio de la poblacin. Este anlisis tambin nos permite determinar la medida de
dispersin (diversidad), indicador que describe que tan dispersos estn los resultados en el espacio
de solucin.. Por ejemplo, si el anlisis exploratorio nos lo indica, el promedio aritmtico de todas
las soluciones puede ser el valor representativo, y la desviacin estndar la medida de dispersin.

Fig. 26 Estudio de convergencia y diversidad de 100 generaciones de un algoritmo gentico

51

Das könnte Ihnen auch gefallen