Top Banner
ECJ GENETIC A Java-based Evolutionary Computation and Genetic Programming Research System Néstor Arias ([email protected])
43

ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Oct 02, 2018

Download

Documents

lyque
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

ECJ GENETIC

A Java-based EvolutionaryComputation and GeneticProgramming ResearchSystem

Néstor Arias([email protected])

Page 2: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

CONTENIDO

• Qué es ECJ?• Características Generales.• Características de GP.• Proceso Evolutivo General.• Clases principales.• Ejemplo.• Conclusiones.

Page 3: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Qué es ECJ?

Es una biblioteca de clases escrita enJava. Fue diseñada para ser flexible, casitodas sus clases y parámetros sedeterminan en tiempo de ejecuciónmediante archivos de parámetros.

Page 4: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Características Generales

Tiene funciones de logging y checkpointindependientes de la plataforma.Archivos de parámetros jerárquicos.Multihilo.Buenos generadores de númerosaleatorios (Mersenne Twister).

Page 5: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Características Generales

Soporte para varias técnicas evolutivas.Soporte para integración con el paqueteTeambots, para hacer la evaluación.Características de computación evolutivaModelos de islas asincrónicos sobreTCP/IP.

Page 6: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Características Generales

Algoritmos genéticos / ProgramaciónGenética de estado estable ogeneracionales, con o sin elitismo.Estrategias evolutivas: evolución: mu,lambda y mu + lambda.Arquitectura de reproducción (breeding)bastante flexible.

Page 7: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Características Generales

Gran número de operadores deselección.Soporte para múltiples subpoblaciones yespecies.Intercambios entre subpoblaciones.Soporte para serialización depoblaciones en archivos.

Page 8: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Características de losindividuosGenes de longitud fija o variable.Representaciones arbitrarias.Siete dominios de problemas soportadospor defecto (sum, rosenbrock, sphere,step, noisy-quartic)Siete dominios de problemas soportadospor defecto(hormigas, regresión,multiplexación, paridad, dos cajas, edge).

Page 9: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Características Generales

Coevolución de población simple omúltiple.Optimización multiobjetivo SPEA2.Posibilidad de extender la librería paraotros métodos de optimizaciónmultiobjetivo.

Page 10: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Características DeProgramación GenéticaFunciones definidas automáticamente ymacros definidas automáticamente.Bosques de múltiples árboles.Seis algoritmos de creación de árboles.Gran número de operadores dereproducción.

Page 11: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Archivos de parámetros

Guían la ejecución de ECJ.Son jerárquicos.Java ec.Evolve –file hola.params

pop.subpop.0.species.genome-size = 20pop.subpop.0.species.crossover-type = twopop.subpop.0.species.crossover-prob = 1.0pop.subpop.0.species.mutation-prob = 0.01

Page 12: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Jerarquía de parámetros

Page 13: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Proceso Evolutivo

La clase Evolve es el punto de entrada,es la que contiene el método main().

Configura los generadores de númerosaleatorios, checkpoint, log, la db deparámetros y el objeto EvolutionState.Todo esto lo configura en base a unarchivo de parámetros que da el usuario.

Page 14: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

EvolutionState

EvolutionState, es un Singleton, quecontiene el estado completo del procesoevolutivo en un momento dado.Contiene los generadores de númerosaleatorios, las poblaciones, la base dedatos de parámetros.

Page 15: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

EvolutionState

Es una clase abstracta, tiene el cicloprincipal evolutivo, sus principalessubclases son evolución de estadoestable y generacional.EvolutionState contiene otros cincoobjetos vitales en la evolución.

Page 16: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Initializer

Es responsable de crear la poblacióninicial. Puede leerla desde archivo ocrearla aleatoriamente.

Page 17: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Evaluator

Evalúa una población y le asigna unfitness.

Page 18: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Breeder

Se encarga de crear la nueva población apartir de la antigua.

Page 19: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Exchanger

Realiza intercambios entresubpoblaciones, posiblemente que estánen diferentes máquinas.

Page 20: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Finisher

Es una especie de destructor y es pocousado.

Page 21: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Statistics

Se encarga de calcular y guardar lasestadísticas.

Page 22: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Algoritmo general

Page 23: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Poblaciones e Individuos

El objeto EvolutionState contiene unúnico objeto Population, el cual a su veztiene un arreglo de subpoblaciones.Cada subpoblación contiene un arreglode Individuals y un objeto Species alque estos pertenecen.

Page 24: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Individual

Contiene un objeto de la clase Fitness,que representa el fitness del individuo.Las clases Species, individual y Fitnessson abstractas.

Page 25: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Clase Species

Representa a un grupo de individuos quetienen el mismo tipo de genes.Contiene un individuo prototipo que esusado para generar nuevos individuos.Contiene un BreedingPipeline que indicacomo será el proceso reproductivo.

Page 26: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

BreedingPipeline

Es el mecanismo básico para pasar deuna generación a otra (Ej: selección,cruce, mutación).ECJ es bastante flexible en este aspectoy se puede personalizar bastante.

Page 27: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Clase Problem

La clase Evaluator contiene unproblema prototipo.

Page 28: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Ejemplo

Para resolver un problema sencillo sedebe extender la clase Problem eimplementar la interfaceSimpleProblemForm.

Se debe implementar el métodoevaluate() y el método describe().

Page 29: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Función Evaluate public void evaluate(EvolutionState state,

Individual ind,

int threadnum) {

// si este individuo ya esta evaluado

// retornar

if (ind.evaluated == true) {

return;

}

Page 30: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

if (!(ind instanceof BitVectorIndividual)) {

state.output.fatal("El individuo no es detipo BitVector");

return;

}

Page 31: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

BitVectorIndividual individual = (BitVectorIndividual)ind;

double fitness = fitness(individual);

if (!(individual.fitness instanceof SimpleFitness)){

state.output.fatal("Horror, el fitness no es unSimpleFitness");

return;

}

Page 32: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

SimpleFitness fitnessObj = (SimpleFitness)individual.fitness;

fitnessObj.setFitness(state, (float) fitness,false);

ind.evaluated = true;

}

Page 33: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Archivo de parámetrosstate = ec.simple.SimpleEvolutionStatepop = ec.Populationinit = ec.simple.SimpleInitializerfinish = ec.simple.SimpleFinisherbreed = ec.simple.SimpleBreedereval = ec.simple.SimpleEvaluatorstat = ec.simple.SimpleShortStatisticsexch = ec.simple.SimpleExchanger

Page 34: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Parámetros administrativosgenerations = 200quit-on-run-complete = truegc = falseAggressive = truegc-modulo = 1checkpoint = falseprefix = eccheckpoint-modulo = 1stat.file = $out.stat

Page 35: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Parámetros de la poblaciónpop.subpops = 1pop.subpop.0 = ec.Subpopulation

pop.subpop.0.size = 10pop.subpop.0.duplicate-retries = 0pop.subpop.0.fitness =

ec.simple.SimpleFitnesspop.subpop.0.species =

ec.vector.VectorSpecies

pop.subpop.0.species.ind =ec.vector.BitVectorIndividual

Page 36: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Más Parámetros

pop.subpop.0.species.genome-size = 20pop.subpop.0.species.crossover-type = twopop.subpop.0.species.crossover-prob = 1.0pop.subpop.0.species.mutation-prob = 0.01

Page 37: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Breeding Pipelinepop.subpop.0.species.pipe =

ec.vector.breed.VectorMutationPipelinepop.subpop.0.species.pipe.source.0 =

ec.vector.breed.VectorCrossoverPipelinepop.subpop.0.species.pipe.source.0.source.0 =

ec.select.TournamentSelectionpop.subpop.0.species.pipe.source.0.source.1 =

ec.select.TournamentSelectionselect.tournament.size = 2

Page 38: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Breeding Pipeline

pop.subpop.0.species.pipe

pop.subpop.0.species.pipe.source.0.source.0

pop.subpop.0.species.pipe.source.0

pop.subpop.0.species.pipe.source.0.source.1

Page 39: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Ejemplo de un BreedingPipeline

Page 40: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Parámetros del problema

eval.problem =co.edu.unal.compuEvolutiva.Knapsack01Problemeval.problem.file = problem0.txt

breed.elites.0 = 1

Page 41: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Conclusiones

VentajasTodas las que hereda de Java, comomultiplataforma, multihilo, manejo deexcepciones, garbage collection.Gran Flexibilidad.Varios problemas resueltos.

Page 42: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Conclusiones (Desventajas)Demasiada flexibilidad (Hay clase hasta para elfitness).Complejidad.En ocasiones puede cerrarse solo (cuando hay unerror grave) lo que no lo hace propicio paraaplicaciones WEB.No es totalmente transparente en cuanto a loshilos.Más que una biblioteca de clases es un programade experimentación.No tiene visualizadores o wizards.

Page 43: ECJ GENETIC - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-I/CompEvol/ECJ_GENETIC.pdf · stat = ec.simple.SimpleShortStatistics exch = ec.simple.SimpleExchanger. ... Otras

Otras desventajas

Hay otros proyectos de computaciónevolutiva con Java que si están ensourceforge.net (uno de los másimportantes sitios de proyectos opensource), estos son JGAP y JAGA.