You are on page 1of 20

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

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.

3CM9 Página 2
Práctica 1 – Genetic Algorithms

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".

3CM9 Página 3
Práctica 1 – Genetic Algorithms

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:

3CM9 Página 4
Práctica 1 – Genetic Algorithms

Seleccione Run in the Command Window

Avance el programa pulsando NEXT

3CM9 Página 5
Práctica 1 – Genetic Algorithms

1. ¿Qué función está resolviendo mediante algoritmos genéticos?


2 2
𝑓(𝑥) = 100 ∗ (𝑥(1)2 − 𝑥(2)) + (1 − 𝑥(1))

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.

3CM9 Página 6
Práctica 1 – Genetic Algorithms

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.

3CM9 Página 7
Práctica 1 – Genetic Algorithms

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)

3CM9 Página 8
Práctica 1 – Genetic Algorithms

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.

3CM9 Página 9
Práctica 1 – Genetic Algorithms

1ra Corrida.

2da Corrida.

3ra Corrida.

3CM9 Página 10
Práctica 1 – Genetic Algorithms

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.

3CM9 Página 11
Práctica 1 – Genetic Algorithms

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.

3CM9 Página 12
Práctica 1 – Genetic Algorithms

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

3CM9 Página 13
Práctica 1 – Genetic Algorithms

b. Corrida 2

c. Corrida 3

3CM9 Página 14
Práctica 1 – Genetic Algorithms

d. Corrida 4

e. Corrida 5

Por lo tanto, el mejor resultado obtenido está reflejado en la quinta corrida.

3CM9 Página 15
Práctica 1 – Genetic Algorithms

- ¿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

3CM9 Página 16
Práctica 1 – Genetic Algorithms

 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

3CM9 Página 17
Práctica 1 – Genetic Algorithms

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.

3CM9 Página 18
Práctica 1 – Genetic Algorithms

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.

3CM9 Página 19
Práctica 1 – Genetic Algorithms

Bibliografía:

http://disi.unal.edu.co/~lctorress/RedNeu/LiRna004.pdf

http://www.lcc.uma.es/~jmortiz/archivos/Tema4.pdf

3CM9 Página 20

You might also like