ecj genetic - dis.unal.edu.codis.unal.edu.co/~fgonza/courses/2004-i/compevol/ecj_genetic.pdf ·...

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

Upload: lyque

Post on 02-Oct-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

ECJ GENETIC

A Java-based EvolutionaryComputation and GeneticProgramming ResearchSystem

Néstor Arias([email protected])

CONTENIDO

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

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.

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).

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.

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.

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.

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).

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.

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.

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

Jerarquía de parámetros

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.

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.

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.

Initializer

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

Evaluator

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

Breeder

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

Exchanger

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

Finisher

Es una especie de destructor y es pocousado.

Statistics

Se encarga de calcular y guardar lasestadísticas.

Algoritmo general

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.

Individual

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

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.

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.

Clase Problem

La clase Evaluator contiene unproblema prototipo.

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().

Función Evaluate public void evaluate(EvolutionState state,

Individual ind,

int threadnum) {

// si este individuo ya esta evaluado

// retornar

if (ind.evaluated == true) {

return;

}

if (!(ind instanceof BitVectorIndividual)) {

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

return;

}

BitVectorIndividual individual = (BitVectorIndividual)ind;

double fitness = fitness(individual);

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

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

return;

}

SimpleFitness fitnessObj = (SimpleFitness)individual.fitness;

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

ind.evaluated = true;

}

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

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

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

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

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

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

Ejemplo de un BreedingPipeline

Parámetros del problema

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

breed.elites.0 = 1

Conclusiones

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

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.

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.