desarollo de sofware con algoritmos genéticos

14
UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE CIENCIAS Y SISTEMAS INTELIGENCIA ARTIFICIAL INTEGRANTES: Vilma Hernández Salgado. Jennifer Chavarría Galeano

Upload: facultad-de-ciencias-y-sistemas

Post on 04-Dec-2014

1.947 views

Category:

Education


3 download

DESCRIPTION

Desarollo de sofware con algoritmos genéticos

TRANSCRIPT

Page 1: Desarollo de sofware con algoritmos genéticos

UNIVERSIDAD NACIONAL DE INGENIERIA FACULTAD DE CIENCIAS Y SISTEMAS

INTELIGENCIA ARTIFICIAL

INTEGRANTES:

• Vilma Hernández Salgado.• Jennifer Chavarría Galeano • Luis Freddy Marenco.

Page 2: Desarollo de sofware con algoritmos genéticos

TEMA DE EXPOCISION

Desarrollo de software basados en A.G.

Page 3: Desarollo de sofware con algoritmos genéticos

Definición

Los Algoritmos Genéticos son métodos adaptativos que pueden usarse para resolver problemas de búsqueda y optimización. Están basados en el proceso genético de los organismos vivos.

Por imitación de este proceso, los Algoritmos Genéticos son capaces de ir creando soluciones para problemas del mundo real. La evolución de dichas soluciones hacia valores óptimos del problema depende en buena medida de una adecuada codificación de las mismas.

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 cuales de ellos deben generar descendencia para la nueva generación.

Page 4: Desarollo de sofware con algoritmos genéticos

Limitaciones

El poder de los Algoritmos Genéticos proviene del hecho de que se trata de una técnica robusta, y pueden tratar con éxito una gran variedad de problemas provenientes de diferentes áreas, incluyendo aquellos en los que otros métodos encuentran dificultades. Si bien no se garantiza que el Algoritmo Genético encuentre la solución óptima, del problema, existe evidencia empírica de que se encuentran soluciones de un nivel aceptable.

En el caso de que existan técnicas especializadas para resolver un determinado problema, lo más probable es que superen al Algoritmo Genético, tanto en rapidez como en eficacia.

El gran campo de aplicación de los Algoritmos Genéticos se relaciona con aquellos problemas para los cuales no existen técnicas especializadas. Incluso en el caso en que dichas técnicas existan, y funcionen bien, pueden efectuarse mejoras de las mismas hibridándolas con los Algoritmos Genéticos.

Page 5: Desarollo de sofware con algoritmos genéticos

Como Saber si es Posible usar un Algoritmo Genético

La aplicación más común de los algoritmos genéticos ha sido la solución de problemas de optimización, en donde han mostrado ser muy eficientes y confiables pero  se recomienda en general tomar en cuenta las siguientes características del mismo antes de intentar usarla:

• Su espacio de búsqueda y sus posibles soluciones debe estar delimitado dentro de un cierto rango.

• Debe poderse definir una función de aptitud que nos indique qué tan buena o mala es una cierta respuesta.

• Las soluciones deben codificarse de una forma que resulte relativamente fácil de implementar en la computadora.

Page 6: Desarollo de sofware con algoritmos genéticos

Función de aptitud

Es la función objetivo de nuestro problema de optimización o de búsqueda El algoritmo genético no solo maximiza o minimización ( la minimización puede realizarse fácilmente utilizando el recíproco de la función maximizante) también es capas de realizar búsquedas.

Una característica que debe tener esta función es que debe ser capaz de "castigar" a las malas soluciones, y de "premiar" a las buenas, de forma que sean estas últimas las que se propaguen con mayor rapidez. Es decir debe tener la capacidad de separar las buenas y malas respuestas.

La codificación más común de las respuestas es a través de cadenas binarias, aunque se han utilizado también números reales y letras. El primero de estos esquemas ha gozado de mucha popularidad debido a que es el que propuso originalmente Holland(pionero en la investigación y desarrollo de los AG), y además porque resulta muy sencillo de implementar.

Page 7: Desarollo de sofware con algoritmos genéticos

Funcionamiento de un algoritmo genético básico

Inicialización: Se genera aleatoriamente la población inicial, que está constituida por un conjunto de variables las cuales representan las posibles soluciones del problema. En caso de no hacerlo aleatoriamente, es importante garantizar que dentro de la población inicial, se tenga la diversidad estructural de estas soluciones para tener una representación de la mayor parte de la población posible o al menos evitar la convergencia prematura.

Evaluación: A cada uno de las variables de esta población se aplicará la función de aptitud para saber qué tan "buena" es la solución que se está codificando.

Condición de término: El AG se deberá detener cuando se alcance la solución óptima, pero ésta generalmente se desconoce, por lo que se deben utilizar otros criterios de detención. Normalmente se usan dos criterios: correr el AG un número máximo de iteraciones (generaciones) o detenerlo cuando no haya cambios en la población.

Page 8: Desarollo de sofware con algoritmos genéticos

Mientras no se cumpla la condición de término se hace lo siguiente:

Selección Después de saber la aptitud de cada variable se procede a elegir la variable que serán cruzados en la siguiente generación. Las variables con mejor aptitud tienen mayor probabilidad de ser seleccionados.

Recombinación La recombinación es el principal operador genético, representa la reproducción sexual, opera sobre dos variables a la vez para generar dos descendientes donde se combinan las características de ambas variables padres.

Mutación modifica al azar parte de las variables de los individuos, y permite alcanzar zonas del espacio de búsqueda que no estaban cubiertas por los individuos de la población actual.

Reemplazo una vez aplicados los operadores genéticos, se seleccionan los mejores individuos para conformar la población de la generación siguiente.

Page 9: Desarollo de sofware con algoritmos genéticos

Ambientes de Programación de los A.G.

En la actualidad existe un gran número de ambientes de programación disponibles en el mercado para experimentar con los algoritmos genéticos. Se pueden distinguir tres ambientes los cuales son:

Sistemas Orientados a las aplicaciones: Son esencialmente "cajas negras" para el usuario, pues ocultan todos los detalles de implementación. Sus usuarios normalmente neófitos en el área los utilizan para un cierto rango de aplicaciones diversas, pero no se interesan en conocer la forma en qué éstos operan. Ejemplos de este tipo de sistemas son: Evolver (Axcelis, Inc.) y XpertRule GenAsys (Attar Software).

Sistemas Orientados a los algoritmos: Soportan algoritmos genéticos específicos, y suelen subdividirse en:

• Sistemas de uso específico : Contienen un solo algoritmo genético, y se dirigen a una aplicación en particular. Algunos ejemplos son: Escapade (Frank Hoffmeister), GAGA (Jon Crowcroft) y Genesis(John Grefenstette).

Page 10: Desarollo de sofware con algoritmos genéticos

Cajas de Herramientas : Proporcionan muchas herramientas de programación, algoritmos y operadores genéticos que pueden aplicarse en una enorme gama de problemas.

Normalmente se subdividen en:

• Sistemas Educativos : Ayudan a los usuarios novatos a introducirse de forma amigable a los conceptos de los algoritmos genéticos. GA Workbench (Mark Hughes) es un buen ejemplo de este tipo de ambiente.

• Sistemas de Propósito General : Proporcionan un conjunto de herramientas para programar cualquier algoritmo genético y desarrollar cualquier aplicación. Tal vez el sistema más conocido de este tipo es Splicer (NASA).

Page 11: Desarollo de sofware con algoritmos genéticos

Lenguajes para desarrollar un AG

Los algoritmos genéticos pueden ser desarrollados en cualquier lenguaje de programación ya que los AG son métodos sistematicos para la resolución (búsqueda, maximización o minimización) de un problema, a continuación mencionaremos algunos lenguaje que son usados para hacer aplicaciones AG:

PERL Java Pascal C C++ Tcl / Tk PHP Lisp C# COBOL Fortran

Page 12: Desarollo de sofware con algoritmos genéticos

IDES para desarrollar un AG

Entre los IDES para desarrollar un AG podemos elegir cualquiera que sea de nuestra comodidad entre los mas populares en la actualidad tenemos:

Visual basic Netbeans Eclipse Vim Emac Xcode Turbo Pascal THINK Pascal THINK C

Page 13: Desarollo de sofware con algoritmos genéticos

Gestores de bases de datos para AG

Es el mismo caso que el de los IDES se puede utilizar cualquier gestor siempre y cuando este sea compatible con el lenguaje en que esta programado el algoritmo genético den los mas actuales tenemos:

PostgreSQL FirebirdSQLiteDB2 E \ xpress-C Apache Derby MariaDB MysqlDrizzleMicrosoft AccessMicrosoft SQL ServerOpen AccessOracleParadoxPervasiveSQL

Page 14: Desarollo de sofware con algoritmos genéticos

04/09/2023

GRACIAS POR SU ATENCION