Computación evolutiva

41
Dr. Hugo A. Banda Gamboa CORDICYT Octubre, 2015

Transcript of Computación evolutiva

Page 1: Computación evolutiva

Dr. Hugo A. Banda Gamboa

CORDICYTOctubre, 2015

Page 2: Computación evolutiva

CONTENIDOI. Fundamentos de la Computación Evolutiva

II. Algoritmos Genéticos

III. Aplicaciones de Algoritmos Genéticos

IV. Programación Evolutiva

V. Estrategias de Evolución

VI. Programación Genética

VII. Conclusión

© Dr. Hugo A. Banda Gamboa - 2015 2

Page 3: Computación evolutiva

FUNDAMENTOS DE LA COMPUTACIÓN EVOLUTIVA

© Dr. Hugo A. Banda Gamboa - 2015 3

Page 4: Computación evolutiva

Fundamentos de la Computación Evolutiva

La unidad fundamental de información en los seres vivos es el gen.

El gen es parte de una estructura denominada cromosoma que determina o afecta un carácter simple o fenotipo(propiedad visible).

Los organismos vivos pueden ser visualizados como un dual de su genotipo (la codificación genética) y de su fenotipo.

© Dr. Hugo A. Banda Gamboa - 2015 4

Page 5: Computación evolutiva

Evolución de una Población

© Dr. Hugo A. Banda Gamboa - 2015 5

P

G

E

f4

f3

f2

f1f’1

p1p2

p’1

g1 g2g’1

)(.GG:

)(G,P:

)(P,P:

)(P,GE:

4

3

2

1

iónRecombinacyMutaciónf

GenotípicaciaSupervivenf

Selecciónf

Epigénesisf

Espacio de Estados

Fenotípicos

Espacio de Estados

Genotípicos

Page 6: Computación evolutiva

Computación EvolutivaLa computación evolutiva comprende

aplicaciones basadas en los mecanismos de la evolución natural tales como la genética biológica y la selección natural.

El campo de la computación evolutiva, en general incluye cuatro paradigmas:

Algoritmos genéticos

Programación evolutiva

Estrategias de evolución

Programación genética.

© Dr. Hugo A. Banda Gamboa - 2015 6

Page 7: Computación evolutiva

Computación Evolutiva Los paradigmas de la computación evolutiva difieren

de los métodos tradicionales, en cuatro aspectos fundamentales:

Trabajan con un código del conjunto de parámetros. Este código es una cadena de caracteres de valores binarios o variables de valor real.

Realizan la búsqueda de la potencial solución en una población de puntos, no en un sólo punto.

Utilizan la información de una función objetivo, no derivadas u otro conocimiento auxiliar.

Usan reglas probabilísticas de transición, en lugar de reglas determinísticas.

© Dr. Hugo A. Banda Gamboa - 2015 7

Page 8: Computación evolutiva

ALGORITMOS GENÉTICOS

© Dr. Hugo A. Banda Gamboa - 2015 8

Page 9: Computación evolutiva

Algoritmos Genéticos:Fundamentos

Los Algoritmos Genéticos son métodos adaptativos que se derivan de la simulación de los procesos genéticos, que comprenden los mecanismos naturales de cruce, mutación y la supervivencia del más apto (selección)

Los Algoritmos Genéticos se utilizan para resolver problemas de búsqueda y optimización.

© Dr. Hugo A. Banda Gamboa - 2015 9

Page 10: Computación evolutiva

Algoritmos Genéticos:Características (1)Los Algoritmos Genéticos trabajan en el

espacio del genotipo del código de la información:

Se selecciona una población de individuos, cada uno de los cuales representa una solución factible a un problema dado.

Cada individuo es codificado como una cadena de caracteres binarios (cromosomas), y se le asigna un valor de aptitudrelacionado con la bondad de la soluciónque representa.

© Dr. Hugo A. Banda Gamboa - 2015 10

Page 11: Computación evolutiva

Algoritmos Genéticos:Características (2)

Cuanto mayor sea la aptitud de un

individuo, mayor será la probabilidad de

que el mismo sea seleccionado para

reproducirse, intercambiando

aleatoriamente su material genético con

otro, seleccionado de igual forma.

Este cruce producirá nuevos individuos,

descendientes de los anteriores, los cuales

pueden tener características mejores que

las de sus ancestros. © Dr. Hugo A. Banda Gamboa - 2015 11

Page 12: Computación evolutiva

Algoritmos Genéticos:Características (3)

Cuanto menor sea la aptitud de un individuo, menor será la probabilidad de que sea seleccionado para la reproducción, y por tanto de que su material genético se propague en sucesivas generaciones.

Ocasionalmente, una variante nueva es probada, cambiando aleatoriamente un gen de algún cromosoma descendiente, como una medida de posible mejora (mutación).

© Dr. Hugo A. Banda Gamboa - 2015 12

Page 13: Computación evolutiva

Algoritmo Genético Simple en Pseudocódigo

© Dr. Hugo A. Banda Gamboa - 2015 13

INICIO /* Algoritmo Genético Simple */Generar una población inicial.Computar la función de aptitud de cada individuo.MIENTRAS NO Terminado HACERINICIO /* Producir nueva generación */

PARA Tamaño Población/2 HACERINICIO /* Ciclo Reproductivo */

Seleccionar 2 individuos de la generación anterior,con probabilidad proporcional a la función de aptitudde cada individuo.Cruzar, con cierta probabilidad, los 2 individuos

obteniendo 2 descendientes.Mutar los 2 descendientes, con cierta probabilidad.Calcular la función de aptitud de los 2 descendientes.Insertar los dos descendientes en la nueva generación.

FIN /* Ciclo Reproductivo */SI La población ha convergido ENTONCES

Terminado = VERDADEROFIN /* Producir nueva generación */

FIN /* Algoritmo Genético Simple */

Page 14: Computación evolutiva

CromosomaCódigo Genético de un Insecto

© Dr. Hugo A. Banda Gamboa - 2015 14

Antenas Cabeza Alas Cuerpo Patas TamañoColor

Cuerpo

Color

Cabeza

Fuente: K F Man, K S Tang & S Kwong. Genetic Algorithms, Springer-Verlag, London, 2001

Page 15: Computación evolutiva

Genes del InsectoCódigos y Formas: Antenas, Cabeza y Alas

© Dr. Hugo A. Banda Gamboa - 2015 15

Page 16: Computación evolutiva

Genes del InsectoCódigos, Formas y Colores: Cuerpo

© Dr. Hugo A. Banda Gamboa - 2015 16

Page 17: Computación evolutiva

Genes del InsectoCódigos, Formas y Colores: Otras Partes

© Dr. Hugo A. Banda Gamboa - 2015 17

Page 18: Computación evolutiva

Algoritmos Genéticos: Selección

© Dr. Hugo A. Banda Gamboa - 2015 18

Page 19: Computación evolutiva

Algoritmos Genéticos: Cruce y Mutación

© Dr. Hugo A. Banda Gamboa - 2015 19

Page 20: Computación evolutiva

© Dr. Hugo A. Banda Gamboa - 2015 20

Page 21: Computación evolutiva

Ejemplo 1: Optimización de Utilidades

Una empresa desarrolla y comercializa 2 tipos de sistemas de control. Un sistema para regular la velocidad de máquinas de inducción (Ci) que se vende a $1000,00 y un sistema para regular la velocidad de máquinas DC (Cd) que se vende en $800.

Para la instalación y afinamiento de los controladores, emplea 3 técnicos: el primero cobra $10/hora y utiliza 6 horas para instalar el sistema de regulación de máquinas de DC y 10 horas para el sistema de regulación de máquinas de inducción. El segundo, cobra $20/hora y emplea 4 horas para el afinamiento del sistema de control de máquinas DC y 8 horas para el afinamiento del sistema de control para máquinas de inducción. El tercer técnico, cobra $15/hora y emplea 8 horas para las pruebas del sistema de control para máquinas DC y 6 horas para las pruebas del sistema de control para máquinas de inducción.

Si se conoce que la disponibilidad de tiempo del técnico 1 (T1) en cada mes es de 140 horas, 100 horas por mes dispone el técnico 2 (T2); y, 120 horas por mes dispone el técnico 3 (T3), determinar cuántos sistemas de control de cada tipo debe la empresa comercializar mensualmente para obtener la máxima utilidad.

© Dr. Hugo A. Banda Gamboa - 2015 21

Page 22: Computación evolutiva

Optimización de Utilidades: Solución Solver

© Dr. Hugo A. Banda Gamboa - 2015 22

Page 23: Computación evolutiva

Optimización de Utilidades: Script MATLABOptimization Toolbox/GUI/optimtool/Solver: ga - Genetic Algorithm)

1. % Función de aptitud para optimizar 2. % utilidades 3. function z=foptCiCd(k) 4. % Unidades Vendidas: Ci, Cd. 5. Ci=round(k(1)); Cd=round(k(2)); 6. % Precio de venta de cada sistema 7. PVCd=800; 8. PVCi=1000; 9. % Horas mes disponibles 10. HmesT1=140; 11. HmesT2=100; 12. HmesT3=120; 13. % Valor por hora de trabajo 14. VhT1=10; 15. VhT2=20; 16. VhT3=15; 17. % Horas necesarias de cada recurso para 18. % los sistemas Ci y Cd 19. CiT1=10; 20. CiT2=8; 21. CiT3=6;

22. CdT1=6; 23. CdT2=4; 24. CdT3=8; 25. % Total horas por mes por cada recurso 26. ThT1=Ci*CiT1+Cd*CdT1; 27. ThT2=Ci*CiT2+Cd*CdT2; 28. ThT3=Ci*CiT3+Cd*CdT3; 29. % Restricción de disponibilidad de horas 30. % mensuales 31. if ThT1 <= HmesT1 && ThT2 <= HmesT2

&& ThT3 <= HmesT3 32. F = 0; 33. else34. F=100000; 35. end36. % Cálculo del negativo de la utilidad ya 37. % que GA siempre busca el valor mínimo 38. Ingresos=Ci*PVCi+Cd*PVCd; 39. Egresos=ThT1*VhT1+ThT2*VhT2+ThT3*

VhT3; 40. z=Egresos-Ingresos+F;

© Dr. Hugo A. Banda Gamboa - 2015 23

Page 24: Computación evolutiva

Optimización de Utilidades: Solución MATLABOptimization Toolbox/GUI/optimtool/Solver: ga - Genetic Algorithm)

© Dr. Hugo A. Banda Gamboa - 2015 24

Page 25: Computación evolutiva

Ejemplo 2: Controlador PID Óptimo

Diseñar un controlador PID que permita una

respuesta dinámica óptima de la planta dada:

© Dr. Hugo A. Banda Gamboa - 2015 25

Page 26: Computación evolutiva

Controlador PID Óptimo: Solución MATLABOptimization Toolbox/GUI/optimtool/Solver: ga - Genetic Algorithm)

1. % Función de aptitud para diseñar controlador PID2. % para comportamiento óptimo para Planta:3. % 6.284. % G(s)=------------------ ; H(s) = 15. % s^2 + 2s + 0.966. % Función de transferencia para el Controlador PID7. % kd*s^2+kp*s+ki8. % Gc(s)=---------------------9. % s10. function z=foptPID(k)11. kd=k(1); kp=k(2); ki=k(3);12. % Se crean las funciones de transferencia con la13. % función tf()14. G=tf(6.28,[1 2 0.96]); % Planta15. Gc=tf([kd kp ki],[1 0]); % Controlador PID16. Gtotal=G*Gc;17. % Se crea el Modelo de lazo cerrado "sys"18. % usando la función feedback()19. sys=feedback(Gtotal,1);20. % Respuesta temporal del Modelo "sys"21. [y,t]=step(sys);22. [y_tam,x]=size(y);23. [t_tam,x]=size(t);24. % Cálculo del Error de Posición25. Valor_Estado_Estable=y(t_tam);26. Ep=abs(1-Valor_Estado_Estable)*100;27. %Cálculo de máximo sobreimpulso28. max=y(1);29. for i=2:t_tam30. if y(i)>max31. max=y(i);32. else33. end34. end

35. Over=abs((max-Valor_Estado_Estable)*100/ Valor_Estado_Estable);

36. %Cálculo del tiempo de establecimiento entre37. % +/- 2% del valor de estado estable38. lim_sup=1.02*Valor_Estado_Estable;39. lim_inf=0.98*Valor_Estado_Estable;40. ts=0;41. for i=1:t_tam42. if abs(y(i)-lim_sup)<(0.002*lim_sup)43. ts=t(i);44. elseif abs(y(i)-lim_inf)<(0.002*lim_sup)45. ts=t(i);46. else47. end48. end49. STime=100*ts/t(t_tam);50. % Criterio de Estabilidad del Sistema de Lazo Cerrado51. % Si existen polos en el semiplano derecho,52. % el sistema es inestable53. [Wn,Z,P]=damp(sys);54. if real(P(1,1)) >= 0 || real(P(2,1)) >= 0 || real(P(3,1)) >=

055. P1=1000000;56. else57. P1=0;58. end59. % Asignación de coeficientes de ponderación para60. % los parámetros normalizados: Ep, Over y STime61. w1=1;62. w2=2;63. w3=3;64. Sum=w1+w2+w3;65. % Función final para la optimización66. z=(w1*Ep+w2*Over+w3*STime)/Sum+P1;

© Dr. Hugo A. Banda Gamboa - 2015 26

Page 27: Computación evolutiva

Función para Comprobar Respuesta de la Planta con Controlador PID1. % Función para comprobar la Planta compensada por el2. % Controlador PID3. function [t,y1,y2]=pruebaPID(kd, kp, ki)4. % Función de Transferencia de la Planta5. G=tf(6.28,[1 2 0.96]);6. % Se crea el Modelo de la Planta a Lazo Abierto7. OpenSys=feedback(G,1);8. % Período de simulación9. t=0:0.05:10;10. % Respuesta Transitoria de la Planta a Lazo Abierto11. [y1,t]=step(OpenSys,t);12. % Función de Transferencia del Controlador PID13. Gc=tf([kd kp ki],[1 0]);14. % Función de transferencia de Planta Compensada15. Gtotal=G*Gc;16. % Se crea el Modelo de la Planta a Lazo Cerrado17. CloseSys=feedback(Gtotal,1);18. % Respuesta transitoria del Modelo de Planta a Lazo Cerrado19. [y2,t]=step(CloseSys,t);20. % Plot de y1 y y2 (Respuesta dinámica de la Planta: Lazo Abierto y con

PID)21. plotyy(t,y1,t,y2,'plot');© Dr. Hugo A. Banda Gamboa - 2015 27

Page 28: Computación evolutiva

Controlador PID Óptimo: Solución MATLAB(Optimization Toolbox/GUI/optimtool/Solver: ga - Genetic Algorithm)

© Dr. Hugo A. Banda Gamboa - 2015 28

Page 29: Computación evolutiva

PROGRAMACIÓN EVOLUTIVA

© Dr. Hugo A. Banda Gamboa - 2015 29

Page 30: Computación evolutiva

FundamentosLa programación evolutiva se deriva de la

simulación del comportamiento adaptativo propio de un proceso evolutivo.

Se caracteriza por su énfasis en el desarrollo de modelos de comportamiento.

Trabaja en el espacio del fenotipo del comportamiento observable (evolución fenotípica)

© Dr. Hugo A. Banda Gamboa - 2015 30

Page 31: Computación evolutiva

Procedimiento en Pseudocódigo

© Dr. Hugo A. Banda Gamboa - 2015 31

INICIO /* Programación Evolutiva: Procedimiento */Generar una población inicial.MIENTRAS NO Terminado HACERINICIO /* Buscar Solución */

Exponer la población a su entorno.Calcular la aptitud de cada individuo.Aleatoriamente mutar cada miembro de la población

y generar descendientes.Calcular la aptitud de los descendientes.Seleccionar los miembros más aptos para la nueva generación.SI el objetivo se ha logrado ENTONCES

Terminado = VERDADEROFIN /* Buscar Solución */

FIN /* Programación Evolutiva: Procedimiento */

Page 32: Computación evolutiva

Aplicación La programación evolutiva se utiliza

usualmente para resolver problemas de predicción. Por ejemplo, en máquinas de estados finitos:

El entorno es descrito como una secuencia de símbolos tomados de un alfabeto finito.

Un algoritmo evolutivo opera sobre la secuencia de símbolos observados, de tal forma que produce un símbolo de salida que maximiza el resultado del algoritmo, tomando en cuenta el siguiente símbolo que aparecerá y una función de costo bien definida.

© Dr. Hugo A. Banda Gamboa - 2015 32

Page 33: Computación evolutiva

ESTRATEGIAS DE EVOLUCIÓN

© Dr. Hugo A. Banda Gamboa - 2015 33

Page 34: Computación evolutiva

Fundamentos (1)

Las estrategias de evolución están basadas en el concepto de meta evolución y, al igual que la programación evolutiva, enfatizan el aspecto fenotípico del proceso evolutivo.

A pesar de utilizar las operaciones de mutación y cruce(recombinación), la perspectivas de ellas son diferentes a las utilizadas por los algoritmos genéticos o la programación evolutiva:

Operaciones de mutación o recombinación que caen fuera de una ventana de evolución predefinida por la función de optimización, no son de utilidad.

El ajuste dinámico del tamaño de la mutación a una ventana de evolución también dinámica, favorece la meta evolución.

© Dr. Hugo A. Banda Gamboa - 2015 34

Page 35: Computación evolutiva

Fundamentos (2) A diferencia de los algoritmos genéticos, las estrategias de

evolución manipulan los valores de las variables, durante la recombinación (cruce):

Forma un descendiente utilizando los datos de dos padres seleccionados aleatoriamente.

El valor de la variable del descendiente, es igual al valor intermedio de los valores de sus padres.

La estrategias de evolución operan con una mayor cantidad de descendientes que los otros paradigmas de computación evolutiva:

El número de descendientes (N) es mayor que el número de padres (M), en una relación típica N/M igual a 7.

© Dr. Hugo A. Banda Gamboa - 2015 35

Page 36: Computación evolutiva

Procedimiento

© Dr. Hugo A. Banda Gamboa - 2015 36

INICIO /* Estrategias de Evolución: Procedimiento */Generar una población inicial.MIENTRAS NO Terminado HACERINICIO /* Buscar Solución */

Realizar la recombinación de pares de los M padres para generar N descendientes (N/M = 7).

Mutar a todos los descendientes.Calcular la aptitud de los N descendientes.De entre los N descendientes, seleccionar los M

miembros más aptos para la nueva generación.SI el objetivo se ha logrado ENTONCES

Terminado = VERDADEROFIN /* Buscar Solución */

FIN /* Estrategias de Evolución : Procedimiento */

Page 37: Computación evolutiva

PROGRAMACIÓN GENÉTICA

© Dr. Hugo A. Banda Gamboa - 2015 37

Page 38: Computación evolutiva

Fundamentos (1) La programación genética está diseñada para

evolucionar programas de computadora, genéticamente.

A diferencia de las tres implementaciones anteriores, que generalmente emplean cromosomas en forma de cadena de caracteres como miembros individuales de la población, la programación genética utiliza árbolespara representar a los programas sujetos a evolución:

Las funciones definidas para el problema aparecen en los nodos (conjunto interno).

Las variables de estado y las constantes están localizadas en las hojas del árbol (conjunto terminal).

© Dr. Hugo A. Banda Gamboa - 2015 38

Page 39: Computación evolutiva

Fundamentos (2)Previo a la ejecución de un proceso de

programación genética, se deben cumplir los siguientes pasos: Especificar el conjunto de variables de

estado y constantes (conjunto terminal).

Especificar el conjunto de funciones.

Especificar la medida de aptitud.

Seleccionar los parámetros del sistema de control.

Especificar las condiciones de finalización del procedimiento.

© Dr. Hugo A. Banda Gamboa - 2015 39

Page 40: Computación evolutiva

Procedimiento en Pseudocódigo

© Dr. Hugo A. Banda Gamboa - 2015 40

INICIO /* Programación Genética: Procedimiento */Inicializar la población de programas de computadora.MIENTRAS NO Terminado HACERINICIO /* Buscar Solución */

Determinar la aptitud de cada programa individual. Aplicar la reproducción de acuerdo con la aptitud y la

probabilidad de reproducción.Realizar el cruce de las subexpresiones.SI el objetivo se ha logrado ENTONCES

Terminado = VERDADEROFIN /* Buscar Solución */

FIN /* Programación Genética : Procedimiento */

Page 41: Computación evolutiva

Conclusión

Lo único constante en el universo es el

cambio.

© Dr. Hugo A. Banda Gamboa - 2015 41