Next: Operadores genéticos
Up: Diseño y Desarrollo de
Previous: Algoritmos
  Índice General
La biblioteca proporciona ciertas clases de objetos que actúan como individuos en la población, es decir, objetos evolutivos. Como se ha venido comentando, la biblioteca incluye diversos OEP, entre los que se encuentran: cadenas de bits, cadenas de caracteres, vectores de cualquier tipo de dato (en particular, de números enteros o reales).
La figura representa la jerarquía de clases de la biblioteca OE para los tipos de datos comentados.
Figura:
Jerarquía de tipos de datos de la biblioteca OEP.
|
Los OEP heredan de los OE, es deicir, una cadena de enteros OEP, se comportará igual que una OE, pero tiene una serie de funcionalidades añadidas. Dentro de la interfaz de los OEP tenemos dos operadores, que utilizan la biblioteca MPI de paso de mensajes, para realizar la migración entre individuos:
- parallelSend: Envía un individuo en una notación neutra hacia otro procesador.
- parallelReceive: Recibe un individuo en una notación neutra desde otro procesador.
Los anteriores métodos son utilizados fundamentalmente por la clase EOMigrator, que veremos más adelante, que es la clase encargada de realizar la migración de individuos entre las distintas subpoblaciones.
Además hay otros operadores para obtener el estado del número de procesadores (islas) que hay, el número de proceso en el que está cada OEP, cual es el proceso maestro y cuales son los procesos anterior y posterior:
- parallelRank: Devuelve el número de isla (proceso) en el que está el OEP.
- parallelSize: Devuelve el número total de islas (procesos) que están evolucionando en paralelo.
- parallelNext: Devuelve el número de isla (proceso) anterior.
- parallelBefore: Devuelve el número de isla (proceso) siguiente.
- parallelMaster: Devuelve el número de isla (proceso) maestro.
Hay que tener en cuenta que la cardinalidad de los procesos (islas) son asignadas por MPI, cuando se ejecuta el programa y se le dice la implementación de MPI en que máquinas se han de ejecutar cada proceso. Por defecto, el proceso maestro, será la primera máquina que se le indique.
Si se desea incorporar un nuevo tipo de dato a OEP, se construyendo haciendo heredar eoParallel, del tipo OE que deseemos, además, se le debe indicar el tipo de dato que se utilizará para la representación neutral del individuo. También se tienen que redefinir los siguientes métodos, para que el cromosoma pueda ser enviado usando MPI:
- typeNeutral: Devuelve el tipo de dato derivado MPI (MPI_Datatype) que se va a utilizar, para enviar el individuo a través de MPI.
- setToNeutral: Pasa el individuo a representación neutral y devuelve el individuo en dicha representación neutral.
- getFromNeutral: Toma como argumentos la representación neutral de un individuo y su número de genes, y lo pasa a la representación interna del OEP.
Next: Operadores genéticos
Up: Diseño y Desarrollo de
Previous: Algoritmos
  Índice General
Francisco Javier Garcia Castellano
2000-12-14