1. UNIVERSIDAD NACIONAL DE INGENIERIA
FACULTAD DE CIENCIAS Y SISTEMAS
INTELIGENCIA ARTIFICIAL
INTEGRANTES:
• Vilma Hernández Salgado.
• Jennifer Chavarría Galeano
•Luis Freddy Marenco.
3. 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.
4. 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.
5. 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.
6. 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.
7. 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.
8. 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.
9. 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).
10. 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).
11. 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
12. 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
13. 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
Firebird
SQLite
DB2 E xpress-C
Apache Derby
MariaDB
Mysql
Drizzle
Microsoft Access
Microsoft SQL Server
Open Access
Oracle
Paradox
PervasiveSQL