practice 1 :genetic algorithm and direct search toolbox
DESCRIPTION
Practice 1 of the Genetic Algorithm Course.TRANSCRIPT
Instituto Politécnico Nacional
Escuela Superior de Cómputo.
GENETIC ALGORITHMS
Práctica 1: Genetic Algorithm and Direct Search Toolbox
Integrantes:
Alcántara Carrillo Oscar
Castañeda Chavero Jonatan Ian
Pérez Pérez José Ricardo.
Grupo: 3CM6
Profesor: José Luis Calderón Osorno.
Fecha de Realización: 18 de Febrero del 2014
Práctica 1 – Genetic Algorithms
3CM9 Página 2
Objetivo
Analizar los elementos de la herramienta Algoritmos Genéticos y Búsqueda Directa en la solución de problemas de optimización y búsqueda; mediante la ejecución de programas demostrativos y archivos fuente de la herramienta Genetic Algorithm and Direct Search Toolbox de Matlab.
Marco Teórico
Un algoritmo genético consiste en una función matemática o una rutina de software que toma como entradas a los ejemplares y retorna como salidas cuáles de ellos deben generar descendencia para la nueva generación. Habitualmente la población inicial se escoge generando ristras al azar, pudiendo contener cada gen uno de los posibles valores del alfabeto con probabilidad uniforme. Dos aspectos que resultan cruciales en el comportamiento de los Algoritmos Genéticos son la determinación de una adecuada función de adaptación o función objetivo, así como la codificación utilizada.
Reglas de selección. Selecciona a los individuos, llamados padres, que contribuyen a la población en la siguiente generación.
Reglas de Cruza. Combina dos padres para formar hijos para la siguiente generación.
Regla de Mutación. Aplica cambios aleatorios individuales a los hijos formados por los padres. El Algoritmo Genético difiere de un algoritmo de optimización estándar en dos formas principales:
1. Algoritmo Estándar. Genera un solo punto en cada iteración La secuencia de puntos se aproxima a una solución óptima.
2. Algoritmo Genético. Genera una población de puntos en cada iteración. La población se aproxima a una solución óptima.
Práctica 1 – Genetic Algorithms
3CM9 Página 3
Introducción
El algoritmo genético es una técnica de búsqueda basada en la teoría de la evolución de Darwin, que ha cobrado tremenda popularidad en todo el mundo durante los últimos años. Se presentarán aquí los conceptos básicos que se requieren para abordarla, así como unos sencillos ejemplos que permitan a los lectores comprender cómo aplicarla al problema de su elección.
En los últimos años, la comunidad científica internacional ha mostrado un creciente interés en una nueva técnica de búsqueda basada en la teoría de la evolución y que se conoce como el algoritmo genético. Esta técnica se basa en los mecanismos de selección que utiliza la naturaleza, de acuerdo a los cuales los individuos más aptos de una población son los que sobreviven, al adaptarse más fácilmente a los cambios que se producen en su entorno. Hoy en día se sabe que estos cambios se efectúan en los genes de un individuo (unidad básica de codificación de cada uno de los atributos de un ser vivo), y que sus atributos más deseables (i.e., los que le permiten adaptarse mejor a su entorno) se transmiten a sus descendientes cuando éste se reproduce sexualmente.
Un investigador de la Universidad de Michigan llamado John Holland era consciente de la importancia de la selección natural, y a fines de los 60s desarrolló una técnica que permitió incorporarla a un programa. Su objetivo era lograr que las computadoras aprendieran por sí mismas. A la técnica que inventó Holland se le llamó originalmente "planes reproductivos", pero se hizo popular bajo el nombre "algoritmo genético" tras la publicación de su libro en 1975.
Una definición bastante completa de un algoritmo genético es la propuesta por John Koza:
"Es un algoritmo matemático altamente paralelo que transforma un conjunto de objetos matemáticos individuales con respecto al tiempo usando operaciones modeladas de acuerdo al principio Darwiniano de reproducción y supervivencia del más apto, y tras haberse presentado de forma natural una serie de operaciones genéticas de entre las que destaca la recombinación sexual. Cada uno de estos objetos matemáticos suele ser una cadena de caracteres (letras o números) de longitud fija que se ajusta al modelo de las cadenas de cromosomas, y se les asocia con una cierta función matemática que refleja su aptitud".
Práctica 1 – Genetic Algorithms
3CM9 Página 4
Desarrollo
PARTE 1. Programas Demostrativos de Algoritmos Genéticos.
a) Iniciamos una sesión en MatLab llamando a nuestro programa
demostrativo de una función de aptitud usando un Algoritmo Genético a
partir del comando showdemo gafitness.
Llame al programa demostrativo tecleando:
Práctica 1 – Genetic Algorithms
3CM9 Página 5
Seleccione Run in the Command Window
Avance el programa pulsando NEXT
Práctica 1 – Genetic Algorithms
3CM9 Página 6
1. ¿Qué función está resolviendo mediante algoritmos genéticos?
𝑓(𝑥) = 100 ∗ (𝑥(1)2 − 𝑥(2))2
+ (1 − 𝑥(1))2
2. ¿Cómo se escribe el archivo fuente (código) para solucionar el problema?
3. De acuerdo con el programa demostrativo ¿Dónde se localizó el mínimo?
4. ¿Qué representa el término Fval?
Es el valor de la función “@simple_fitness” evaluada en el punto x
5. ¿Cómo se puede parametrizar la función de aptitud? Escriba el código
necesario.
Práctica 1 – Genetic Algorithms
3CM9 Página 7
6. ¿Cómo se puede vectorizar la función de aptitud?
b) Iniciamos una sesión en Matlab y corremos el comando showdemo
gaoptionsdemo.
1. ¿Qué tipo de función se está resolviendo mediante algoritmos genéticos en el programa demostrativo?
Resuelve el mínimo de una función a partir del uso de algoritmos genéticos.
Práctica 1 – Genetic Algorithms
3CM9 Página 8
2. ¿Cuáles fueron los resultados que se obtuvieron al aplicar el algoritmo genético?
En este ejemplo usamos el comando ga para minimizar nuestra función de aptitud SHUFCN. SHUFCN es una función real evaluada a partir de dos variables.
3. ¿Qué se requiere para poder graficar las funciones a resolver?
La función PLOTOBJECTIVE de nuestra caja de herramientas nos permite imprimir nuestra función, en este caso nuestro ejemplo es sobre el rango [-2 2;-2 2].
plotobjective(@shufcn,[-2 2; -2 2]);
4. ¿Cuál fue el mejor valor de aptitud que se obtuvo?
-186.381
5. ¿En cuántas épocas se logró?
54 épocas.
6. ¿Cómo se puede especificar el tamaño de la población?
Nosotros para poder especificar el tamaño de nuestra población debemos de hacerlo con la siguiente línea de código, en este caso serán 10 individuos.
opts = gaoptimset(opts,'PopulationSize',10);
7. ¿Cuál es el tamaño de la población por omisión en la herramienta Algoritmos Genéticos y Búsqueda Directa?
La población que nos da por default MatLab es de 20 individuos.
8. ¿Cómo se puede generar una población de 3 individuos con dos variables
(X1,X2)?
La población generada inicialmente es generada uniformemente por un generador de números aleatorios en un rango de 0-1. Esto creara una población inicial donde cada uno de los puntos se encuentra entre los rangos de 0-1.
Population = rand(3,2)
Práctica 1 – Genetic Algorithms
3CM9 Página 9
9. ¿A qué se debe que al ejecutar un algoritmo genético se obtienen diferentes resultados para cada corrida?
Por qué los primeros valores que evalúa son aleatorios dentro de los valores de optimización. Al hacer la primera corrida toma los individuos de la población que presenten mejor aptitud los toma y los empieza a evaluar para obtener la mejor función evaluada y en cada corrida hace lo mismo hasta obtener el mejor valor evaluado a partir de la función de aptitud. 10. ¿Cuál es el valor del número máximo de generaciones por omisión en la
herramienta Algoritmos Genéticos y Búsqueda Directa? 100 Generaciones. Por ejemplos si queremos ahora 150 generaciones introducimos el siguiente
script:
opts = gaoptimset(opts,'Generations',150,'StallGenLimit', 100);
11. ¿Cómo se puede efectuar la selección de operadores en la herramienta? Como se utilzamos puntos en nuestro población de manera aleatoria podemos seleccionar los operadores que gustemos con el comando: opts = gaoptimset('SelectionFcn',@selectiontournament, ... 'FitnessScalingFcn',@fitscalingprop);
PARTE 2. Editor de MatLab.
Escribimos el siguiente código fuente.
clc; clear,
%Calcular el mínimo global de la función Ratsrigin's aplicando un AG
%Rastrigin's function: Ras(x)=20+x1^2+x2^2-10(cos2(pi)x1+cos2(pi)x2)
[x fval reason] = ga(@rastriginsfcn, 2)
fval: Valor final de la función de aptitud.
ga : Usaremos la función de algoritmos genéticos.
@rastriginsfcn: llama la function de aptitude Ratrigin
2: Es el número de variables a usar.
Práctica 1 – Genetic Algorithms
3CM9 Página 11
4ta Corrida.
5ta Corrida.
Después de analizar las 5 corridas efectuadas, se deduce que la mejor de las corridas
fue la primera ya que el valor de su función de aptitud (fval) evaluado en el punto X fue
el menor, es decir, el mejor.
Práctica 1 – Genetic Algorithms
3CM9 Página 12
PARTE 3: Interfaz gráfica “Optimization tool”
a) Llame a la interfaz gráfica de algoritmos genéticos “Optimization Tool” tecleando
gatool en la línea de comandos de Matlab:
b) Complete los siguientes datos en las ventanas de Optimization Tool: en Fitness
function teclee @rastriginsfc; en Number of variables teclee 2; seleccione Best
fitness en el menú Plots.
Práctica 1 – Genetic Algorithms
3CM9 Página 13
c) Ejecute el programa oprimiendo Start en el menú de Run solvers and view
results y revise los resultados obtenidos.
d) Efectúe cinco corridas y reporte el mejor resultado obtenido, no olvide oprimir
Clear results después de efectuar la corrida.
a. Corrida 1
Práctica 1 – Genetic Algorithms
3CM9 Página 15
d. Corrida 4
e. Corrida 5
Por lo tanto, el mejor resultado obtenido está reflejado en la quinta corrida.
Práctica 1 – Genetic Algorithms
3CM9 Página 16
- ¿Qué tipos de métodos de selección ofrece “Optimization Tool”?
o Stochastic uniform
o Remainder
o Uniform
o Roulette
o Tournament
o Custon
- ¿Qué tipos de métodos de cruza ofrece la interfaz?
o Scattered
o Single Point
o Two Point
o Intermediate
o Heuristic
o Arithmetic
o Custon
- ¿Qué tipos de criterios de detención ofrece “Optimization Tool”?
o Generations
o Time limit
o Fitness limit
o Stall generations
o Stall time limit
o Function tolerance
o Nonlinear constraint tolerance
- Cuestionario
1. ¿Cuáles son las funciones en Genetic Algorithms and Direct Search Tool
Box que nos permiten realizar las operaciones principales de un algoritmo
genético? Investigue y explique.
R.
Genetic Algorithm
Función Descripción
ga Encuentra el mínimo de una función usando el algoritmo genético
gaoptimget Obtiene valores de las opciones de estructura de un algoritmo genético
gaoptimset Crea opciones de estructura de algoritmos genéticos
gatool Abre la herramienta con interfaz gráfica de algoritmos genéticos
Práctica 1 – Genetic Algorithms
3CM9 Página 17
Direct Search Toolbox
Función Descripción
patternsearch Encuentra el mínimo de una función usando búsqueda de patrones
psoptimget Obtiene valores de estructura de opciones de búsqueda de patrones
psoptimset Crea una estructura de opciones de búsqueda de patrones
psearchtool Abre la herramienta de búsqueda de patrones (Pattern Search Tool)
2. ¿Qué tipo de problemas se pueden resolver con Algoritmos Genéticos?
R. Casi todo tipo de problemas que se pueden resolver con principios
matemáticos, pero son más usados para la generación de soluciones a
planteamientos o situaciones de la vida real que no han podido ser resueltos por
parte de las matemáticas y que por tanto no tienen un fundamento matemático.
3. Explique dos de los principales métodos de selección, cruza y mutación
que emplean los Algoritmos Genéticos.
R.
- Métodos de selección
o Selección proporcional: Selecciona a los individuos basado en su valor
de aptitud relativo a la aptitud de los otros individuos en la población.
Selección de la ruleta: En la selección de la Ruleta cada individuo
de la población se asigna una porción de espacio en la ruleta
proporcional al valor de la aptitud; esto significa que a mayor
aptitud mayor probabilidad de ser elegido al girar la ruleta.
Selección de rango: Los individuos de la población son
clasificados (Ranking) de acuerdo a la aptitud; el valor esperado de
cada individuo depende de su rango en vez de su valor absoluto de
aptitud. No es necesario escalar la aptitud en este caso, puesto
que las diferencias absolutas en la aptitud son atenuadas
o Selección ordinal: Selecciona a los individuos no por su aptitud en
bruto, sino más bien por el rango que ocupan en la población.
- Métodos de cruza
o Cruza de K puntos: En la cruza de un punto, el sitio de cruza es
seleccionado aleatoriamente sobre la longitud de la cadena (cromosoma),
y los alelos en un lado del sitio son intercambiados entre los individuos.
o Cruza basada en orden uniforme: En la cruza basada en Orden
Uniforme, dos padres (P1 y P2) son seleccionados aleatoriamente y se
genera una plantilla binaria, algunos de los genes para el hijo C1 se
Práctica 1 – Genetic Algorithms
3CM9 Página 18
llenan tomando los genes del padre P1 donde existe un”1” en la plantilla.
En este punto se tiene C1 parcialmente lleno, pero este tiene algunos
espacios. Los genes del padre P1 en la posición correspondiente a los
ceros en la plantilla son tomados y ordenados en el mismo orden como
aparecen en el padre P2 la lista ordenada se usa para llenar los espacios
en C1. El hijo en C2 se creará usando un proceso similar.
- Métodos de mutación
o Flipping: Gerena un cambio de 0 a 1 y viceversa basado en la
generación de una mutación de cromosoma.
o Swap Mutation: Se aplica a codificaciones basadas en el orden
(Permutaciones). Consiste en elegir 2 coordenadas al azar e intercambiar
sus valores.
4. ¿Qué herramientas computacionales nos permiten simular Algoritmos
Genéticos? Investigue y explique.
R.
Scilab
Ésta es una herramienta que nos permite simular y usar los Algoritmos Genéticos y
algunas de sus funciones son las siguientes:
coding_ga_binary — una función que interpreta la conversión entre binario y representaciones continuas.
coding_ga_identity — una función de conversión "no-operation". crossover_ga_binary — una función de cruza para código binario. crossover_ga_default — una función de cruza para valores de cualquier tipo. init_ga_default — una función para inicializar una población. mutation_ga_binary — una función que realiza una mutación binaria. mutation_ga_default — una función que realiza la mutación de valores
continuos.
Práctica 1 – Genetic Algorithms
3CM9 Página 19
CONCLUSIONES
Pérez Pérez José Ricardo
En esta primera práctica de Algoritmos Genéticos conocimos el toolbox para el análisis
de Algoritmos Genéticos en MatLab, conocimos cómo obtener una función de aptitud,
así como las variables que se pueden utilizar en ésta; la manipulación de individuos de
nuestra población y las generaciones, pudimos observar cómo los factores pueden
manipularse así como el tamaño de población y generaciones según nuestro problema
no lo pida. MatLab es una herramienta muy agradable y sus herramientas nos ofrecen
más facilidad en las operaciones de Algoritmos Genéticos.
Castañeda Chavero Jonatan Ian
La librería de Algoritmos Genéticos de MatLab es una muy buena herramienta para la
prueba de algoritmos. En esta práctica pudimos ver que MatLab puede configurarse
para que haga sus propias selecciones y llevar a cabo las cruzas durante un cierto
número de generaciones para obtener los mejores resultados en la función de aptitud.
En ésta práctica entendimos cómo es que funcionan los Algoritmos Genéticos en
MatLab incluso viéndolo de una forma gráfica para ver como el algoritmo en cada
generación que generaba por sí mismo iban mejorando los valores de aptitud hasta
obtener un punto con el más óptimo.
Alcántara Carrillo Oscar
Con la presente práctica aprendimos a utilizar el entorno de MatLab para poder
desarrollar los algoritmos genéticos que nos den paso a la solución de problemas por
medio de esta rama. MatLab ofrece una interfaz en la que ya están preprogramadas
algunas funciones de aptitud y algunas otras fases que se requieren para la
implementación de los algoritmos genéticos volviéndose éste la mejor opción para
poder programar y probar nuestros algoritmos genéticos de una manera fácil, óptima y
sencilla en comparación con cualquier otro lenguaje de programación. Aprendimos a
visualizar el comportamiento de algunos algoritmos de prueba para poder determinar
qué generación era la más óptima al utilizar corridas proporcionadas por el mismo
MatLab, lo que nos facilitará el trabajo a futuro para los siguientes algoritmos realizados
por nosotros.
Práctica 1 – Genetic Algorithms
3CM9 Página 20
Bibliografía:
http://disi.unal.edu.co/~lctorress/RedNeu/LiRna004.pdf
http://www.lcc.uma.es/~jmortiz/archivos/Tema4.pdf