You are on page 1of 28

Algoritmos Genticos

utilizando MatLab
Inteligencia Artificial I

Aligia, Adrian
Legajo: S9756
Inteligencia Artificial I - Algoritmos genticos con Matlab

ndice

1 - Introduccin 3

2 - Algoritmos genticos en Matlab


2.1 Escribir la funcin en matlab 3
2.2 minimizar y maximizar funciones 4
2.3 el toolbox 4
2.4 definicin del problema 5

3 - Opciones 5
3.1 opciones de poblacin 5
3.2 escalamiento de la funcin idoneidad 9
3.3 opciones de seleccin 10
3.4 opciones de reproduccin 12
3.5 opciones de mutacin 12
3.6 opciones de cruce 14
3.7 opciones de migracin 16
3.8 - Opciones de funciones hibridas 17
3.9 - Criterios de detencin 17
3.10 - Opciones de grficas 18
3.11 - Opciones de funciones de salida 20
3.12 - Visualizar en la ventana de comandos 20
3.13 - Evaluacin de las funciones de usuario 21

4 - Ejemplo de aplicacin. La funcin de Rastrigin 22

5 - Conclusin 28

Facultad de Ingeniera Universidad Nacional de Cuyo 2


Inteligencia Artificial I - Algoritmos genticos con Matlab

Algoritmos genticos
1 Introduccin

Los algoritmos genticos (AG) son una herramienta utilizada para la resolucin de
problemas de optimizacin. Estn basados en la seleccin natural, una analoga con el
proceso que gobierna la evolucin biolgica. Los AG modifican sistemticamente una
poblacin de individuos, en cada paso el algoritmo selecciona algunos individuos para que
se conviertan en padres y generen los hijos de la siguiente generacin. A travs de
sucesivas generaciones la poblacin evoluciona hacia una solucin ptima. La principal
ventaja que ofrece es que puede utilizarse en una gran variedad de problemas donde los
mtodos convencionales de optimizacin no se desenvuelven bien, entre ellos problemas
con funciones objetivo discontinuas, no diferenciables, estocsticas o altamente no
lineales.

El algoritmo gentico utiliza principalmente tres operaciones en cada paso para crear la
siguiente generacin de individuos:

a- Reglas de seleccin: determina que individuos sern elegidos como padres para la
creacin de la siguiente generacin.
b- Cruce: combina dos padres para la creacin de hijos para la siguiente generacin
c- Mutacin: Realiza cambios aleatorios a individuos para generar nuevos hijos.

2 - Algoritmos genticos en Matlab


2.1 - Escribir la funcin en Matlab

Para hacer uso de la herramienta de algoritmos genticos en Matlab, primero se debe escribir la
funcin que se quiere optimizar en un script de Matlab, es decir en un archivo con extensin .m. La
funcin debe aceptar como argumento un vector fila cuyo largo queda determinado por la
cantidad de variables de la funcin objetivo, y debe devolver un valor escalar.
Para hacerlo se debe seleccionar nuevo script desde el men de matlab. Dentro del archivo .m se
escriben un cdigo similar al siguiente:

function y = mifuncion(x)
y = x(1)^2 - 2*x(1)*x(2) + 6*x(1) + x(2)^2 - 6*x(2);

Por ltimo se debe salvar el archivo .m en un directorio dentro de la ruta de matlab

Facultad de Ingeniera Universidad Nacional de Cuyo 3


Inteligencia Artificial I - Algoritmos genticos con Matlab

2.2 - Minimizar y maximizar funciones


El toolbox de Algoritmos genticos funciona minimizando la funcin objetivo f(x). Si en
cambio se desea buscar un valor que maximice dicha funcin, se puede utilizar el toolbox
cambiando la funcin f(x) por f(x). Ya que el mnimo de f(x) se produce en el mismo
punto que el mximo de f(x).

2.3 - El toolbox
La herramienta de Matlab para optimizacin mediante algoritmos genticos brinda una
interfaz grafica sencilla para utilizar este mtodo sin la lnea de comandos.

1- Abrir el toolbox

A partir del Matlab R2012 la herramienta de algoritmos genticos est incluida dentro del
toolbox de optimizacin. Para abrirlo existen varias opciones:

Se puede escribir desde la lnea de comandos:

gatool abre directamente el GA toolbox.

optimtool abre la herramienta de optimizacin, de donde se selecciona algoritmo


gentico (ga- genethic algorithm) en la pestaa solver.

El toolbox de optimizacin tambin puede abrirse desde la pestaa APPS en la ventana


principal de Matlab:

Facultad de Ingeniera Universidad Nacional de Cuyo 4


Inteligencia Artificial I - Algoritmos genticos con Matlab

Una vez abierto el toolbox de AG aparecer una ventana como la siguiente:

2.4 - Definicin del problema

En la herramienta de optimizacin mediante algoritmos genticos aparecen una gran


cantidad de campos y opciones. Sin embargo son pocos los campos obligatorios que son
necesarios para correr el algoritmo, solo es necesario especificar la funcin idoneidad
(fitness function) y el numero de variables de la misma. Si el problema lo requiere se
pueden agregar restricciones para los valores que pueden tomar las variables o modificar
el comportamiento del algoritmo a travs del men de opciones.

Fitness Function: Es la funcin objetivo que se desea minimizar. Se debe ingresar en la


forma @mifuncion, donde mifuncion.m en un archivo de matlab creado como se mostro
anteriormente.

Facultad de Ingeniera Universidad Nacional de Cuyo 5


Inteligencia Artificial I - Algoritmos genticos con Matlab

Number of Variables: (nmero de variables), es el largo del vector de entrada de la


funcin objetivo.

Con estos dos campos queda definido el problema a optimizar. Opcionalmente, y si el


problema lo requiere se pueden incluir restricciones.

Constraints (restricciones): Son restricciones a los valores que pueden tomar las variables
de la funcin, hay cinco tipos bsicos:

Linear inequalities (desigualdades lineales): Son de la forma A*x<= b. Los valores A


y b pueden ser escalares o una matriz y un vector respectivamente segn la
cantidad de variables.
Linear equalities (igualdades lineales): De la forma A*x=b. En este caso A y b
tambin pueden ser una matriz y un vector respectivamente.
Bounds (Limites): Representan los valores mximos y mnimos que pueden tomar
las variables. Lower (inferior) y Upper (superior) son vectores cuando la cantidad
de variables es mayor a 1.
Nonlinear constraint function (Funcion de restriccion no lineal): define restricciones no
lineales. Se puede especificar la funcin como una funcin annima o bien de la forma
@restriccionNoLineal, donde restriccionNoLineal es un archivo .m que devuelve los
vectores c y ceq. Las igualdades no lineales son de la forma ceq=0, y las desigualdades
toman la forma c<=0.
Integer variable indices (ndices de variable entera): es un vector cuyos elementos dan
los componentes de x que son enteros. En caso de que este campo no est vacio se debe
cumplir que tanto Aeq y beq estn vacios, cualquier restriccin no lineal debe devolver un
vector vacio ([]) para ceq, el tipo de poblacin debe ser vector doble (doubl vector).

Facultad de Ingeniera Universidad Nacional de Cuyo 6


Inteligencia Artificial I - Algoritmos genticos con Matlab

3 - Opciones
Para obtener mejores resultados generalmente es necesario experimentar con diferentes
opciones. Elegir las opciones ms adecuadas para la resolucin de un problema es un
proceso de prueba y error que requiere de varias iteraciones. Entre las muchas opciones
que pueden modificarse estn las relacionadas con la poblacin, el escalamiento de la
funcin de fitness, seleccin, reproduccin, mutacin, cruce, migracin, restricciones y
criterios de detencin entre otros.

3.1 Opciones de Poblacin (Population)

Population Type (tipo de poblacin): Hace referencia al tipo de dato de entrada de la


funcin de fitness, puede ser de las siguientes clases:

1- Double Vector (vector doble): Es la opcin por defecto, se utiliza cuando los
argumentos de la funcin a optimizar son de tipo doble.

2- Bit String (Cadena de bits): Se utilice cuando los valores de los argumentos de la
function fitness son de tipo binario.

Facultad de Ingeniera Universidad Nacional de Cuyo 7


Inteligencia Artificial I - Algoritmos genticos con Matlab

3- Custom (personalizada): Se utiliza cuando el tipo de dato de la poblacin no es


ninguno de los anteriores.

Si se utiliza un tipo de dato custom o definido por el usuario tambin es necesario


definir las funciones de creacin, mutacin y cruce de modo que acepten el tipo de dato
especificado.

Population size: Tamao de la poblacin. Define la cantidad de individuos que existirn


durante cada generacin en la ejecucin del algoritmo. Con una poblacin grande el
algoritmo gentico recorre el espacio de soluciones de manera ms exhaustiva, por lo
tanto tiene menores posibilidades de encerrarse en un mnimo local. Sin embargo una
poblacin ms extensa resulta en un mayor costo computacional.

Cration Function (funcin de creacin): Especifica la funcin con la que se crea la


poblacin inicial del algoritmo gentico. Se puede elegir entre las siguientes opciones:

Uniform (uniforme): crea una poblacin inicial con una distribucin uniforme.
Custom: Permite al usuario especificar su propia funcin de creacin, la misma
debe generar salidas del mismo tipo que el especificado para el tipo de dato en
population type.
Feasible population (poblacin factible): crea una poblacin inicial aleatoria que
satisface los lmites y restricciones lineales impuestas.
Constraint dependant (dependiente de las restricciones): Es la opcin por
defecto, utiliza una funcin uniforme cuando no hay restricciones y poblacin
factible en caso de que hayan restricciones definidas.

Initial population (poblacin inicial): Especifica una poblacin inicial para el algoritmo. El
valor por defecto es [], en cuyo caso el AG usara la funcin de creacin elegida
anteriormente. Si se desea ingresar un arreglo no vacio, el mismo debe tener tantas filas
como tamao de poblacin y una cantidad de columnas igual al nmero de variables. En
este caso el algoritmo no llama a la funcin de creacin.

Initial Scores (Puntajes iniciales): Asigna puntajes iniciales a la poblacin inicial, si no se


asignan puntajes iniciales el AG los calcula a travs de la funcin idoneidad (fitness
function).

Initial Range (Rango inicial): Impone el rango de los vectores en la poblacin inicial que es
generada a travs de la funcin de creacin. Se puede especificar el rango inicial a travs
de una matriz con una cantidad de columnas igual a la cantidad de variables, cada una de
las cuales es de la forma [lb; ub], donde lb (low bound) determina el lmite inferior y ub
(upper bound) el lmite superior para la coordenada correspondiente.

Facultad de Ingeniera Universidad Nacional de Cuyo 8


Inteligencia Artificial I - Algoritmos genticos con Matlab

3.2 - Escalamiento de la funcin Idoneidad (Fitness Scaling)

El escalamiento de la funcin idoneidad convierte los valores crudos que devuelve dicha
funcin a valores que estn dentro de un rango que sea apropiado para la funcin de
seleccin. Las diferentes formas de escalado son:

Rank: Es la opcin por defecto. En este modo de escalamiento se le da un valor 1 al


individuo con mejor puntaje, 2 al siguiente y as sucesivamente.
Proportional (proporcional): El escalado proporcional proporciona un valor
escalado a cada individuo proporcional al puntaje del mismo.
Top (superior): Este modo realiza un escalamiento de los mejores individuos de
manera igualitaria. Al seleccionar este modo se abre otro men con el campo
Quantity (Cantidad) que indica la cantidad de individuos que sern escalados con
un valor positivo. Quantity puede ser un valor entero entre 1 y el tamao de la
poblacin, o un nmero racional entre 0 y 1 que representa un porcentaje de la
poblacin. El valor por defecto es 0.4 (40% de la poblacin). En este modo de
escalamiento a cada individuo que producir hijos en la generacin actual se le
asigna el valor 1, mientras que a los restantes se le asigna un 0.

Shift linear (desplazamiento lineal): Produce el escalamiento de los valores crudos


de manera tal que la expectativa del individuo ms apto sea igual a una constante
multiplicada por el puntaje promedio de la poblacin. El valor de la constante se
especifica en el campo Max survival rate (mxima tasa de supervivencia) que se
despliega al seleccionar este modo de escalado.

Facultad de Ingeniera Universidad Nacional de Cuyo 9


Inteligencia Artificial I - Algoritmos genticos con Matlab

Custom (definida por el usuario): Este modo le permite al usuario escribir la


funcin de escalamiento que desee. Si la funcin establecida no tiene argumentos
de entrada la misma se ingresa en el casillero correspondiente de la forma
@mifuncesc. Si la funcin posee argumentos entonces se debe escribir de la forma
{@mifuncesc, P1, P2, } , donde P1, P2 son los argumentos de la funcin.

3.3 - Opciones de seleccin (Selection)

Estas opciones le especifican al Algoritmo gentico como seleccionar los padres para la
siguiente generacin. Las opciones son:
Stochastic Uniform (Estocstica uniforme): Es la funcin de seleccin por defecto,
la misma crea una lnea en la que cada individuo ocupa una seccin de la misma
cuya longitud es proporcional a su puntaje escalado. El algoritmo se mueve a lo
largo de la recta en pasos de igual longitud y en cada paso elige un padre segn el
segmento de recta en el que haya cado. El primer paso es un nmero aleatorio
menor a la longitud de los pasos.

Facultad de Ingeniera Universidad Nacional de Cuyo 10


Inteligencia Artificial I - Algoritmos genticos con Matlab

Remainder (Resto): Esta funcin de seleccin asigna padres de manera


determinista mediante la parte entera del puntaje escalado de cada individuo, y
luego usa el mtodo de seleccin por ruleta en la parte decimal restante. Por
ejemplo si el valor escalado de la funcin identidad para un determinado individuo
es 2.3, el mismo es listado 2 veces en correspondencia con su parte entera. El resto
de los padres se eligen estocsticamente. La probabilidad de que un padre sea
elegido en este paso es proporcional a la parte fraccional de su valor.
Uniform (Uniforme): Esta funcin elige padres de acuerdo al valor de expectativa y
al nmero de padres. Resulta muy til para dubbuging y testeo pero no resulta
muy adecuado para la resolucin de problemas.
Roulette: Elige padres simulando una rueda de ruleta, en la cual el rea de cada
seccin correspondiente a cada individuo es proporcional a la expectativa de cada
individuo. El algoritmo utiliza un nmero aleatorio para seleccionar una de las
secciones con probabilidad igual a su rea.
Tournament (Torneo): La seleccin por torneo funciona eligiendo un nmero de
individuos especificado por la variable Tamao de torneo, luego elige el mejor
individuo de cada torneo para convertirse en padre. El Tamao de torneo debe ser
como mnimo 2, por defecto se utiliza 4.

Custom: Permite ingresar una funcin de seleccin propia. La misma debe estar
escrita en un archivo .m y se ingresa en el casillero que aparece al elegir esta
opcin de la forma @Mifuncsel.

Facultad de Ingeniera Universidad Nacional de Cuyo 11


Inteligencia Artificial I - Algoritmos genticos con Matlab

3.4 - Opciones de Reproduccin (Reproduction)

Estas opciones determinan como el AG crea los hijos para la siguiente generacin.
Elite count especifica el nmero garantizado de individuos que sobrevivirn para la
prxima generacin. El mismo es un valor entero positivo menor o igual al tamao de la
poblacin.
Crossover fraction especifica la fraccin de individuos de la generacin siguiente que
sern producidos por la funcin de cruce. La funcin de mutacin producir la cantidad de
individuos restantes. El valor puede variar entre 0 y 1.

3.5 - Opciones de Mutacin (Mutation)

Las opciones de mutacin especifican de qu manera el algoritmo gentico hace


pequeos cambios aleatorios en los individuos de la poblacin para crear hijos mutados.
La mutacin provee diversidad y le permite al AG buscar en un espacio ms amplio y no
caer en mnimos locales. Se puede elegir entre opciones predeterminadas o bien definir
una funcin de mutacin personalizada.

Facultad de Ingeniera Universidad Nacional de Cuyo 12


Inteligencia Artificial I - Algoritmos genticos con Matlab

Se puede elegir entre las siguientes opciones de mutacin:

Gaussian (Gaussiana): Es la opcin de mutacin por defecto. Esta funcin suma un valor
aleatorio extrado de una distribucin gaussiana a cada entrada del vector padre. La
varianza de esta distribucin se especifica por la variable Scale (escala) y Shrink
(contraccin).

Uniform (uniforme): La mutacin uniforme es un proceso de dos etapas. Primero el


algoritmo selecciona una fraccin de los elementos del vector de un individuo, donde cada
elemento tiene una probabilidad de ser mutado determinada por el valor Rate. En el
segundo paso cada elemento seleccionado se reemplaza por un valor aleatorio
seleccionado de una distribucin uniforme en el rango de cada entrada.

Custom (personalizada): Permite ingresar una funcin de mutacin especfica. La funcin


debe estar en un archivo .m y se incluye en el cuadro de la forma @miFuncMutacion. Si la
funcin tiene argumentos de entrada la misma se debe ingresar como un arreglo de la
forma {@miFuncMutacion, Arg1, Arg2,}.

Facultad de Ingeniera Universidad Nacional de Cuyo 13


Inteligencia Artificial I - Algoritmos genticos con Matlab

3.6 - Opciones de Cruce (Crossover)

Las opciones de cruce determina como el algoritmo gentico combina dos individuos o padres,
para formar nuevos hijos en la siguiente generacin.

Scattered (disperso): Crea un vector binario aleatorio y selecciona los genes donde el
vector tiene un 1, en el primer padre, y los genes donde el vector es 0 en el segundo
padre, luego los combina para formar un hijo.

Ejemplo:
padre1 = [1 2 3 4 5 6 7 8]
padre 2 = [a b c d e f g h]
vector binario: [1 1 0 0 1 0 0 0]
hijo = [a b 3 4 e 6 7 8 ]

Single Point (un solo punto): Elige un nmero entero aleatorio entre 1 y la cantidad de
variables. Este ser el punto de corte, utiliza los primeros elementos del primer padre y
concadena la segunda parte del segundo padre para formar un hijo.
Two Point (Dos puntos): Elige dos nmeros entero aleatorio entre 1 y la cantidad de
variables: n y m. Selecciona del primer padre los elementos entre 1 y n y los elementos
entre m y cantidad de variables. Del segundo padre toma los elementos entre n y m.
Luego combina las tres partes para formar un nuevo hijo.
Intermediate (intermedio): Crea nuevos hijos calculando un promedio ponderado de los
valores de los padres. Se puede modificar los pesos de la ponderacin a travs de la
variable Ratio el cual puede ser un escalar o un vector fila de longitud igual a la cantidad
de variables. Esta funcin crea un hijo a partir de dos padres (p1 y p2) a travs de la
siguiente frmula:

Hijo = p1 + rand x Ratio x (p1 p2)

Facultad de Ingeniera Universidad Nacional de Cuyo 14


Inteligencia Artificial I - Algoritmos genticos con Matlab

Heuristic: retorna un hijo que cae dentro de la lnea que contiene ambos padres, a una
distancia pequea del padre con mejor funcin idoneidad en la direccin del segundo
padre. Se puede modificar la distancia al mejor padre a travs del parmetro Ratio.
Hijo = p2 + Ratio x (p1 p2)

Arithmetic (Aritmtica): crea a los hijos como la media aritmtica de ambos padres. El
nuevo hijo en la lnea de ambos padres a una distancia uniforme.
Custom: Permite ingresar una funcin especfica. La funcin debe estar en un archivo .m y
se incluye en el cuadro de la forma @miFuncion. Si la funcin tiene argumentos de
entrada la misma se debe ingresar como un arreglo de la forma {@miFuncion, Arg1,
Arg2,}.

Facultad de Ingeniera Universidad Nacional de Cuyo 15


Inteligencia Artificial I - Algoritmos genticos con Matlab

3.7 - Opciones de migracin (Migration)

Estas opciones le dicen al algoritmo gentico como los individuos se mueven entre
subpoblaciones. Esta opcin es vlida cuando se ha configurado el tamao de poblacin
como un vector de dimensin mayor a 1. Cuando se realiza el proceso de migracin los
mejores individuos de una subpoblacin reemplazan a los peores de otra subpoblacin.
Los individuos que migran de una poblacin a la otra son copiados, es decir no se eliminan
de la subpoblacin que los origin.

Se puede tomar control sobre el proceso de migracin a travs de las siguientes opciones:

Direccin: La migracin puede ocurrir solo en un sentido o en ambos.

Si la direccin se elige hacia adelante (Foward) la migracin ocurre hacia la ltima


subpoblacion.
Si se elige la migracin en ambos sentidos (Both) los mejores individuos migran
tanto hacia la poblacin n-1 como hacia la n+1.

Los individuos de la ltima poblacin migran hacia la primera, y en el caso que se elija la
direccin en ambos sentidos, los de la primera migran hacia la ltima.

Fraction (fraccin): controla cuantos individuos se mueven entre subpoblaciones. El


nmero representa la fraccin de individuos de la subpoblacin ms chica entre las dos
que estn involucradas en el proceso de migracin.

Interval (Intervalo): controla cuantas generaciones pasan entre cada migracin. Por
ejemplo si el elige el valor por defecto, 20, la migracin ocurrir cada 20 generaciones.

Facultad de Ingeniera Universidad Nacional de Cuyo 16


Inteligencia Artificial I - Algoritmos genticos con Matlab

3.8 - Opciones de funciones hibridas (Hybrid Function)

Una funcin hibrida es otro algoritmo de optimizacin que se corre luego de que el
algoritmo gentico se detiene. Las opciones son otras funciones que se encuentran en el
toolbox de optimizacin de Matlab:

Las mismas pueden ser fminsearch, patternseach, fminunc y fmincon.

3.9 - Criterios de detencin (Stopping Criteria)

Facultad de Ingeniera Universidad Nacional de Cuyo 17


Inteligencia Artificial I - Algoritmos genticos con Matlab

Estas opciones determinan cuando se detiene el algoritmo gentico. Las opciones son:

Generaciones (Generations): Especifica el nmero mximo de iteraciones que el


AG realiza antes de detenerse.
Lmite de tiempo (Time limit): Especifica el mximo tiempo en segundos que el AG
correr antes de detenerse.
Lmite de aptitud (fitness limit): El algoritmo se detiene si se alcanza un valor en la
funcin de fitness es menor o igual al valor especificado.
Stall generations (generaciones estticas): El algoritmo se detiene si no hay
mejoras en la funcin objetivo al cabo de una cantidad de generaciones
establecida por el parmetro Stall generatios.
Stall time limit (lmite de tiempo estancado): El algoritmo se detiene si no hay
mejoras en la funcin objetivo al cabo de una cantidad de tiempo en segundos
determinada por stall time.
Function tolerance (tolerancia de la funcin): Si el promedio ponderado en el
cambio de la funcin objetivo al cavo de una cantidad de generaciones
especificada por stall generations es menor al parmetro function tolerance,
entonces el algoritmo se detiene.
Nonlinear constraint tolerance (tolerancia de las restricciones no lineales): es la
tolerancia al no cumplimiento de las restricciones impuestas. En realidad no es un
criterio de detencin sino que expresa la factibilidad de la solucin.

3.10 - Opciones de grficas (Plot functions)

Facultad de Ingeniera Universidad Nacional de Cuyo 18


Inteligencia Artificial I - Algoritmos genticos con Matlab

Estas opciones le permiten al usuario graficar datos del algoritmo gentico mientras se
ejecuta. Cuando se selecciona alguna de las opciones de ploteo y se corre el algoritmo, el
programa mostrara cada grafica deseada en una ventana diferente. Se puede parar la
ejecucin del algoritmo en cualquier momento a travs del comando stop en la ventana
principal del toolbox para obtener una grafica de cualquier instante de la ejecucin.

Plot interval: especifica la cantidad de generacin que pasan entre puntos consecutivos
de la grafica.

Para realizar graficas se puede elegir entre las siguientes funciones:

Best fitness (Mejor aptitud): grafica los mejores valores de la funcin idoneidad con
respecto a la cantidad de iteraciones en cada generacin.

Expectation (Expectativa): grafica la cantidad esperada de hijos en funcin de los valores


sin escalamiento de la funcin idoneidad.

Score diversity (diversidad de puntajes): crea un histograma con los puntajes de cada
generacin

Stopping (detencin): grafica los niveles alcanzados de los distintos criterios de detencin
del algoritmo

Best individual (mejor individuo): grafica los valores de los elementos del vector del
mejor individuo en cada generacin.

Genealogy (genealoga): grafica la genealoga de los individuos. Las lneas entre una
generacin y otra siguen un cdigo de colores.

Lneas rojas: indican hijos generados por mutacin


Lneas azules: hijos creados por cruce
Lneas negras: indican individuos de elite

Scores (puntajes): genera una grafica con los puntajes de los individuos en cada
generacin.

Distance (distancia): muestra la distancia promedio entre individuos en cada generacin

Range (rango): grafica el valor mnimo, mximo, y promedio de la funcin objetivo en


cada generacin

Selection (seleccin): genera un histograma de los padres.

Custom function: permite crear una funcin para graficar propia

Facultad de Ingeniera Universidad Nacional de Cuyo 19


Inteligencia Artificial I - Algoritmos genticos con Matlab

3.11 - Opciones de funciones de salida (Output function)


Las funciones de salida son aquellas que el algoritmo gentico llama en cada iteracin
para mostrar los resultados de esa generacin en la lnea de comandos. Para utilizar una
funcin se debe crear la misma en un archivo .m y luego incluirla en el cuadro de la forma
@funciondesalida. Se pueden utilizar funciones con mltiples salidas pasando un arreglo a
la funcin. Si no desea utilizar ninguna funcin de salida simplemente se debe dejar vacio
la casilla de verificacin.

3.12 - Visualizar en la ventana de comandos

El nivel de visualizacin (level of display) controla la cantidad de informacin que se


muestra en la ventana de comandos de MatLab cuando se corre el algoritmo. Las opciones
son:

Off: desactivado, no se visualizar ninguna salida

Iterative (iterativo): muestra informacin en cada iteracin del algoritmo

Diagnose (diagnostico): muestra informacin en cada iteracin. Adems la herramienta


de diagnostico da informacin acerca de problemas durante la ejecucin y sobre las
opciones que se han cambiado de los valores por defecto.

Final: Solamente muestra la razn por la que el algoritmo se detuvo al final del programa.

Facultad de Ingeniera Universidad Nacional de Cuyo 20


Inteligencia Artificial I - Algoritmos genticos con Matlab

3.13 - Evaluacion de las funciones de usuario (User function evaluation)

El modo de evaluacin de las funciones idoneidad y de restricciones (Evaluate fitness and


constraint functions) determina en qu orden se corrern las funciones respectivas dadas
por el usuario.

In serial (en serie): significa que las funciones de fitness y las restricciones se evalan por
separado para cada individuo.

Vectorized (vectorizado): las funciones se evalan en una sola llamada para toda la
poblacin.

In parallel (en paralelo): en este modo las funciones de fitness y las restricciones se
evalan en grupos de procesos. Para correr el algoritmo en este modo primero se deben
configurar el entorno para trabajar con mltiples ncleos.

Facultad de Ingeniera Universidad Nacional de Cuyo 21


Inteligencia Artificial I - Algoritmos genticos con Matlab

4 - Ejemplo de aplicacin. La funcin de Rastrigin

Para ilustrar el funcionamiento del toolbox de optimizacin mediante algoritmos


genticos en Matlab, se usar la funcin de Rastrigin. Esta funcin tiene la particularidad
de poseer un solo mnimo global situado en el origen (0, 0) donde la funcin toma el valor
0, y una cantidad numerosa de mnimos locales, los cuales se vern acotados al definir los
lmites del espacio de bsqueda.

La funcin est definida por la siguiente expresin:

= 20 + 21 + 22 10(cos 21 + cos 22 )

Y produce una grafica como la siguiente:

Facultad de Ingeniera Universidad Nacional de Cuyo 22


Inteligencia Artificial I - Algoritmos genticos con Matlab

Para correr el algoritmo en primer lugar se inicia el toolbox, mediante el icono de la


herramienta de optimizacin o bien ingresando optimtool en la lnea de comandos. Una
vez que se abre la ventana se selecciona ga- genetic algorithm en el campo Solver. Como
la funcin de Rastrigin est incluida en matlab no es necesario definirla previamente en un
archivo .m (el mismo ya esta creado), asique simplemente se ingresa como funcin de
fitness @rastriginsfcn y como numero de variables 2.

Ejecucin nro. 1: valores por defecto

Esta informacin ya es suficiente para correr el algoritmo. En primer lugar se resolver con
todas las opciones por default y luego se intentara mejorar los resultados mediante el uso
de algunas opciones.

Luego de ejecutar el algoritmo mediante el botn Start se observan los resultados en la


ventana de ejecucin. Se puede observar que al cabo de 51 generaciones el algoritmo se
detuvo porque el cambio promedio en los valores de la funcin de fitness es menor al
especificado por las opciones. Y al hacerlo encontr un mnimo en el punto (0.01, 0.021)
donde la funcin toma el valor de 0.112637.

Facultad de Ingeniera Universidad Nacional de Cuyo 23


Inteligencia Artificial I - Algoritmos genticos con Matlab

Este resultado, dependiendo de la naturaleza del problema puede tomarse como


aceptable o no. En este caso, que ya se conoce la ubicacin del mnimo global, es claro
que queda margen para mejorarlo.

Para analizar mejor el desempeo del algoritmo podemos analizar algunas graficas de los
resultados del algoritmo. Para empezar se mostraran las graficas de los valores de los
mejores individuos y la distancia promedio entre ellos, las cuales se seleccionan en las
opciones de funciones de ploteo.

Facultad de Ingeniera Universidad Nacional de Cuyo 24


Inteligencia Artificial I - Algoritmos genticos con Matlab

Al observar estos datos se puede ver como al pasar las generaciones el mejor valor
alcanzado sigue mejorando as como el valor promedio de los individuos (mean fitness). A
su vez la distancia promedio entre individuos va disminuyendo progresivamente aunque
aun se tiene una poblacin bastante dispersa. Esto puede indicar que el algoritmo se
detuvo demasiado pronto.

Ejecucin nro. 2: modificacin del criterio de detencin

En el caso anterior el motivo de la detencin del algoritmo fue: el cambio promedio en


los valores de la funcin de fitness es menor al especificado por las opciones. Esto se
puede modificar mediante la opcin de stall generations en el men de opciones de
criterios de detencin. Por defecto es 50, y para una nueva prueba se llevara a 150:

Facultad de Ingeniera Universidad Nacional de Cuyo 25


Inteligencia Artificial I - Algoritmos genticos con Matlab

En este caso se observa un resultado considerablemente mejor. La funcin alcanza un


valor cercano a 4.46x10-4 en (-001, 0), lo cual es un resultado ms satisfactorio para
cualquier aplicacin ingenieril. Al observar las mismas graficas que en el caso anterior se
puede ver como la poblacin converge al cabo de las generaciones. En este caso el criterio
de detencin del algoritmo fue el de mxima cantidad de generaciones (valor por defecto:
100).

Facultad de Ingeniera Universidad Nacional de Cuyo 26


Inteligencia Artificial I - Algoritmos genticos con Matlab

Ejecucin nro. 3: modificacin del tamao de la poblacin

Una alternativa para explorar el espacio de soluciones de manera ms rpida es aumentar


el tamao de la poblacin. El valor por defecto es 20, en esta prueba se duplicara el valor
a 40 individuos.

Al ejecutar el algoritmo los resultados fueron los siguientes:

En este caso se puede considerar que el algoritmo obtuvo el mnimo de la funcin. Ya que
la funcin toma el valor de 1.98 x10 -5 en (0, 0).

Facultad de Ingeniera Universidad Nacional de Cuyo 27


Inteligencia Artificial I - Algoritmos genticos con Matlab

Conclusin

La herramienta de optimizacin mediante algoritmos genticos de Matlab brinda una


manera sencilla e intuitiva para resolver problemas de minimizacin de variadas
naturalezas. La interfaz aporta la posibilidad de modificar diversos parmetros del
algoritmo de modo que este pueda ajustarse de manera adecuada a una gran cantidad de
problemas de optimizacin. Gracias a las numerosas opciones, la interfaz permite tomar
control sobre los aspectos principales del algoritmo gentico, convirtiendo el toolbox en
una herramienta potente y verstil. La mayor dificultad radica en encontrar la
combinacin de opciones que mejor se adapte al problema especifico, la naturaleza
iterativa y la falta de informacin sobre alguna de las configuraciones pueden hacer que
encontrar un resultado satisfactorio lleve cierto tiempo. Sin embargo gracias a las
herramientas para graficar y la visualizacin de diagnsticos de ejecucin esta tarea se
convierte en un proceso de prueba y error que eventualmente conduce a una resolucin
adecuada del problema.

Facultad de Ingeniera Universidad Nacional de Cuyo 28

You might also like