SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
ALGORÍTMOS GENÉTICOS


TEMA:

                JGAP.
ALUMNA:
           Silvia Maribel michay p.
MÓDULO:
                  X”B”
DOCENTE:
        Ing. Luis Antonio Chamba.


            Loja – ecuador.
                2011
JGAP

INTRODUCCION.

   JGAP son las siglas de Java Genetic Algorithms Package (paquete de algoritmos
     genéticos para Java). Es un componente de programación de algoritmos genéticos que
     se utiliza como un framework


   Los algoritmos genéticos se basan en la teoría de la evolución de Charles Darwin. Se
     tiene     una población,   donde    cada   individuo   posee   diferentes características.
     Esas características se muestran favorables o no frente a un método de selección al
     que se enfrentan todos los individuos. Así se van identificando los que poseen las
     mejores características.


   Las características de      los   individuos   están    dadas   por    sus   cromosomas.
     Un cromosoma es un conjunto de genes. Cada gen es responsable de indicar el tipo de
     una sola característica del individuo. El valor que toma el gen se llama alelo.


   En la biología, los individuos mejor adaptados al medio donde se encuentran son los
     que sobreviven. De esa forma se reproducen, dando lugar a una descendencia que
     hereda sus características ventajosas.


   También se dan variaciones en los genes por medio de la combinación (reproducción
     sexual) o por cambios aleatorios (mutaciones). Así surgen de forma natural
     más características que a su vez son puestas a prueba y permiten a sus portadores
     sobrevivir y reproducirse si son las más adecuadas para el ambiente que les rodea.


   Los algoritmos genéticos son una analogía de lo que ocurre biológicamente, pero
     aplicada a encontrar la mejor solución a un problema. Cada solución es un individuo.
     El método de selección se llama función de ajsute, e indica la aptitud de cada individuo
     para resolver el problema. También existen cromosomas con genes y sus respectivos
     alelos.


   A los cromosomas se les aplican operadores genéticos, equivalentes a la mutación y la
     reproducción sexual, de forma que se generan y ponen a prueba nuevas soluciones.
De ese modo, los algoritmos genéticos son un método para probar múltiples
       soluciones “autogeneradas” a un problema.


¿QUÉ OFRECE JGAP?

JGAP tiene clases e interfaces para representar:
    Genes (Gene).
    Cromosomas (Chromosome).
    Individuos (IChromosome).
    La población (Genotype).
    La función de ajuste (FitnessFunction).
    Operadores genéticos.


Se trata de una solución genérica, sin relación alguna con un problema particular. Por esa
razón se deben crear nuevas clases que heredan o implementan las clases e interfaces
mencionadas. Así se adapta JGAP al problema específico que se quiere solucionar.


MOTOR GENÉTICO.

El “motor genético” crea varias soluciones (individuos) aleatoriamente con el método
randomInitialGenotype().


Aplica operadores genéticos (mutación y combinación) para que surjan nuevas soluciones con
el método evolve (). Pone a prueba cada solución con la función de ajuste evaluate(). Y por
último retorna el cromosoma del individuo mejor adaptado con getFittestChromosome().


LICENCIA.

JGAP es software libre y se puede distribuir bajo la GNU Lesser Public
License 2.1 o posterior. Las aplicaciones comerciales que no publiquen su
código fuente deben distribuirse bajo la Mozilla Public License.
INSTALACION Y CONFIGURACION DE JGAP.

Para poder instalar y configurar el framework JGAP es necesario tener instalado los siguientes
programas.

MÁQUINA VIRTUAL DE JAVA.

Qué es?

El JDK (Java Development Kit) es un software que provee
herramientas de desarrollo para la creación de programas en java.
Puede instalarse en una computadora local o en una unidad de red.

El JDK suministrado por Sun Microsystems incluye:

                        Un compilador.
                        Un intérprete de aplicaciones.
                        Un depurador en línea de comandos.
                        Un visualizador de applets entre otros elementos.

                 En la unidad de red se puede tener la aplicación distribuida en varias
                 computadoras y trabajar como una sola aplicación.

                 En los sistemas Windows sus variables de entorno son:

    JAVAPATH: es un path completo del directorio donde está instalado el JDK.
    CLASSPATH: son las librerías o clases de usuario.
    PATH: variable donde se agrega la ubicación de JDK Los programas más importantes
       que se incluyen son:

El mismo que podemos descargarlo desde la siguiente pagina.

                                                                             http://www.oracle
                                                                             .com/technetwork
                                                                              /java/javase/dow
                                                                             nloads/index.html
En este caso se utiliza NetBeans la versión que mejor te convenga y para esta práctica
utilizare NetBeans 6.9.1, si no lo tienes instalado en tu equipo podemos descargar desde la
siguiente página.

http://netbeans.org/

QUE ES NETBEANS?

                                        Es un entorno de desarrollo, hecho principalmente
                                        para el lenguaje de programación Java.

                                        Existe además un número importante de módulos para
                                        extender el NetBeans IDE.

NetBeans IDE es un producto libre y gratuito sin restricciones de uso.

NetBeans es un proyecto de código abierto de gran éxito con una gran base de usuarios, una
comunidad en constante crecimiento, y con cerca de 100 socios en todo el mundo.

                           Sun MicroSystems fundó el proyecto de código abierto NetBeans
                           en junio de 2000 y continúa siendo el patrocinador principal de los
                           proyectos.

La plataforma NetBeans permite que las aplicaciones sean desarrolladas a partir de un
conjunto de componentes de software llamados módulos.

Un módulo es un archivo Java que contiene clases de java escritas para interactuar con las
APIs de NetBeans y un archivo especial (manifest file) que lo identifica como módulo.

Las aplicaciones construidas a partir de módulos pueden ser extendidas agregándole nuevos
módulos.

Debido a que los módulos pueden ser desarrollados independientemente, las aplicaciones
basadas en la plataforma NetBeans pueden ser extendidas fácilmente por otros
desarrolladores de software.

Luego de tener estos programas procedemos a descargar el framework JGAP

http://sourceforge.net/projects/jgap/files/
El archivo se llama jgap_3.5_full.zip. Se recomienda descargar el de instalación completa si no
se desea compilar el código.

Luego de descargar el archivo se extrae su contenido. Esto puede hacerse en cualquier
directorio. Por último sólo es necesario incluir el archivo jgap.jar como una biblioteca para
poder usar las clases de JGAP.

Luego de tener todos los programas necesarios ahora si procedemos a instalar y configurar a
continuación se explicara cuáles son los pasos a seguir para lograr el resultado deseado:

    Primeramente abrimos nuestro entorno de desarrollo.
Luego abrimos nuestro proyecto y nos vamos a propiedades de nuestro proyecto y deberemos
agregar a jgap como biblioteca para esto se puede hacer desde las propiedades del proyecto,
en el nodo “Libraries”. Como nos muestra la imagen la ventana de propiedades del proyecto.




    VAMOS A LA PARTE
      DE LIBRERÍAS


                                                              Damos click en ADD JAR/FOLDER
Luego de agregamos la librería o el jar de jgap.jar en nuestro proyecto
INTRODUCCION A ALGORITMOS GENETICOS.

                                     Un algoritmo es una serie de pasos organizados que
                                     describe el proceso que se debe seguir, para dar solución
                                     a un problema específico.

                                     En los años 1970, de la mano de John Henry Holland,
                                     surgió una de las líneas más prometedoras de la
                                     inteligencia artificial, la de los algoritmos genéticos. Son
                                     llamados así porque se inspiran en la evolución biológica
                                     y su base genético-molecular.

Estos algoritmos hacen evolucionar una población de individuos sometiéndola a acciones
aleatorias semejantes a las que actúan en la evolución biológica (mutaciones y
recombinaciones genéticas), así como también a una Selección de acuerdo con algún criterio,
en función del cual se decide cuáles son los individuos más adaptados, que sobreviven, y
cuáles los menos aptos, que son descartados.

Es incluido dentro de los algoritmos evolutivos, que incluyen también las estrategias
evolutivas, la programación evolutiva y la programación genética. Dentro de esta última se
han logrado avances curiosos:

En 1999, por primera vez en la historia, se concedió una patente a un invento no realizado
directamente por un ser humano: se trata de una antena de forma extraña, pero que funciona
perfectamente en las condiciones a las que estaba destinada. No hay, sin embargo, nada
injusto en el hecho de que el autor del algoritmo genético del que salió la forma de la antena
se haya atribuido la autoría de la patente, pues él escribió el programa e ideó el criterio de
selección que condujo al diseño patentado.

Un algoritmo genético es un método de búsqueda dirigida basada en probabilidad. Bajo una
condición muy débil (que el algoritmo mantenga elitismo, es decir, guarde siempre al mejor
elemento de la población sin hacerle ningún cambio) se puede demostrar que el algoritmo
converge en probabilidad al óptimo. En otras palabras, al aumentar el número de iteraciones,
la probabilidad de tener el óptimo en la población tiende a 1 (uno).
ALGORITMO GENÉTICO SIMPLE.




El Algoritmo Genético Simple, también denominado Canónico, se representa en la Como se
verá a continuación, se necesita una codificación o representación del problema, que resulte
adecuada al mismo.

Además se requiere una función de ajuste o adaptación al problema, la cual asigna un número
real a cada posible solución codificada.

Durante la ejecución del algoritmo, los padres deben ser seleccionados para la reproducción, a
continuación dichos padres seleccionados se cruzaran generando dos hijos, sobre cada uno de
los cuales actuara un operador de mutación.

El resultado de la combinación de las anteriores funciones será un conjunto de individuos
(posibles soluciones al problema), los cuales en la evolución del Algoritmo Genético formarían
parte de la siguiente población.
MÉTODOS DE SELECCIÓN.

A continuación se muestran algunas de las técnicas de selección más conocidas:

    Rueda de ruleta.

Este método consiste en construir una ruleta particionada en ranuras de igual tamaño, las
cuales se numeran. A cada individuo de la población se le asigna una cantidad de ranuras
proporcional a su aptitud.

El proceso se repite hasta completar la cantidad de individuos deseados. Este método de
selección otorga mayor probabilidad de contribuir a la siguiente generación a los individuos
con mayor aptitud.

    Selección por torneo.

En este caso dos individuos son elegidos al azar de la población actual y el mejor o más apto
de los dos se coloca en la generación siguiente. Esto continúa hasta que se complete la nueva
población.

    Basado en el rango.

En este esquema se mantiene un porcentaje de la población, generalmente la mayoría, para la
siguiente generación.

Se coloca toda la población por orden de aptitud, y los M menos dignos son eliminados y
sustituidos por la descendencia de alguno de los M mejores con algún otro individuo de la
población.

    Método estocástico.

Para cada individuo se calcula la aptitud relativa al promedio de aptitudes de la población, y
en función de esto se asignan las copias.
MÉTODOS DE REPRODUCCIÓN.

    Cruza simple.

Los dos cromosomas padres se cortan por un punto, y el material genético situado entre ellos
se intercambia.

    Cruza de dos puntos.

Se seleccionan dos puntos aleatoriamente a lo largo de la longitud de los cromosomas y los
dos padres intercambian los segmentos entre los puntos.

    Cruza Multipunto.

El cromosoma es considerado un anillo, y se eligen n puntos de cruza en forma aleatoria. Si la
cantidad de puntos de cruza es par, se intercambian las porciones de cromosomas definidas
entre cada par de puntos consecutivos, si es impar se asume un punto de cruza adicional en la
posición cero y se procede de igual modo.

    Cruza binomial.

Para generar un cromosoma hijo por cruza binomial, se define la probabilidad P0 como la
probabilidad de que el Alelo de cualquier posición del descendiente se herede del padre, y 1-
P0 como la probabilidad de que lo herede de la madre.

En este caso se puede construir un único hijo por cada aplicación del operador, o bien generar
un segundo hijo como complemento del primero.

Cuando existe igual probabilidad de heredar del padre como de la madre, P0=0.5 la cruza se
denomina uniforme.
IMPLEMENTACIÓN.



Para poder implementar una solución a este problema utilizando jgap es necesario indicarle al
framework una serie de parámetros y codificar la función de aptitud.

Para este caso la clase principal se llamará CambioMinimo y la función aptitud se codificará en
la clase CambioMinimoFuncionAptitud.

En primer lugar se debe modelar el problema, es decir definir como se compone cada gen de
los cromosomas (soluciones posibles). Para este problema puntual cada gen será un número
entero y representará la cantidad de un tipo de moneda de ese cromosoma. Por lo tanto cada
cromosoma tendrá 6 genes.




Este cromosoma sumaría 275 centavos en 4 monedas. Una vez definido el modelo se puede
comenzar a codificar la solución.

A continuación se explica a grandes rasgos como se implementó el ejemplo de aplicación y
que clases y funciones principales se utilizaron. Pero para más detalle se encuentra el anexo
con el código fuete explicado instrucción por instrucción.

Primero se debe crear una configuración con valores predeterminados que luego se irán
modificando.
CÓDIGO FUENTE CAMBIO MÍNIMO.
EJECUCIÓN Y RESULTADOS.
LICENCIA.
Este fragmento esta publicado en la página principal de JGAP donde explica que es un
software libre. Pero si se quiere utilizar de forma comercial es necesario donar al menos 20
euros a JGAP.


JGAP is free software; you can redistribute it and/or modify it under the terms of the
GNU Lesser Public License as published by the Free Software Foundation; either version
2.1 of the License, or (at your option) any later version. Instead, you could choose to use the
Mozilla Public License to use JGAP in commercial applications without the need of publishing
your source code or make it reverse engineerable (as is required with the GNU License). For
using the MPL you have to donate at least 20 Euros to JGAP. Maybe you would like to
browser further information about using JGAP commercially.


JGAP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the above mentioned GNU Lesser Public License and the Mozilla Public License for more
details. But we offer really a lot of unit tests which help assure a very high probability for a
correct piece of software!

Más contenido relacionado

La actualidad más candente

Lecture - 1 introduction to java
Lecture - 1 introduction to javaLecture - 1 introduction to java
Lecture - 1 introduction to javamanish kumar
 
Genetic algorithm raktim
Genetic algorithm raktimGenetic algorithm raktim
Genetic algorithm raktimRaktim Halder
 
El algoritmo a (asterisco)
El algoritmo a (asterisco)El algoritmo a (asterisco)
El algoritmo a (asterisco)Cristina Lopez
 
Ejercicios con Lenguajes Formales
Ejercicios con Lenguajes FormalesEjercicios con Lenguajes Formales
Ejercicios con Lenguajes Formalesvmtorrealba
 
Feedforward neural network
Feedforward neural networkFeedforward neural network
Feedforward neural networkSopheaktra YONG
 
Java GUI La librería Swing
Java GUI La librería Swing Java GUI La librería Swing
Java GUI La librería Swing Laura
 
Genetic Algorithms
Genetic AlgorithmsGenetic Algorithms
Genetic Algorithmsadil raja
 
Introduction to genetic algorithms
Introduction to genetic algorithmsIntroduction to genetic algorithms
Introduction to genetic algorithmsshadanalam
 
Genetic algorithms
Genetic algorithmsGenetic algorithms
Genetic algorithmszamakhan
 
Geneti̇k algori̇tma
Geneti̇k algori̇tmaGeneti̇k algori̇tma
Geneti̇k algori̇tmaOsman Inan
 
Genetic programming
Genetic programmingGenetic programming
Genetic programmingMeghna Singh
 
Flowchart of GA
Flowchart of GAFlowchart of GA
Flowchart of GAIshucs
 
L13 string handling(string class)
L13 string handling(string class)L13 string handling(string class)
L13 string handling(string class)teach4uin
 
Introduction to genetic programming
Introduction to genetic programmingIntroduction to genetic programming
Introduction to genetic programmingabhishek singh
 

La actualidad más candente (20)

Lecture - 1 introduction to java
Lecture - 1 introduction to javaLecture - 1 introduction to java
Lecture - 1 introduction to java
 
Lenguajes de una maquina de turing
Lenguajes de una maquina de turingLenguajes de una maquina de turing
Lenguajes de una maquina de turing
 
Genetic algorithm raktim
Genetic algorithm raktimGenetic algorithm raktim
Genetic algorithm raktim
 
El algoritmo a (asterisco)
El algoritmo a (asterisco)El algoritmo a (asterisco)
El algoritmo a (asterisco)
 
Ejercicios con Lenguajes Formales
Ejercicios con Lenguajes FormalesEjercicios con Lenguajes Formales
Ejercicios con Lenguajes Formales
 
04 Multi-layer Feedforward Networks
04 Multi-layer Feedforward Networks04 Multi-layer Feedforward Networks
04 Multi-layer Feedforward Networks
 
criptosistema Rabin, Merkle-Hellman
criptosistema Rabin, Merkle-Hellmancriptosistema Rabin, Merkle-Hellman
criptosistema Rabin, Merkle-Hellman
 
Alfabetos
AlfabetosAlfabetos
Alfabetos
 
Feedforward neural network
Feedforward neural networkFeedforward neural network
Feedforward neural network
 
Java GUI La librería Swing
Java GUI La librería Swing Java GUI La librería Swing
Java GUI La librería Swing
 
Genetic Algorithms
Genetic AlgorithmsGenetic Algorithms
Genetic Algorithms
 
Introduction to genetic algorithms
Introduction to genetic algorithmsIntroduction to genetic algorithms
Introduction to genetic algorithms
 
Genetic algorithms
Genetic algorithmsGenetic algorithms
Genetic algorithms
 
Geneti̇k algori̇tma
Geneti̇k algori̇tmaGeneti̇k algori̇tma
Geneti̇k algori̇tma
 
Java Notes
Java Notes Java Notes
Java Notes
 
Genetic programming
Genetic programmingGenetic programming
Genetic programming
 
Genetic Algorithm
Genetic AlgorithmGenetic Algorithm
Genetic Algorithm
 
Flowchart of GA
Flowchart of GAFlowchart of GA
Flowchart of GA
 
L13 string handling(string class)
L13 string handling(string class)L13 string handling(string class)
L13 string handling(string class)
 
Introduction to genetic programming
Introduction to genetic programmingIntroduction to genetic programming
Introduction to genetic programming
 

Destacado

Algoritmos Genéticos na Prática
Algoritmos Genéticos na PráticaAlgoritmos Genéticos na Prática
Algoritmos Genéticos na PráticaNorton Guimarães
 
Roteirização pura de veículos utilizando algoritmos genéticos
Roteirização pura de veículos utilizando algoritmos genéticosRoteirização pura de veículos utilizando algoritmos genéticos
Roteirização pura de veículos utilizando algoritmos genéticosRicidleiv Tondatto
 
Inteligência Artificial - Aula15 - Algoritmos Genéticos
Inteligência Artificial - Aula15 - Algoritmos GenéticosInteligência Artificial - Aula15 - Algoritmos Genéticos
Inteligência Artificial - Aula15 - Algoritmos GenéticosRafael Pinto
 
Mapa conceptual: Manifestaciones de la estructura de la materia
Mapa conceptual: Manifestaciones de la estructura de la materiaMapa conceptual: Manifestaciones de la estructura de la materia
Mapa conceptual: Manifestaciones de la estructura de la materiamenchaca5
 

Destacado (6)

Algoritmos Genéticos na Prática
Algoritmos Genéticos na PráticaAlgoritmos Genéticos na Prática
Algoritmos Genéticos na Prática
 
Roteirização pura de veículos utilizando algoritmos genéticos
Roteirização pura de veículos utilizando algoritmos genéticosRoteirização pura de veículos utilizando algoritmos genéticos
Roteirização pura de veículos utilizando algoritmos genéticos
 
Inteligência Artificial - Aula15 - Algoritmos Genéticos
Inteligência Artificial - Aula15 - Algoritmos GenéticosInteligência Artificial - Aula15 - Algoritmos Genéticos
Inteligência Artificial - Aula15 - Algoritmos Genéticos
 
Mapa conceptual: Manifestaciones de la estructura de la materia
Mapa conceptual: Manifestaciones de la estructura de la materiaMapa conceptual: Manifestaciones de la estructura de la materia
Mapa conceptual: Manifestaciones de la estructura de la materia
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Mapa conceptual de la materia
Mapa conceptual de la materiaMapa conceptual de la materia
Mapa conceptual de la materia
 

Similar a Tutorial jgap (20)

Tarea
TareaTarea
Tarea
 
Caracteristicas de Java
Caracteristicas de JavaCaracteristicas de Java
Caracteristicas de Java
 
Desarollo de sofware con algoritmos genéticos
Desarollo de sofware con algoritmos genéticosDesarollo de sofware con algoritmos genéticos
Desarollo de sofware con algoritmos genéticos
 
Nuevo Manual de Gambas v2 [14-oct-2010]
Nuevo Manual de Gambas v2 [14-oct-2010]Nuevo Manual de Gambas v2 [14-oct-2010]
Nuevo Manual de Gambas v2 [14-oct-2010]
 
Ha2 cm40 eq2-netbeans
Ha2 cm40 eq2-netbeansHa2 cm40 eq2-netbeans
Ha2 cm40 eq2-netbeans
 
Java basico
Java basicoJava basico
Java basico
 
Software libre
Software libreSoftware libre
Software libre
 
Desarrollo.de.aplicaciones.con.java
Desarrollo.de.aplicaciones.con.javaDesarrollo.de.aplicaciones.con.java
Desarrollo.de.aplicaciones.con.java
 
[ES] Fundamentos esenciales de la plataforma java
[ES] Fundamentos esenciales de la plataforma java[ES] Fundamentos esenciales de la plataforma java
[ES] Fundamentos esenciales de la plataforma java
 
Manual jdk
Manual jdkManual jdk
Manual jdk
 
Java desde 0
Java desde 0Java desde 0
Java desde 0
 
Mi Lenguaje de Programación Preferido
Mi Lenguaje de Programación PreferidoMi Lenguaje de Programación Preferido
Mi Lenguaje de Programación Preferido
 
Actividad 4
Actividad  4Actividad  4
Actividad 4
 
JAVA Actividad 4
JAVA Actividad  4JAVA Actividad  4
JAVA Actividad 4
 
Presentación.pptx
Presentación.pptxPresentación.pptx
Presentación.pptx
 
Apuntes de introduccion a la programación
Apuntes de introduccion a la programaciónApuntes de introduccion a la programación
Apuntes de introduccion a la programación
 
Programación en java
Programación en javaProgramación en java
Programación en java
 
Manual de bluej
Manual de bluejManual de bluej
Manual de bluej
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
Java jaucito
Java jaucitoJava jaucito
Java jaucito
 

Más de Silvia Michay

Responsabilidad social y empresarial
Responsabilidad social y empresarialResponsabilidad social y empresarial
Responsabilidad social y empresarialSilvia Michay
 
Modelos matemáticos de seguridad
Modelos matemáticos de seguridadModelos matemáticos de seguridad
Modelos matemáticos de seguridadSilvia Michay
 
Ejercicios metodo simplex
Ejercicios metodo simplexEjercicios metodo simplex
Ejercicios metodo simplexSilvia Michay
 
Resumen recuperacion
Resumen recuperacionResumen recuperacion
Resumen recuperacionSilvia Michay
 
Resumen programacion lineal
Resumen programacion linealResumen programacion lineal
Resumen programacion linealSilvia Michay
 
SISTEMA DE ECUACIONES NO LINEALES
SISTEMA DE ECUACIONES NO LINEALESSISTEMA DE ECUACIONES NO LINEALES
SISTEMA DE ECUACIONES NO LINEALESSilvia Michay
 

Más de Silvia Michay (11)

Gonzalezhpa90
Gonzalezhpa90Gonzalezhpa90
Gonzalezhpa90
 
Responsabilidad social y empresarial
Responsabilidad social y empresarialResponsabilidad social y empresarial
Responsabilidad social y empresarial
 
Modelos matemáticos de seguridad
Modelos matemáticos de seguridadModelos matemáticos de seguridad
Modelos matemáticos de seguridad
 
Plantilla ensayo
Plantilla ensayoPlantilla ensayo
Plantilla ensayo
 
Plantilla ensayo
Plantilla ensayoPlantilla ensayo
Plantilla ensayo
 
Plantilla ensayo
Plantilla ensayoPlantilla ensayo
Plantilla ensayo
 
Plantilla ensayo
Plantilla ensayoPlantilla ensayo
Plantilla ensayo
 
Ejercicios metodo simplex
Ejercicios metodo simplexEjercicios metodo simplex
Ejercicios metodo simplex
 
Resumen recuperacion
Resumen recuperacionResumen recuperacion
Resumen recuperacion
 
Resumen programacion lineal
Resumen programacion linealResumen programacion lineal
Resumen programacion lineal
 
SISTEMA DE ECUACIONES NO LINEALES
SISTEMA DE ECUACIONES NO LINEALESSISTEMA DE ECUACIONES NO LINEALES
SISTEMA DE ECUACIONES NO LINEALES
 

Último

Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 

Último (19)

Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 

Tutorial jgap

  • 1. ALGORÍTMOS GENÉTICOS TEMA: JGAP. ALUMNA: Silvia Maribel michay p. MÓDULO: X”B” DOCENTE: Ing. Luis Antonio Chamba. Loja – ecuador. 2011
  • 2. JGAP INTRODUCCION.  JGAP son las siglas de Java Genetic Algorithms Package (paquete de algoritmos genéticos para Java). Es un componente de programación de algoritmos genéticos que se utiliza como un framework  Los algoritmos genéticos se basan en la teoría de la evolución de Charles Darwin. Se tiene una población, donde cada individuo posee diferentes características. Esas características se muestran favorables o no frente a un método de selección al que se enfrentan todos los individuos. Así se van identificando los que poseen las mejores características.  Las características de los individuos están dadas por sus cromosomas. Un cromosoma es un conjunto de genes. Cada gen es responsable de indicar el tipo de una sola característica del individuo. El valor que toma el gen se llama alelo.  En la biología, los individuos mejor adaptados al medio donde se encuentran son los que sobreviven. De esa forma se reproducen, dando lugar a una descendencia que hereda sus características ventajosas.  También se dan variaciones en los genes por medio de la combinación (reproducción sexual) o por cambios aleatorios (mutaciones). Así surgen de forma natural más características que a su vez son puestas a prueba y permiten a sus portadores sobrevivir y reproducirse si son las más adecuadas para el ambiente que les rodea.  Los algoritmos genéticos son una analogía de lo que ocurre biológicamente, pero aplicada a encontrar la mejor solución a un problema. Cada solución es un individuo. El método de selección se llama función de ajsute, e indica la aptitud de cada individuo para resolver el problema. También existen cromosomas con genes y sus respectivos alelos.  A los cromosomas se les aplican operadores genéticos, equivalentes a la mutación y la reproducción sexual, de forma que se generan y ponen a prueba nuevas soluciones.
  • 3. De ese modo, los algoritmos genéticos son un método para probar múltiples soluciones “autogeneradas” a un problema. ¿QUÉ OFRECE JGAP? JGAP tiene clases e interfaces para representar:  Genes (Gene).  Cromosomas (Chromosome).  Individuos (IChromosome).  La población (Genotype).  La función de ajuste (FitnessFunction).  Operadores genéticos. Se trata de una solución genérica, sin relación alguna con un problema particular. Por esa razón se deben crear nuevas clases que heredan o implementan las clases e interfaces mencionadas. Así se adapta JGAP al problema específico que se quiere solucionar. MOTOR GENÉTICO. El “motor genético” crea varias soluciones (individuos) aleatoriamente con el método randomInitialGenotype(). Aplica operadores genéticos (mutación y combinación) para que surjan nuevas soluciones con el método evolve (). Pone a prueba cada solución con la función de ajuste evaluate(). Y por último retorna el cromosoma del individuo mejor adaptado con getFittestChromosome(). LICENCIA. JGAP es software libre y se puede distribuir bajo la GNU Lesser Public License 2.1 o posterior. Las aplicaciones comerciales que no publiquen su código fuente deben distribuirse bajo la Mozilla Public License.
  • 4. INSTALACION Y CONFIGURACION DE JGAP. Para poder instalar y configurar el framework JGAP es necesario tener instalado los siguientes programas. MÁQUINA VIRTUAL DE JAVA. Qué es? El JDK (Java Development Kit) es un software que provee herramientas de desarrollo para la creación de programas en java. Puede instalarse en una computadora local o en una unidad de red. El JDK suministrado por Sun Microsystems incluye:  Un compilador.  Un intérprete de aplicaciones.  Un depurador en línea de comandos.  Un visualizador de applets entre otros elementos. En la unidad de red se puede tener la aplicación distribuida en varias computadoras y trabajar como una sola aplicación. En los sistemas Windows sus variables de entorno son:  JAVAPATH: es un path completo del directorio donde está instalado el JDK.  CLASSPATH: son las librerías o clases de usuario.  PATH: variable donde se agrega la ubicación de JDK Los programas más importantes que se incluyen son: El mismo que podemos descargarlo desde la siguiente pagina. http://www.oracle .com/technetwork /java/javase/dow nloads/index.html
  • 5. En este caso se utiliza NetBeans la versión que mejor te convenga y para esta práctica utilizare NetBeans 6.9.1, si no lo tienes instalado en tu equipo podemos descargar desde la siguiente página. http://netbeans.org/ QUE ES NETBEANS? Es un entorno de desarrollo, hecho principalmente para el lenguaje de programación Java. Existe además un número importante de módulos para extender el NetBeans IDE. NetBeans IDE es un producto libre y gratuito sin restricciones de uso. NetBeans es un proyecto de código abierto de gran éxito con una gran base de usuarios, una comunidad en constante crecimiento, y con cerca de 100 socios en todo el mundo. Sun MicroSystems fundó el proyecto de código abierto NetBeans en junio de 2000 y continúa siendo el patrocinador principal de los proyectos. La plataforma NetBeans permite que las aplicaciones sean desarrolladas a partir de un conjunto de componentes de software llamados módulos. Un módulo es un archivo Java que contiene clases de java escritas para interactuar con las APIs de NetBeans y un archivo especial (manifest file) que lo identifica como módulo. Las aplicaciones construidas a partir de módulos pueden ser extendidas agregándole nuevos módulos. Debido a que los módulos pueden ser desarrollados independientemente, las aplicaciones basadas en la plataforma NetBeans pueden ser extendidas fácilmente por otros desarrolladores de software. Luego de tener estos programas procedemos a descargar el framework JGAP http://sourceforge.net/projects/jgap/files/
  • 6. El archivo se llama jgap_3.5_full.zip. Se recomienda descargar el de instalación completa si no se desea compilar el código. Luego de descargar el archivo se extrae su contenido. Esto puede hacerse en cualquier directorio. Por último sólo es necesario incluir el archivo jgap.jar como una biblioteca para poder usar las clases de JGAP. Luego de tener todos los programas necesarios ahora si procedemos a instalar y configurar a continuación se explicara cuáles son los pasos a seguir para lograr el resultado deseado:  Primeramente abrimos nuestro entorno de desarrollo.
  • 7. Luego abrimos nuestro proyecto y nos vamos a propiedades de nuestro proyecto y deberemos agregar a jgap como biblioteca para esto se puede hacer desde las propiedades del proyecto, en el nodo “Libraries”. Como nos muestra la imagen la ventana de propiedades del proyecto. VAMOS A LA PARTE DE LIBRERÍAS Damos click en ADD JAR/FOLDER
  • 8. Luego de agregamos la librería o el jar de jgap.jar en nuestro proyecto
  • 9. INTRODUCCION A ALGORITMOS GENETICOS. Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema específico. En los años 1970, de la mano de John Henry Holland, surgió una de las líneas más prometedoras de la inteligencia artificial, la de los algoritmos genéticos. Son llamados así porque se inspiran en la evolución biológica y su base genético-molecular. Estos algoritmos hacen evolucionar una población de individuos sometiéndola a acciones aleatorias semejantes a las que actúan en la evolución biológica (mutaciones y recombinaciones genéticas), así como también a una Selección de acuerdo con algún criterio, en función del cual se decide cuáles son los individuos más adaptados, que sobreviven, y cuáles los menos aptos, que son descartados. Es incluido dentro de los algoritmos evolutivos, que incluyen también las estrategias evolutivas, la programación evolutiva y la programación genética. Dentro de esta última se han logrado avances curiosos: En 1999, por primera vez en la historia, se concedió una patente a un invento no realizado directamente por un ser humano: se trata de una antena de forma extraña, pero que funciona perfectamente en las condiciones a las que estaba destinada. No hay, sin embargo, nada injusto en el hecho de que el autor del algoritmo genético del que salió la forma de la antena se haya atribuido la autoría de la patente, pues él escribió el programa e ideó el criterio de selección que condujo al diseño patentado. Un algoritmo genético es un método de búsqueda dirigida basada en probabilidad. Bajo una condición muy débil (que el algoritmo mantenga elitismo, es decir, guarde siempre al mejor elemento de la población sin hacerle ningún cambio) se puede demostrar que el algoritmo converge en probabilidad al óptimo. En otras palabras, al aumentar el número de iteraciones, la probabilidad de tener el óptimo en la población tiende a 1 (uno).
  • 10. ALGORITMO GENÉTICO SIMPLE. El Algoritmo Genético Simple, también denominado Canónico, se representa en la Como se verá a continuación, se necesita una codificación o representación del problema, que resulte adecuada al mismo. Además se requiere una función de ajuste o adaptación al problema, la cual asigna un número real a cada posible solución codificada. Durante la ejecución del algoritmo, los padres deben ser seleccionados para la reproducción, a continuación dichos padres seleccionados se cruzaran generando dos hijos, sobre cada uno de los cuales actuara un operador de mutación. El resultado de la combinación de las anteriores funciones será un conjunto de individuos (posibles soluciones al problema), los cuales en la evolución del Algoritmo Genético formarían parte de la siguiente población.
  • 11. MÉTODOS DE SELECCIÓN. A continuación se muestran algunas de las técnicas de selección más conocidas:  Rueda de ruleta. Este método consiste en construir una ruleta particionada en ranuras de igual tamaño, las cuales se numeran. A cada individuo de la población se le asigna una cantidad de ranuras proporcional a su aptitud. El proceso se repite hasta completar la cantidad de individuos deseados. Este método de selección otorga mayor probabilidad de contribuir a la siguiente generación a los individuos con mayor aptitud.  Selección por torneo. En este caso dos individuos son elegidos al azar de la población actual y el mejor o más apto de los dos se coloca en la generación siguiente. Esto continúa hasta que se complete la nueva población.  Basado en el rango. En este esquema se mantiene un porcentaje de la población, generalmente la mayoría, para la siguiente generación. Se coloca toda la población por orden de aptitud, y los M menos dignos son eliminados y sustituidos por la descendencia de alguno de los M mejores con algún otro individuo de la población.  Método estocástico. Para cada individuo se calcula la aptitud relativa al promedio de aptitudes de la población, y en función de esto se asignan las copias.
  • 12. MÉTODOS DE REPRODUCCIÓN.  Cruza simple. Los dos cromosomas padres se cortan por un punto, y el material genético situado entre ellos se intercambia.  Cruza de dos puntos. Se seleccionan dos puntos aleatoriamente a lo largo de la longitud de los cromosomas y los dos padres intercambian los segmentos entre los puntos.  Cruza Multipunto. El cromosoma es considerado un anillo, y se eligen n puntos de cruza en forma aleatoria. Si la cantidad de puntos de cruza es par, se intercambian las porciones de cromosomas definidas entre cada par de puntos consecutivos, si es impar se asume un punto de cruza adicional en la posición cero y se procede de igual modo.  Cruza binomial. Para generar un cromosoma hijo por cruza binomial, se define la probabilidad P0 como la probabilidad de que el Alelo de cualquier posición del descendiente se herede del padre, y 1- P0 como la probabilidad de que lo herede de la madre. En este caso se puede construir un único hijo por cada aplicación del operador, o bien generar un segundo hijo como complemento del primero. Cuando existe igual probabilidad de heredar del padre como de la madre, P0=0.5 la cruza se denomina uniforme.
  • 13. IMPLEMENTACIÓN. Para poder implementar una solución a este problema utilizando jgap es necesario indicarle al framework una serie de parámetros y codificar la función de aptitud. Para este caso la clase principal se llamará CambioMinimo y la función aptitud se codificará en la clase CambioMinimoFuncionAptitud. En primer lugar se debe modelar el problema, es decir definir como se compone cada gen de los cromosomas (soluciones posibles). Para este problema puntual cada gen será un número entero y representará la cantidad de un tipo de moneda de ese cromosoma. Por lo tanto cada cromosoma tendrá 6 genes. Este cromosoma sumaría 275 centavos en 4 monedas. Una vez definido el modelo se puede comenzar a codificar la solución. A continuación se explica a grandes rasgos como se implementó el ejemplo de aplicación y que clases y funciones principales se utilizaron. Pero para más detalle se encuentra el anexo con el código fuete explicado instrucción por instrucción. Primero se debe crear una configuración con valores predeterminados que luego se irán modificando.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 21. LICENCIA. Este fragmento esta publicado en la página principal de JGAP donde explica que es un software libre. Pero si se quiere utilizar de forma comercial es necesario donar al menos 20 euros a JGAP. JGAP is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. Instead, you could choose to use the Mozilla Public License to use JGAP in commercial applications without the need of publishing your source code or make it reverse engineerable (as is required with the GNU License). For using the MPL you have to donate at least 20 Euros to JGAP. Maybe you would like to browser further information about using JGAP commercially. JGAP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above mentioned GNU Lesser Public License and the Mozilla Public License for more details. But we offer really a lot of unit tests which help assure a very high probability for a correct piece of software!