Programaci n gen tica pg
This presentation is the property of its rightful owner.
Sponsored Links
1 / 72

Programación Genética (PG) PowerPoint PPT Presentation


  • 57 Views
  • Uploaded on
  • Presentation posted in: General

Programación Genética (PG). Mario Hernández. ¿PG?. La PG suministra una metodología para crear automáticamente programas a partir de una definición de los mismos a alto nivel.

Download Presentation

Programación Genética (PG)

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Programaci n gen tica pg

Programación Genética(PG)

Mario Hernández


Programaci n gen tica pg

¿PG?

  • La PG suministra una metodología para crear automáticamente programas a partir de una definición de los mismos a alto nivel.

  • PG consigue el objetivo de Programación Automática (también denominada Síntesis de Programas o Inducción de Programas) reproduciendo genéticamente una población de programas utilizando los principios darwinianos de la selección natural y de las operaciones inspiradas biológicamente.


Programaci n gen tica pg

PG

  • Rama de la Computación Evolutiva (CE)

  • Diferencia PG - AG:

    ¿qué solución se busca?

    O, de otra manera: cuál es la representación que se utiliza para la solución


Programaci n gen tica pg

  • Los AG crean cadenas de cromosomas que codifican (representan) la solución buscada

  • La PG crea Programas (código) 

  • Es decir: en PG se transforman Programas que buscan la Solución, en vez de la Representación de la solución


Algunos campos de aplicaci n

Algunos Campos de Aplicación

  • Síntesis automática de circuitos eléctricos analógicos

  • Síntesis automática de controladores

  • Problemas en biología molecular computacional, incluyendo rutas metabólicas y redes genéticas.

  • Autómatas Celulares

  • Sistemas Multiagente

  • Investigación Operativa

  • Areas de Diseño

  • Uso de PG como una “Máquina Automática de Invenciones” para crear nuevas invenciones útiles patentables


Algoritmo evolutivo general

Algoritmo Evolutivo General

  • Crear aleatoriamente una población de soluciones

  • Hacer iterativamente, hasta alcanzar una solución suficientemente buena:

    • Evaluar cada solución, dándole una puntuación

    • Escoger las mejores y reproducirlas; mutarlas o cruzarlas, con otras nuevas soluciones para la próxima generación


Algoritmo general de pg

Algoritmo General de PG

  • Generarar una población inicial de programas

  • Ejecutar cada programa de la población y asignarle un valor de aptitud (fitness) de acuerdo a lo bien que resuelve el problema.

  • Crear una nueva población de programas aplicando las siguientes operaciones:

    i) Copiar los mejores programas existentes ii) Crear nuevos programas por mutacióniii) Crear nuevos programas por cruce (crossover)

    El mejor programa aparecido en cualquier generación, es decir el que genera la mejor de las soluciones con las restricciones que le son impuestas (pe complejidad, etc…), resulta designado como el resultado del procedimiento de Selección Genética por PG.


La idea lun tica de evolucionar programas

La Idea ¿Lunática? de Evolucionar Programas

  • Ejemplo del primer paso: Programa generado aleatoriamente:


Argumentos contra la evoluci n de programas

Argumentos contra la evolución de programas

  • Los programas creados aleatoriamente tienen una posibilidad infinitesimal de compilar, y menos que hagan lo que se pretende

  • La ejecución de un programa creado aleatoriamente darán lugar, si compila, y muy probablemente a errores de salida de espacios reservados para matrices, data-casting, core-dumps, divisiones por cero, etc... lo que conllevará a suspensión de ejecución

  • Mutar y mezclar segmentos de programas creados aleatoriamente resulta en un sinsentido equivalente a crearlos aleatoriamente

    ¿Cómo se resuelve esto en la PG?


La representaci n en pg

La Representación en PG

El truco consiste en escoger una representación subyacente para los programas tal que resulte factible la creación aleatoria, la mutación y el cruce de programas


La representaci n en pg1

La Representación en PG

+

*

4

5

-2

  • Representación basada en árboles

(+ (* 5 –2) 4)

La representación empleada en PG se basa en árboles, que presentan una correspondencia directa con la notación prefija o polaca


Programaci n gen tica pg

La Representación en PG (II)

  • Una familia de lenguajes de programación que se adapta a esta representación son la familia Lisp (Lisp-like), como p.e. Lisp o Scheme


La representaci n en pg iii

La Representación en PG (III)

Notación SufijaNotación Prefija

f(x,y)(f x y)

3*4(* 3 4)

Los programas complejos se expresan utilizando funciones compuestas, pe:

(+ 2 (IF (> X 3) 4 7))


Programaci n gen tica pg

(+ 2 (IF (> X 3) 4 7))

La estructura consta de funciones y terminales

+

2

IF

>

4

7

X

3


Utilidad de la representaci n en rbol

Utilidad de la representación en árbol

  • La estructura en árbol resulta útil para definir los efectos de los operadores sobre los programas

  • Los operadores presentan una estructura muy “elegante” en este formato

  • También resulta útil a efectos prácticos en dominios de aplicación como:

    • Determinar las capas (layouts) en un circuito integrado analógico

    • Crear redes neuronales

    • Paralelizar programas

    • Y muchos otros ...


Ventajas de las estructuras lispy

Ventajas de las estructuras “Lispy”

  • Cada programa es una lista uniforme

  • Las listas representan, sin distinción alguna, datos y código. Ello permite que se puedan definir las operaciones genéticas de forma sencilla

  • El formato de las instrucciones es el de una función aplicada a argumentos. Ello representa la información de control en una sintaxis común, que resulta (otra vez) cómoda para su modificación genética

  • La estructura de longitud variable de las lista supera la limitación de longitud fija de las cadenas (strings) en los AG


Operadores gen ticos para programas

Operadores Genéticos para Programas

  • Creación: generación aleatoria de árboles utilizando funciones y terminales

  • Cruce: fijar puntos de cruce en ambos padres y solapar ambos subárboles

  • Mutación: fijar un punto de mutación en un padre y reemplazar subárbol con un árbol generado aleatoriamente


Para aplicar operadores gen ticos

Para aplicar operadores genéticos

El Primer Paso:

Identificación de los “Puntos de Fractura” : análogos a los “puntos de cruce en las representaciones genéticas en cadenas utilizadas por los AG.

Pueden ser:

  • El Inicio de una sublista

  • Un Terminal


Implementaci n de operadores

Implementación de Operadores

  • Cruce

  • Inversión

  • Mutación


I operador de cruce crossover

I. Operador de Cruce (crossover)

Pasos:

  • Escoger dos programas criadores individuales

  • Seleccionar dos sublistas, una por criador

  • Intercambiar las sublistas en la descendencia


Paso 1

Paso 1

(* x (+ x y ))

(+ (* z y) (/ y x ))

*

+

*

/

x

+

x

y

z

y

y

x


Paso 2

Paso 2

*

+

*

/

x

+

x

y

z

y

y

x


Paso 21

Paso 2

*

+

*

/

x

+

x

y

z

y

y

x


Paso 22

Paso 2

*

+

*

x

+

x

z

y


Paso 3

Paso 3

*

+

*

x

+

y

/

x

z

y

y

x


Ii operador de inversi n

II. Operador de Inversión

Pasos:

  • Escoger un individuo de la población

  • Seleccionar dos puntos de fractura en el individuo

  • Generar un nuevo individuo conmutando los símbolos delimitados y solapando las sublistas con la lista principal


Paso 11

Paso 1

+

*

/

z

y

y

x


Paso 23

Paso 2

+

*

/

z

y

y

x


Paso 24

Paso 2

+

*

/

z

y

y

x


Paso 25

Paso 2

+

*

/

z

y

y

x


Paso 31

Paso 3

+

*

/

z

y

y

x


Paso 32

Paso 3

+

*

z

/

y

y

x


Paso 33

Paso 3

+

*

z

/

y

y

x


Iii operador de mutaci n

III. Operador de Mutación

Pasos:

  • Seleccionar un programa padre

  • Reemplazar aleatoriamente cualquier símbolo de función por cualquier otro o cualquier símbolo terminal por cualquier otro


Paso 12

Paso 1

+

*

/

z

y

y

x


Paso 26

Paso 2

+

*

/

z

y

y

x


Paso 27

Paso 2

+

+

/

z

y

y

x


Paso 28

Paso 2

+

+

/

z

y

y

x


Problema

Problema

  • Todos los ejemplos anteriores son aritméticos

  • En casos más generales puede darse SOLAPAMIENTO DE ARGUMENTOS

    Pe: si una función devuelve una lista y se intercambia con otra que devuelve un entero, la estructura resultará sintacticamente inválida


Soluciones

Soluciones

  • Todas las funciones deben devolver el mismo tipo de argumentos (pe entero)

  • Usar programación genética fuertemente tipada para asegurar que todas las expresiones son type-safe

  • Implementar algún tipo de chequeo


Algoritmo de pg

Algoritmo de PG

  • La principal diferencia del algoritmo básico de PG con el AG básico surge de la sustitución de las cadenas por programas

  • Esta diferencia se muestra en la evaluación de la aptitud, por lo que el programa se prueba con un conjunto de entradas para evaluarlo.


Algoritmo de pg1

Algoritmo de PG

  • Escoger una población de tamaño NP

  • Escoger el número de generaciones NG

  • Inicializar la población

  • Repetir durante NG generaciones

    • Seleccionar probabilísticamente un cierto número de pares de individuos de la población después de asignar a cada estructura una probabilidad proporcional a su aptitud (fitness) o desempeño (performance)

    • Copiar las estructuras seleccionadas y aplicarle los operadores para producir nuevas estructuras

    • Seleccionar aleatoriamente otros elementos y reemplazarlos con las nuevas estructuras

    • Observar y registrar la aptitud de las nuevas estructuras

    • Suministrar como salida a los individuos más adecuados


Creaci n de la poblaci n inicial

Creación de la Población Inicial

  • Cuando se crea una población, resulta interesante empezar con muchos árboles de diferentes tamaños/formas

  • Se generan árboles utilizando los siguientes métodos:

    • Full: cada ruta en el árbol es de la longitud máxima

    • Grow: las longitudes de rutas varían hasta la longitud máximaRamp half-and-half: (típico) se crean árboles de profundidades variadas desde un mínimo hasta un máximo, y para cada profundidad, la mitad se crean usando el método full y la otra mitad usando el método grow


Pasos preparatorios para pg

Pasos preparatorios para PG

Una vez decidido que quieres resolver un problema usando GP, para efectuar la ejecución se necesita:

  • Determinar el conjunto de terminales: variables, valores de entrada o comandos de acción

  • Determinar el conjunto de funciones (no terminales)

  • Determinar la medida de aptitud (fitness)

  • Los parámetros para controlar la ejecución:

    • Tamaño de población

    • Número máximo de generaciones

    • Tasas de Mutación, cruce y reproducción (típicos 1, 90 y 9%)

  • El método de terminación de una ejecución y de designación de un resultado


Suficiencia y cierre

Suficiencia y Cierre

El conjunto de funciones y el de terminales deben satisfacer los principios:

  • Cierre: cada función f debe ser capaz de aceptar los valores de todos los terminales t del conjunto de terminales y cada función f del conjunto de funciones

  • Suficiencia: en el Espacio de Programas creado a partir de los conjuntos de funciones y terminales

  • debe existir una solución al problema que se plantea


Algunos ejemplos

Algunos Ejemplos


Ejemplo paridad

Ejemplo: Paridad

Objetivo: obtener la función paridad n-par, pe n=3


Elementos del problema

Elementos del Problema

  • Conjunto de Terminales: los tres símbolos que representan las tres posibles entradas a ser comprobadas para paridad:

    T = {D0, D1, D2}

  • Conjunto de Funciones: primitivas booleanas de dos argumentos

    F = [AND, OR, NAND, NOR}


Soluci n

Solución

  • Utilizando una población inicial de 4000 programas, se descubrió una solución en la generación 5

  • La solución contiene 45 elementos (terminales + no terminales)


Soluci n ii

Solución (II)

(AND (OR (OR D0 (NOR D1 D2)) D2)

(AND (NAND (NOR (NOR (NOR D0 D2)

(AND (AND D1 D1) D1))

(NAND (OR (AND D0 D1) D2) D0))

(OR (NAND (AND (D0 D2)

(OR (NOR D0 (OR D2 D0) D1))

(NAND (NAND D1 (NAND (D0 D1)) D2)))


Comentarios sobre la soluci n

Comentarios sobre la Solución

  • La solución no es la función mínima que puede escribirse a mano, sino que contiene muchos usos del conjunto de funciones primitivas

  • Ello se debe a que NO EXISTE PRESIÓN SOBRE EL MECANISMO DE SELECCIÓN para escoger la función mínima


Parsimonia

Parsimonia

  • Como se explica en (Koza-92):

    “Como ocurre con el genoma de los seres vivos, los resultados de la PG raramente son las estructuras mínimas que se definirían a mano para realizar la tarea”

  • Los humanos tendemos a seleccionar las explicaciones simples y potentes, incluso a costa de alguna validez empírica

  • Principio de Parsimonia: obtener la estructura más pequeña posible que permita resolver el problema

(Koza-92) J. Koza, Genetic Programming, MIT Press , 1992


Programaci n gen tica pg

  • La naturaleza no tiene porqué favorecer tales estructuras parsimónicas, aunque nosotros las prefiramos como explicaciones de un cierto fenómeno.

  • (Koza-92) sugiere un conjunto de factores secundarios que penalizan una solución particular que posea excesivo tamaño o tiempo.

  • De esta manera se pueden evolucionar soluciones correctas que sean eficientes y parsimónicas.


Ejemplo regresi n simb lica

Ejemplo: Regresión Simbólica

Generar con GP el ajuste de una función a la siguiente tabla de datos


Regresi n simb lica ii

Regresión Simbólica (II)

  • Conjunto de Funciones: +, -, *, /

  • Conjunto de Terminales: X

  • Medida de Aptitud (Fitness): diferencia absoluta del error. Más apta error 0

  • Parámetros:

    • Tamaño de población: 500

    • Nº máx. de generaciones: 10

    • Cruce: 90%

    • Mutación: 1%

    • Reproducción: 9%

    • Selección por Torneo (tamaño 5)

    • Creación utilizando el método RAMP-HALF-AND-HALF

    • Condición de terminación: Cuando se encuentra un programa con aptitud 0.


Regresi n simb lica resultados

Regresión Simbólica. Resultados

  • Individuo Solución con Aptitud 0:

    (ADD (ADD (MUL X X) (MUL X X))

    (MUL (MUL X X) (- X)))

    (SUB X (SUB (SUB (SUB X X)

    (MUL X X)) (MUL (ADD X X)

    (MUL X X)))))

  • Que captura correctamente la función:

    f(x) = x4 + x3 + x2 + x


Ejemplo camino de santa fe

Ejemplo: Camino de Santa Fe

Problema: una hormiga artificial debe “comerse” todas las piezas de alimento (89) en un camino. La hormiga solo puede moverse a la izda., a la dcha. o adelante, y sólo puede percibir lo que se encuentra directamente enfrente.


Camino de santa fe ii

Camino de Santa Fe (II)

  • Conjunto de Funciones: Prog2, Prog3, IfFoodAhead

  • Conjunto de Terminales: TurnLeft, TurnRight, MoveForward

  • Medida de Aptitud: recuento del número de items comidos despues de un número fijo de movimientos, y restarlos de 89. Mala aptitud = 89, Buena Aptitud = 0.

  • Parámetros:

    • Tamaño de población: 500

    • Nº máx. de generaciones: 50

    • Cruce: 90%

    • Mutación: 1%

    • Reproducción: 9%

    • Selección por Torneo (tamaño 5)

    • Creación utilizando el método RAMP-HALF-AND-HALF

    • Condición de terminación: Cuando se encuentra un programa con aptitud 0.


Camino de santa fe resultados

Camino de Santa Fe. Resultados

  • Resultados del agente obtenido


Camino de santa fe resultados1

Camino de Santa Fe. Resultados

(Prog3 (IfFoodAhead (IfFoodAhead (IfFoodAhead (IfFoodAhead (Prog2 MoveForward MoveForward) TurnLeft) TurnLeft) TurnLeft) (IfFoodAhead MoveForward (IfFoodAhead MoveForward (IfFoodAhead (IfFoodAhead (Prog2 MoveForward MoveForward) TurnLeft) TurnLeft)))) TurnLeft (Prog3 (IfFoodAhead (IfFoodAhead MoveForward TurnLeft) TurnRight) MoveForward TurnRight))

Es posible encontrar agentes más simples


Aplicabilidad

Aplicabilidad

  • John Koza ha comprobado que la PG resulta efectiva en un rango amplio de problemas, no solamente en regresión simbólica, como se ve en el ejemplo anterior.

  • Utilizando conjuntos de funciones que incluyen comandos típicos de programación (como IF o DO-UNTIL), Koza ha evolucionado algoritmos en muchos dominios como:

    • Control Óptimo

    • Inducción de Secuencias

    • Estrategias en Juegos

    • Inducción de árboles de decisión

    • Predicción Económica

    • Etc ....


1000 pentium beowulf style cluster computer 29 julio 1999

1000-Pentium Beowulf-Style Cluster Computer (29 Julio 1999)

Computador paralelo con un servidor y 1,000 P-II 350-MHz 64 MB (94 GB total) en 500 placas madre dual-CPU Tyan Tiger 100 con 128 MB en una minitorre c/u con una tarjeta de interface de red de 100 Mb/s. Intel PRO/100+ y una fuente de alimentación de 300 w.


Programaci n gen tica pg

  • Cada grupo de 40 procesadores (20 carcasas)se conecta a uno de los 25 hubs de 24 puertos y 100 Mb/s

  • Cada hub se encuentra conectado a uno de los dos switches de 100 Mb/s y 16 puertos conectados entre si y al servidor.

  • El servidor es un Dual Pentium II 350-MHz con 256 MB de RAM, 14 GB de disco, display, teclado, CDROM y unidad de floppy. Corre Red Hat Linux 6.0

  • Los 1000 proceadores estan organizados en un grid toroidal de 25x40.

  • Cada grupo de 40 procesadores que comparten un hub se organizan en un rectángulo de 8x5.

  • El sistema de 1,000-nodos puede acomodar una población de 10.000.000 de programas individuales de 3.000 puntos (funciones o terminales) 30.000.000 de 1.000 puntos.

  • Una generación se computa en 0,25 h., y en un día se pueden computar 96 generaciones


Eficacia de pg vs b squeda aleatoria

Eficacia de PG vs. Búsqueda Aleatoria

  • Depende del problema

  • Pero para la mayor parte de los problemas computacionalmente duros, la evidencia experimental es que el comportamiento de de la PG es mucho mejor.


An lisis

Análisis

  • El análisis teórico del desempeño (performance) de la PG es muy difícil

  • Se suele caracterizar experimentalmente, observando el comportamiento del algoritmo en ejecuciones sucesivas variando NG y NP, y extrayendo a continuación algunas conclusiones generales


Programaci n gen tica pg

  • Pk(NP) : probabilidad de generar una solución en una generación particular k utilizando un tamaño de población NP

  • P(NG,i) : probabilidad acumulativa de encontrar una solución hasta (incluyéndola) la generación i:


Programaci n gen tica pg

  • A priori se cree que Pk se incrementaría monótonamente con k, por lo que con más generaciones se alcanzaría inevitablemente la solución.

  • La evidencia experimental muestra otra cosa

  • La aptitud de los individuos tiende a la alcanzar una “llanura” (plateau), significando que la búsqueda de la solución ha alcanzado un mínimo local

  • Por tanto, para la mayoría de los casos, Pk disminuye con k


Programaci n gen tica pg

  • La solución es asumir que sucesivos experimentos son independientes entre si, y alcanzar el óptimo repitiendo ejecuciones que partan de diferentes condiciones iniciales

  • Una fórmula sencilla determina el número de ejecuciones necesarias basadas en medidas de éxito empírico


Determinaci n del n mero de ejecuciones necesarias

Determinación del número de ejecuciones necesarias

  • Establece un compromiso entre tamaño de población y múltiples ejecuciones

  • Asumiendo ejecuciones independientes, el número necesario se puede obtener conocido P(NP, i) de la siguiente manera


Programaci n gen tica pg

  • PA : prob. De alcanzar la solución después de G generaciones

  • Si r es el número de experimentos, se puede obtener PA como:

    PA = 1 – [1 – P(NP, G) ]r

  • Como la variable de interés es r, tomando logaritmos:

    ln (1 –PA) = r ln [1- P(NP, G) ]

  • Ó: r = ln  / ln [1- P(NP, G) ]

  • Siendo :  = (1 –PA)


Programaci n gen tica pg

  • Esta fórmula permite realizar una estima grosera del algoritmo GP para un problema particular

  • Se obtiene un compromiso entre tamaño de población y número de ejecuciones


Programaci n gen tica pg

FIN


  • Login