Professional Documents
Culture Documents
utilizando MatLab
Inteligencia Artificial I
Aligia, Adrian
Legajo: S9756
Inteligencia Artificial I - Algoritmos genticos con Matlab
ndice
1 - Introduccin 3
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
5 - Conclusin 28
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.
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);
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:
Constraints (restricciones): Son restricciones a los valores que pueden tomar las variables
de la funcin, hay cinco tipos bsicos:
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.
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.
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 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.
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:
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.
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.
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.
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).
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:
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,}.
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:
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.
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.
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:
Estas opciones determinan cuando se detiene el algoritmo gentico. Las opciones son:
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.
Best fitness (Mejor aptitud): grafica los mejores valores de la funcin idoneidad con
respecto a la cantidad de iteraciones en cada generacin.
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.
Scores (puntajes): genera una grafica con los puntajes de los individuos en cada
generacin.
Final: Solamente muestra la razn por la que el algoritmo se detuvo al final del programa.
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.
= 20 + 21 + 22 10(cos 21 + cos 22 )
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.
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.
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.
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).
Conclusin