C++ Genetic Algorithm Library



Documentos relacionados
ECJ GENETIC. A Java-based Evolutionary Computation and Genetic Programming Research System. Néstor Arias (naariasm@unal.edu.co)

Programacion Genetica

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

Tema: Clases y Objetos en C++.

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

Se ha desarrollado el siguiente programa principal. Se pide: arquitectura que permita una fácil extensión

IES Abyla. Departamento de Informática. Sistemas Operativos

Computación Evolutiva. Inteligencia Computacional Dra. Maricela Bravo

Árboles balanceados. Alonso Ramírez Manzanares Computación y Algoritmos Thursday, April 30, 15

Algoritmos Genéticos.

Conociendo el ambiente de programación de Java. M. en C. Erika Vilches

Algoritmos Genéticos. Introduccion a la Robótica Inteligente

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

Desarrollo de una aplicación para la implementación de Algoritmos Genéticos

Programación Genética

Preliminares. Tipos de variables y Expresiones

Windows 2000 Server. Manual de Windows 2000 Server

Introducción a los Algoritmos Genéticos. Tomás Arredondo Vidal 17/4/09

Creación de Funciones de Conducción

Algoritmo Genético en Ruteamiento Dinámico en WRON

La nueva arquitectura del paquete AMORE (A MORE Flexible Neural Network)

CAPITULO IV CONCLUSIONES Y RECOMENDACIONES

Tutorial. Configuración del entorno de programación Code::Blocks.

MPI es un estándar de programación en paralelo mediante paso de mensajes que permite crear programas portables y eficientes.

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD.

Clase 32: Árbol balanceado AVL

Examen Febrero de 2012

Practica 01: Programación en C bajo Linux y funciones

Resolución de Problemas

Tema: Arreglos de Objetos en C++.

CURSO 2º GRUPO Junio 2011

4.- Fundamentos del software

Qué es UltraVNC? Cómo se Instala?

Capítulo 12: Indexación y asociación

Entre los más conocidos editores con interfaz de desarrollo tenemos:

Informática 4º ESO Tema 1: Sistemas Informáticos. Sistemas Operativos (Parte 2)

Árboles AVL. Laboratorio de Programación II

Capacidad de procesamiento del compilador Python para el Sistema Operativo Windows y Linux Palabras Clave:

PROPUESTA DE INFORME TÉCNICO PREVIO DE EVALUACIÓN DE SOFTWARE ADQUISICIÓN DE LJCENCIAS DE SOFTWARE DE VIRTUALIZACIÓN PARA SERVIR

Capacitación Rational Funcional Tester

Clases y funciones amigas: friend

Generador de casos de prueba genético

LENGUAJE. Tema 1 - Introducción

INFORME TÉCNICO PREVIO DE EVALUACIÓN DE SOFTWARE

- Qué es una Máquina Virtual?

Novedades en Q-flow 3.02

Trabajo final de Ingeniería

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 3: sistemas operativos

Elementos requeridos para crearlos (ejemplo: el compilador)

Vectores. 27/05/05 Programación Digital I 1

PRÁCTICA No. 13 ÁRBOL BINARIO DE BÚSQUEDA

PVFS (Parallel Virtual File System)

Introducción al software libre

6. SISTEMAS CAD-CAM (CAM) 6.1. CONCEPTO DE CAM

República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda. Lenguaje C++ Contadores y Acumuladores

Diseño y Evaluación de Configuraciones. SyntheticLoad: Mecano para construir sistemas distribuidos complejos clientes/servidor

SOLUCION EXAMEN junio 2006

Módulos: Módulo 1. Hardware & Arquitectura de sistemas - 20 Horas

Estructuras de Control - Diagrama de Flujo

Descripción. Este Software cumple los siguientes hitos:

Estructuras de datos: Árboles binarios de

De aquí sale el proyecto MACsyma (MAC s SYmbolic MAnipulator)

Ingeniería Energética E-ISSN: Instituto Superior Politécnico José Antonio Echeverría. Cuba

Instalación de R.

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

CAPÍTULO 3: Resultados

Central: Ventas: Fax: website:

Aproximación evolutiva a la inducción constructiva basada en expresiones algebraicas

Librerías estándar en C++ STL: Standard Template Library. Álvaro Sánchez Miralles José Porras (Fidel Fernández)

Guía rápida. Julio. [ Programación gráfica en DEV-C++ usando la librería no estándar WINBGIM ]

ROS: Servicio de Optimización en Internet

10 RAZONES POR LAS CUÁLES ELVIS ES EL MEJOR

Información técnica SUNNY CENTRAL COMMUNICATION CONTROLLER

Ampliación de Estructuras de Datos

PowerPoint 2010 Modificar el diseño de las diapositivas

Funcionamiento de los Computadores:

Seguridad. Carlos A. Olarte Bases de Datos II

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

SISTEMA DE MONITOREO DE DATACENTERS DIEGO ALBERTO RINCÓN YÁÑEZ JULIAN MAURICIO ANGEL ÁLVARO SEBASTIÁN MIRANDA FORERO

Ernesto Gamaliel Acosta Gabriela Castillo Granados Antonio de Jesús Pérez Maldonado

Introducción... 1 Qué es Java?... 1 Compilando a Bytecode... 1 Usando jgrasp Para Hacer el Trabajo Sucio... 5 El Entorno de jgrasp...

Estructuras de repetición hacer-mientras y repita hasta

Plantillas de clases ( Templates )

Métodos evolutivos de Optimización. Prof. Cesar de Prada Dpto. Ingeneiria de Sitemas y Automática Universidad de Valladolid

Un algoritmo genético híbrido para resolver el EternityII. Rico, Martin; Ros, Rodrigo Directora: Prof. Dra. Irene Loiseau

INSTALACION MANUAL DE ECLIPSE EN UBUNTU

Fundamentos de Desarrollo de Software

2 Congreso Colombiano de Bioinformática y biología computacional.

ANÁLISIS DE VARIANZA EMPLEANDO EXCEL y WINSTATS

Transcripción:

GALib C++ Genetic Algorithm Library Massachusetts Institute of Technology (MIT) Matthew Wall (the Author)

Licencia GNU para actividades no comerciales Permite modificar el código fuente Para propósitos lucrativos, se distribuye una licencia diferente

Caracteristicas Generales Multiplataforma: Unix, Linux, MacOS, Win PVM en varias máquinas o multiples CPU s Parametrizable por linea de comandos, archivos o en el código Estadisticas on-line, off-line en archivos estructurados

Overview Se trabaja con 2 clases: El genoma (cromosoma) El algoritmo genetico Se define una funcion objetivo Se utiliza el algoritmo

Estructura del AG

TRES PASOS A SEGUIR 1.Definir la representacion 2.Definir los operadores geneticos 3.Definir la funcion objetivo La libreria tiene varias implementaciones para los 2 primeros puntos

Escoger el Algoritmo Genetico Clase base Permite overlap entre poblaciones Poblaciones paralelas con migracion Sin overlapping de poblacion Overlap con reemplazo personalizado

El AG Contiene: Las estadisticas generales y de operadores Estrategia de reemplazo Parametros de ejecucion La poblacion y sus cromosomas Criterio de terminacion Todos son personalizables.

Escoger la Representacion Hacerlo apropiadamente hace parte del arte de los algoritmos geneticos Usar una representacion minima pero completa Permitir soluciones infactibles?

Representacion de Cromosomas

Un programa tipico: float Objective(GAGenome&) { // Aqui se escribe la funcion objetivo } void main(){ //Crear un genoma: GA2DBinaryStringGenome genome(width, height, Objective); GASimpleGA ga(genome); // Crear el AG ga.evolve(); // Evolucionar el AG cout << ga.statistics() << endl; // Ver los resultados }

Parametros Configurables ga.populationsize(popsize); ga.ngenerations(ngen); ga.pmutation(pmut); ga.pcrossover(pcross); //Alternativamente: GASteadyStateGA ga(genome); ga.parameters("settings.txt"); ga.parameters(argc, argv); ga.evolve(); cout << ga.statistics() << endl;

Operadores Geneticos Todo cromosoma tiene 3 operadores primarios: Inicializacion Mutacion Cruce GA1DBinaryStringGenome genome(l, Objective); genome.crossover(ga1dbinarystringgenome::uniformcrossover); //... GATournamentSelector sel; ga.selector(sel);

Operadores Mutacion por intercambio de nodos Cruce de arbol punto simple Mutacion por Intercambio de un subarbol Mutacion por destruccion de un subarbol Mutacion por destruccion en una lista Mutacion por intercambio en la lista Mutacion por Intercambio de una sublista

Operadores Cruce de lista de punto unico Cruce de lista basado en ordenamietno Mutacion de lista por generacion Cruce de unico punto en arreglos con longitud fija Cruce de unico punto en arreglos de longitud variable Cruce de arreglos uniforme

La Poblacion Es el contenedor de los cromosomas Tiene un inicializador y un evaluador Mantiene informacion estadistica Tiene definido el operador de seleccion

Funcion Objetivo y Fitness Es totalmente definida por el programador Se puede realizar evaluacion para individuos o evaluacion para poblaciones Una funcion objetivo poblacional puede estar compuesta por funciones objetivo individuales

Funcion Objetivo y Fitness float Objective(GAGenome& g){ GA1DBinaryStringGenome & genome = (GA1DBinaryStringGenome &)g; float pesos[]={2.0,3.0,4.0,2.5,3.8,1.9,2.6,0.7,4.2,1.40}; float valores[]={10.0,21.0,1.0,14.0,3.0,1.0,23.0,12.0,15.0,19.0}; float pesomaximo = 8.00, valortotal = 0.0, pesototal = 0.0; for(int i = 0; i < genome.length(); i++) { valortotal += genome.gene(i)*valores[i]; pesototal += genome.gene(i)*pesos[i]; } if(pesototal > pesomaximo) return 0; else return valortotal; }

Estadisticas 0100001101 250 # current generation 1 # current convergence 6500 # number of selections since initialization 5626 # number of crossovers since initialization 625 # number of mutations since initialization 6250 # number of replacements since initialization 5739 # number of genome evaluations since initialization 251 # number of population evaluations since initialization 75 # maximum score since initialization 0 # minimum score since initialization 73.8134 # average of all scores ('on-line' performance) 75 # average of maximum scores ('off-line' performance) 73.256 # average of minimum scores ('off-line' performance)