Esquema
Introducción
Lenguajes de programación
Tecnologías
Aplicaciones
Futuro
Librerías de Software Evolutivo
Todo Junto Ejemplo de un programa
Introducción
Programación dirigida a objetos.
Elementos de programación para computación evolutiva.
Clases básicas
Clases auxiliares
Patrones de programación
Programación dirigida a objetos
Principal paradigma de programación, hoy en día.
Procedural: algoritmos + estructuras de datos = programas (Wirth)
PDO: algoritmos U estructuras de datos = objetos
Programación dirigida a objetos II
Representa mejor el dominio del problema.
Hace más fácil la reutilización de código, haciendo explícita la relación e interacción entre objetos.
Facilita la depuración.
PDO III: conceptos
Herencia
Encapsulación
La interface regula el acceso a las variables de instancia
Interfaces
Tipos de datos abstractos
Lenguajes: SmallTalk, Modula2,C++, Java
PDO II: Terminología
Las clases se instancian en objectos y pueden implementar interfaces. La clase madre es la superclase y la hija la subclase, la subclase hereda de la superclase.
Clases I: Individuo
El que sufre la evolución. Representa una solución al problema.
Representación interna
Binaria, punto flotante, árbol, cualquier otra estructura de datos.
Fitness: un objeto comparable
eoBit< double> indi; // EO en C++
DoubleVectorIndividual ind; //ECJ (en Java)
Clases II: Operadores
Cambio (mutación)
Incluye todo tipo de operadores específicos.
Intercambio (crossover)
Cualquier operador que incluya material de más de un individuo
Operadores específicos: orgía, con restricciones, permutaciones
// EO
eoBitMutation< eoBit< double> > mutation(P_MUT_PER_BIT);
mutation( indi );
eo1PtBitXover< eoBit< double> > xover;
xover( indi1, indi2);
// ECJ
ind.defaultMutate( state, thread );
Clases III: poblaciones
Conjuntos de individuos
A veces llamada isla o deme
No suele tener estructura, salvo orden
// EO
eoPop< eoBit< double> > pop;
// ECJ
DoubleVectorIndividual pop[POPSIZE];
Clases IV: algoritmos
Son un contenedor para todo tipo de transformaciones de la población.
reproductor, un transformador y un reemplazador.
Condiciones de terminación.
Evaluador.
Operadores específicos.
// EO
typedef eoBit< double> Indi;
eoDetTournamentSelect< Indi> selectOne(T_SIZE);
eoSelectPerc< Indi> select(selectOne);
eoSGATransform< Indi> transform(xover, P_CROSS, mutation, P_MUT);
eoGenContinue< Indi> genCont(MAX_GEN);
eoGenerationalReplacement< Indi> replace;
eoEvalFuncPtr< Indi,double,const vector< bool>& > eval(binary_value);
eoEasyEA< Indi> gga(genCont, eval, select, transform, replace);
apply< Indi>(eval, pop);
Clases V: auxiliares
Parsers para ficheros de configuración y de línea de comandos.
Checkpointing: paro y continuación del algoritmo.
Generación de números aleatorios.
Interfaces gráficos para salida y parámetros.
Patrones de software
Singleton: clase de la que puede haber una sola instancia.
Población, parser
Constructor: es capaz de crear otros objetos.
Generadores de individuos de la población.
Página siguiente |