Download Capítulo 1 DISEÑO MODELO SECUENCIAL

Document related concepts

Programación de expresiones de genes wikipedia , lookup

Programación genética wikipedia , lookup

Filogenética computacional wikipedia , lookup

Inferencia bayesiana en filogenia wikipedia , lookup

Alineamiento múltiple de secuencias wikipedia , lookup

Transcript
Proyecto:
Entrenamiento de Redes Neuronales utilizando Algoritmos
Evolutivos y Combinaciones con Búsqueda Local.
Actualización:
19/09/2002 (Madrid)
Capítulo 1
Responsables: D. Enrique Alba Torres
D. Ignacio Reyes Moreno
DISEÑO MODELO SECUENCIAL
En este documento formalizaremos la propuesta de un modelo de diseño paraa las
familias de algoritmos evolutivos implementadas en EPOL.
Se espera conseguir con este diseño un sistema de búsqueda flexible y eficiente que
sea lo suficientemente genérico como para poder derivar de él distintos algoritmos o
familias de algoritmos.
1.1 Implementación
El objeto de esta sección es resaltar la familia de algoritmos evolutivos
desarrollados, abordando las principales decisiones de implementación que influyen y
caracterizan a los algoritmos
secuenciales implementados: algoritmos genéticos y
estrategias evolutivas.
Se omite en este capítulo la referencia a los métodos de clase del modelo
presentado.
1.1.1 Diseño de Clases
Hasta hace relativamente poco tiempo, la calidad del software usado en el campo de
la computación evolutiva era mala, debido fundamentalmente a la falta de flexibilidad de
los modelos propuestos, y a la particularización de su uso por sus mismos desarrolladores o
investigadores. Con el modelo propuesto se pretende abordar desde un punto de vista más
general y flexible el uso de esta biblioteca evolutiva.
Para empezar, es importante arrancar con una fase de diseño, comparando los
modelos existentes, con la implementación propia. Para el diseño de nuestro modelo
Proyecto:
Entrenamiento de Redes Neuronales utilizando Algoritmos
Evolutivos y Combinaciones con Búsqueda Local.
Actualización:
19/09/2002 (Madrid)
Responsables: D. Enrique Alba Torres
D. Ignacio Reyes Moreno
optamos por una estructura predeterminada según el modelo de la familia xxGA1, adaptando
al dominio de nuestro problema las clases y relaciones. El porqué de su elección responde a
varios factores determinantes:
Se trata de un modelo ya implementado del cual se dispone de una versión
operativa.
Ha sido comparado con otros modelo como GAME, d-GAME, GP_TEXT y incGA
resultando ser el más conveniente.
El modelo secuencial implementado puede verse en la siguiente Figura:
Operator_ES
{Only Individual_ES allowed}
Bool
Operator_Pool
Random
Population
Individual_ES
EA
Ouput_File
2
Bipop
Individual
1+
FFN
represents
1+
Pattern
BPN
1+
Gene
alleles
Bit
Real
Figura 1.1.1 Diseño de clases para nuestro modelo secuencial
1
Consúltese los trabajos realizados por este departamento y en especial el capítulo 3 de la Tesis de D. Enrique
Alba.
Proyecto:
Entrenamiento de Redes Neuronales utilizando Algoritmos
Evolutivos y Combinaciones con Búsqueda Local.
Actualización:
19/09/2002 (Madrid)
Responsables: D. Enrique Alba Torres
D. Ignacio Reyes Moreno
La clase principal EA implementa el tipo Algoritmo Evolutivo (AE), ya se trate de
un Algoritmo Genético o de una Estrategia Evolutiva. A parte, se distingue también la clase
Bipop, cuya característica principal es que agrega dos algoritmos evolutivos. Estos, se
ejecutan en paralelo. Se permite además ejecutar AEs con dos poblaciones y también
realizar combinaciones de estos algoritmos y técnicas híbridas en la misma clase, lo que da,
sin lugar a dudas, un conjunto de posibilidades muy elevadas de explotar este diseño.
Otras clases relevantes son las referidas al pool de operadores, que en este caso se
ha disociado en una clase padre Operator_Pool y otra hija Operator_ES,
especializadas con el objetivo de distinguir entre el pool de operadores para algoritmos
genéticos y estrategias evolutivas respectivamente. La razón fundamental de esta decisión
se basa en: conseguir una independencia entre ambos tipos de algoritmos con el fin de
realizar futuras mejoras y nuevas ampliaciones por separado, y la otra razón se centra en
diferenciar los límites derivados del hecho de ser algoritmos distintos, por tanto, con
capacidades distintas de hibridación, etc.
Se permite añadir en tiempo de ejecución nuevos operadores al pool, también se
permite hibridar los operadores aplicables.
Los individuos que maneja la población son representados por las clases
Individual e Individual_ES. La primera se encarga de representar a los individuos
de los algoritmos genéticos, mientras que la segunda hace lo mismo con los individuos de
la estrategia evolutiva.
El mantenimiento de la población así como de la gestión de los mismos reside en la
clase Population. El modelo de población implementado es de estado estacionario,
siendo posible en cualquier momento readaptarla incluyendo un nuevo bucle en el ciclo
reproductivo para que se convierta en un modelo generacional o incluso celular, no
Proyecto:
Entrenamiento de Redes Neuronales utilizando Algoritmos
Evolutivos y Combinaciones con Búsqueda Local.
Actualización:
19/09/2002 (Madrid)
Responsables: D. Enrique Alba Torres
D. Ignacio Reyes Moreno
obstante, esto podría ser contraproducente en el caso de las estrategias evolutivas, y de ahí
que haya separado en dos pool de operadores -tercera razón-.
Los individuos pueden representarse en binario, Gray y codificación flotante, la
clase Bit incluye los métodos necesarios para realizar una decodificación entre los tipos
binario y Gray.
Por último, se ha añadido al modelo una clase que gestiona la salida a fichero de los
resultados que deparen los algoritmos implementados, se trata de la clase Ouput_File.
1.2 Métodos de las Clases
En esta sección abordamos el trato de los métodos implementados y haremos una breve
descripción del cometido de cada método. Tanto los constructores simples como los de
copia se han obviado por motivos de simplicidad, no obstante el comentario del código los
describe con todo lujo de detalles.
1.2.1 Clase Random
Define la interfaz con el generador de números aleatorios, los métodos en ella
definidos son:
Rand0ToUp1: genera un número aleatorio en el intervalo abierto [0,1).
Rand0To1: genera un número aleatorio en el intervalo cerrado [0,1].
Normal_Random_Number: genera un número aleatorio que sigue una
distribución normal N(0,1).
Set_Seed: fija el valor de la semilla.
Proyecto:
Entrenamiento de Redes Neuronales utilizando Algoritmos
Evolutivos y Combinaciones con Búsqueda Local.
Actualización:
19/09/2002 (Madrid)
Responsables: D. Enrique Alba Torres
D. Ignacio Reyes Moreno
Get_Seed: recupera el valor de la semilla si ha sido fijado con anterioridad.
1.2.2 Clase Ouput_File
Define la interfaz de salida a fichero, permitiendo a los algoritmos imprimir los
resultados estadísticos o bien los obtenidos al final de su ejecución. Sus métodos son:
Set_Print_Header: indica a la clase que imprima una cabecera del fichero, en
esta cabecera irán datos sobre la fecha, hora y nombre del fichero.
Asign_Filename: asigna una corriente de salida a la clase (un fichero).
Open_File: controla que la apertura del fichero sea correcta.
Close_File: igual pero para el cierre.
Write_Stat_Line: escribe en el fichero una fila con los datos siguientes: mejor
valor, valor medio, peor valor y número de generación. Este método se usa cuando
se desea llevar un seguimiento exhaustivo de los resultados de cada generación.
Write_Result: escribe en el fichero una fila con los resultados finales del mejor
valor, valor medio, peor valor, tanto para las fases de entrenamiento como de
generalización, además imprime, el tiempo de ejecución de cada algoritmo, así
como los valores de los individuos construidos a partir de la recombinación de la
información de toda la población, en concreto, la media, la ponderación basada en
su adecuación y la basada en el orden.
1.2.3 Clase Bit
La clase Bit representa biunivocamente las clases binaria y Gray para la representación
de las cadenas o individuos. Los métodos que implementa son básicamente los
constructores, a parte, podemos destacar la redefinición de operadores como el igual, el
Proyecto:
Entrenamiento de Redes Neuronales utilizando Algoritmos
Evolutivos y Combinaciones con Búsqueda Local.
Actualización:
19/09/2002 (Madrid)
Responsables: D. Enrique Alba Torres
D. Ignacio Reyes Moreno
stream de salida y entrada. El tratamiento de las conversiones de Gray a real, binario a real,
...etc, es tratado en la clase Population, de la que hablaremos próximamente.
En esta clase el único método ajeno a los constructores o a la redefinición de
operadores en el siguiente:
Name: Devuelve el tipo base de la codificación del individuio, por ejemplo si la
codificación utilizada es Gray devuelve la constante predefinida GRAY. Idem para
la codificación binaria.
1.2.4 Clase Real
La codificación en flotante de las cadenas que representan a los individuos se deben al
uso de esta clase. El único método manejable explícitamente por el usuario es la función
Name, que al igual que en el caso de la clase Bit devuelve el tipo base de la codificación
del individuo.
1.2.5 Clase Gene
La clase Gene plasma la codificación del individuo en forma de genes. Estos genes
están formados a su vez de alelos, que pueden tener una representación binaria, Gray o
flotante. Los métodos que destacan en esta clase son (omitimos cualquier operador,
incluido en de indexación [], que permite acceder a un alelo particular):
Name: devuelve el tipo base sobre el que está construido el gen.
Proyecto:
Entrenamiento de Redes Neuronales utilizando Algoritmos
Evolutivos y Combinaciones con Búsqueda Local.
Actualización:
19/09/2002 (Madrid)
Responsables: D. Enrique Alba Torres
D. Ignacio Reyes Moreno
Get_Allele_Number: Devuelve el número total de alelos, para distinguirlo del
número de alelos por gen, será necesario dividir el resultado de la llamada a este
método por el número de genes.
Gene_To_Real: convierte un gen de cualquier tipo -incluido el real, aunque es
innecesario- a un número real que se encuentra en el rango [min,max], que son dos
parámetros flotantes del método.
Real_To_Gene: realiza la conversión recíproca, es decir, pasa de un número
codificado en real a un gen del tipo base que se trate, estando el resultado acotado
en un intervalo definido de nuevo por dos parámetros del método.
1.2.6 Clase Individual
Codifica la estructura del individuo genético -usado para AGs-, un individuo estará
formado por una cadena de genes, y estos a su vez por cadenas de alelos. Además el
individuo durante su evolución tiene asociado un valor de adecuación o fitness, que en
nuestro caso puede representar el fitness, el error cuadrático medio (mse) o el rmse -raíz
cuadrada del anterior-. Otro aspecto importante del individuo se centra en la conversión de
tipos de gen, es decir, la conversión de genes binario y Gray a real y viceversa, para ello se
define unos parámetros de escalado que definen el intervalo de acotación de la codificación
o decodificación llevada a cabo.
Los métodos de esta clase son (sin contar constructores y redefinición de operadores):
Name: devuelve el tipo base del gen.
Get_Gene_Number: devuelve el número de genes del individuo.
Get_Allele_Number: devuelve el total de alelos del individuo -no la relación
de alelos por gen-.
Get_Fitness: Devuelve el fitness del individuo.
Set_Fitness: fija el fitness.
Proyecto:
Entrenamiento de Redes Neuronales utilizando Algoritmos
Evolutivos y Combinaciones con Búsqueda Local.
Actualización:
19/09/2002 (Madrid)
Responsables: D. Enrique Alba Torres
D. Ignacio Reyes Moreno
Get_Raw_Fitness: Devuelve el fitness real.
Set_Raw_Fitness: fija el fitness real.
Decode: pasamos de una representación genotípica -binaria, Gray o flotante- a una
fenotípica2 -flotante-.
Encode: pasamos de la representación fenotípica a la genotípica.
Set_Range: fija el rango utilizado en la conversión/escalado.
Set_Min_Range:
Fija
el
extremo
inferior
del
intervalo
acotado
de
escalado/conversión.
Set_Max_Range: idem para el extremo superior.
Get_Min_Range: consultamos el extremo inferior.
Get_Max_Range: idem del extremo superior.
Individual_Type: se trata de un método virtual, que devuelve el tipo de
individuo que estamos utilizando, AG o estrategia evolutiva. De esta forma
podemos saber en que algoritmos aplicar el individuo.
Reset: reinicializa los parámetros del individuo.
1.2.7 Clase Individual_ES
Se trata de una clase hija, que hereda de la clase Individual. Define las mismas
interfaces que su padre, pero sólo es aplicable a los individuos que representan a la
estrategia evolutiva.
El método más importante (se ha omitido constructores y operadores) es:
Init_ES_Var: inicializa los parámetros de control de la estrategia evolutiva, para
concretar: la matriz de covarianzas, la matriz de ángulos y el vector de
desviaciones.
2
Se trata de una representación dependiente del dominio del problema.
Proyecto:
Entrenamiento de Redes Neuronales utilizando Algoritmos
Evolutivos y Combinaciones con Búsqueda Local.
Actualización:
19/09/2002 (Madrid)
Responsables: D. Enrique Alba Torres
D. Ignacio Reyes Moreno
1.2.8 Clase Pattern
Define la estructura de los patrones de entrada salida. Dispone del siguiente método:
Alloc_Men: reserva memoria para los patrones de entrada salida.
1.2.9 Clase FFN
Contiene métodos que sirven de interfaz para definir múltiples tipos de redes
neuronales, hasta el momento redes de retropropagación (BPN). Entre los métodos
disponibles:
Métodos encargados del manejo de la función de activación
Sigmoid_Function: aplica la función de transferencia sigmoidal.
Binary_Function: idem con una función binaria.
Linear_Function: con una función lineal.
Hyperbolic_Function: con una función hiperbólica.
Método de inicialización
Init_Network: inicializa pesos y bias aleatoriamente.
Allocate_Memory_Net: Reserva memoria para contener la estructura de una
red neuronal.
Método de conversión
Map_Weights_In_Net: convierte una estructura fenotípica (vector de flotantes)
a la estructura de red. Para ello se sigue la codificación de entrada de los pesos de
la red.
Métodos de entrada/salida
Get_Configuration_File: Lee los parámetros de la red desde un fichero.
Get_Genes_From_Problem: Carga desde un fichero los genes.
Proyecto:
Entrenamiento de Redes Neuronales utilizando Algoritmos
Evolutivos y Combinaciones con Búsqueda Local.
Actualización:
19/09/2002 (Madrid)
Responsables: D. Enrique Alba Torres
D. Ignacio Reyes Moreno
Load_Weights_From_File: Carga los pesos de una red neuronal desde un
archivo.
Save_ Weights_From_File: Vuelca los pesos de una red a un fichero.
Load_Input_Ouput_Pattern: Permite cargar en tiempo de ejecución nuevos
patrones desde un archivo, actualizando los parámetros internos de la red como el
M_E_P_V -error máximo que puede cometer la red-.
Métodos de consulta
Evaluate: Evalua la adecuación3 de un individuo sobre un patrón devolviendo
esta.
Error: Devuelve el error cometido entre la salida actual y la esperada.
Evaluate_All: Evalua la adecuación de todos los individuos sobre todos los
patrones. Devuelve la adecuación final del individuo.
Get_Status: Indica el estado actual de la red neuronal -inicializada o no-.
Get_M_E_P_V: devuelve el máximo error que puede producir la red.
Get_Network_Size: devuelve el número de pesos de la red.
Get_Fitness_Counter: devuelve el número de evaluaciones de la red.
Métodos de actualización
Set_Weight_Range: Reinicializa los pesos de la red entre el intervalo
[min,max], parámetros pasados al método en cuestión.
Set_M_E_P_V: Fija el m_e_p_v de la red en caso de que se conozca. No obstante,
si se desconoce, al cargar la red o nuevos patrones se calcula de nuevo.
1.2.10 Clase BPN
3
Fitness, mse o rmse. Esto depende de la elección del usuario, que debe asignarla a la variable error.
Proyecto:
Entrenamiento de Redes Neuronales utilizando Algoritmos
Evolutivos y Combinaciones con Búsqueda Local.
Actualización:
19/09/2002 (Madrid)
Responsables: D. Enrique Alba Torres
D. Ignacio Reyes Moreno
Se trata de una clase hija de FFN que implementa redes perceptrón multicapa. Entre
sus métodos destacan:
Set_Position: Apunta al primer peso de la red BPN considerada.
Next_Position: Devuelve la posición del siguiente peso.
Evaluate: Evalua el error de salida al cuadrado. Diferencia entre la salida
obtenida y la esperada.
Backpropagate: Se trata de un método auxiliar que ejecuta el BP pero sobre un
patrón dado.
Get_Configuration_File: Lee la configuración de la red desde un archivo.
Initialize: Reserva memoria para la estructura de datos de la BPN.
Evaluate_All: Calcula la adecuación sobre todos los patrones.
Evaluate: Idem, pero sobre un patrón.
Backpropagation: Ejecuta el BP sobre todos los patrones.
Gradient_Descent:
Ejecuta el gradiente descendiente -dependiente del
problema-.
1.2.11 Clase Population
Responsable de la gestión de la población, así como del escalado, entrada salida a
fichero y estadística. Los métodos que incluye:
Name: Devuelve el tipo base de la población.
Get_Popsize: Devuelve el tamaño de la población.
Get_Allele_Number: Proporciona el número de alelos de unos individuos.
Get_Gene_Number: Retorna el número de genes de un individuo.
Best: Devuelve el mejor individuo de la población.
Proyecto:
Entrenamiento de Redes Neuronales utilizando Algoritmos
Evolutivos y Combinaciones con Búsqueda Local.
Actualización:
19/09/2002 (Madrid)
Responsables: D. Enrique Alba Torres
D. Ignacio Reyes Moreno
Worst: Devuelve el peor individuo de la población.
Create_Initial_Population: Crea la población inicial.
Change_Range: Cambia el rango de los genes.
Compute_Stats: Calcula la estadística de la población.
Get_Popstats: Recupera la estadística ya calculada.
Get_Entropy: Calcula la entropía para las codificaciones binaria y Gray.
Next: Proporciona el siguiente individuo en la población.
Reset: El individuo al que apunta el índice actual se reinializa.
Set_Sum_Raw_Fitness: calcula la suma del fitness real.
Set_Avg_Raw_Fitness: calcula la suma del fitness real medio.
End_Of_Population: indica si el índice apunta al último elemento de la lista
que conforma la población.
Set_Index: Fija unos de los dos indices de la población a una posición que es
proporcionada como un parámetro.
Get_Index: Devuelve el individuo apuntado por el índice de la posición
proporcionada.
Change_Index: Intercambia los dos índices que mantiene la población.
Set_Scaling: Fija el tipo de escalado.
Get_Scaling: Consulta el tipo de escalado empleado.
Set_Delta_Factor: Fija el delta para el escalado lineal.
Get_Delta_Factor: Consulta el delta del escalado lineal.
Set_Sigma_Factor: Fija el sigma para el escalado sigma.
Get_Sigma_Factor: Consulta el sigma del escalado sigma.
Scale: Escala el valor devuelto por la función objetivo.
ScalePop: Escala toda la población.
Load_Population: Carga la población desde un fichero.
Save_Population: Guarda la población en un archivo.
Proyecto:
Entrenamiento de Redes Neuronales utilizando Algoritmos
Evolutivos y Combinaciones con Búsqueda Local.
Actualización:
19/09/2002 (Madrid)
Responsables: D. Enrique Alba Torres
D. Ignacio Reyes Moreno
Save_Population_To_Real: Guarda la población en un archivo, pero
convirtiéndola antes a flotante (se utiliza para adaptar AG binario/Gray a EE).
Get_Min_Range: Consulta el rango inferior del intervalo de escalado.
Get_Max_Range: Consulta el rango superior del intervalo de escalado.
Set_Seed: Fija la semilla.
1.2.12 Clase Operator_Pool
Define los métodos necesarios para implementar un conjunto de operadores para los
algoritmos genéticos. Entre las características de esta implementación están la capacidad de
añadir nuevos operadores al conjunto, eliminarlos o cambiarlos en tiempo de ejecución.
Dada su estructuración es muy fácil derivar en algoritmos generacionales o celulares. Los
métodos disponibles en esta clase son:
Init_Private_Structures: inicializa las estructuras privadas e internas del
pool de operadores.
Is_Mutation_Operator: Comprueba si hay definidos operadores de mutación
en el pool.
Is_Crossover_Operator: Idem con operadores de cruce.
Is_Selecction_Operator: Idem con operadores de selección.
Is_Replacement_Operator: Análogo al anterior pero con operadores de
reemplazo.
Is_Recombination_Operator: Idem con operadores de recombinación.
Is_Recombine_Information_Operator:
Idem
con
operadores
de
recombinación de la información de la población.
Xop_Exist: Comprueba si se ha definido un operador de cruce.
Reproductive_Cycle: Ejecuta el ciclo reproductivo. Equivale a una
generación del bucle principal de aplicación de los operadores.
Proyecto:
Entrenamiento de Redes Neuronales utilizando Algoritmos
Evolutivos y Combinaciones con Búsqueda Local.
Actualización:
19/09/2002 (Madrid)
Responsables: D. Enrique Alba Torres
D. Ignacio Reyes Moreno
ss_gen_Selection: este método sirve para definir el tipo de selección generacional o de estado estacionario- que sigue el algoritmo. Las modificaciones
necesarias para ejecutar este proyecto en modo generacional se localizan en este
método.
Spx, Dpx, Ux, Ax: métodos que implementan los tipos de cruce referidos.
Simulated_Annealing: Implementa el método del recocido simulado.
Mutation: Codifica la mutación.
Replace_Ind: Lleva a cabo el reemplazo de los individuos.
Selection: Este método general se encarga de llamar a los métodos de selección
implementados según el definido en el pool.
Rw_Selection: Implementa la selección por ruleta.
Sus_Selection: Codifica la selección SUS.
Rank_Based_Selection: Selección basada en el orden.
Best_Selection: Selecciona el mejor individuo.
Recombine_Population_Mean: Método que utiliza la información de la
población para crear un individuo creado a partir de las características medias de
los individuos.
Recombine_Population_Ponderate: Crea un individuo a partir de las
características de los individuos que conforman la población, haciendo que
aquellos con mejor aptitud contribuyan más.
Recombine_Population_Majority: Se usa en poblaciones cuyo tipo base es
binario o Gray. Se genera un nuevo individuo cuyas características provienen de
aquellas mayoritarias del resto de la población.
Recombine_Population_Rank_Based:
Genera
un
nuevo
individuo
utilizando las características de la población, ordenando sus individuos y haciendo
que la contribución de cada uno de estos venga en función de su posición tras su
ordenación.
Muta_Hill_Es: Implementa la mutación por Hill-Climbing.
Proyecto:
Entrenamiento de Redes Neuronales utilizando Algoritmos
Evolutivos y Combinaciones con Búsqueda Local.
Actualización:
19/09/2002 (Madrid)
Responsables: D. Enrique Alba Torres
D. Ignacio Reyes Moreno
Get_Pc: Consulta el valor de la probabilidad de cruce.
Get_Pm: Idem con la probabilidad de mutación.
Get_N_Op: devuelve el número de operadores del pool.
Get_Op: devuelve el nombre del operador en la posición indicada por el parámetro
del método.
1.2.13Clase Operator_ES
Define el pool de operadores para la estrategia evolutiva. Los métodos de los que
consta son:
Append_Operator: Añade nuevos operadores en tiempo de ejecución.
Calculate_Normal_Function: calcula una función de distribución N(0,1).
Reproductive_Cycle: Idéntico al de la clase anterior.
Mutation_ES: Implementa la mutación para EE.
Recombine_ES: Implementa el método de recombinación para EE.
Make_Child_Population: Genera una nueva población con tres individuos,
generados a partir de la aplicación de los operadores de recombinación de la
información de la población. (El operador de recombinación de la información por
mayoría es omitido)
Auxpop_To_Pop: Copia la población generada según el anterior método a la
población, reemplazando los peores individuos.
1.2.14 Clase EA
Implementa la clase algoritmo evolutivo, que indistintamente se puede instanciar en
algoritmo genético o estrategia evolutiva. Los métodos implementados:
Proyecto:
Entrenamiento de Redes Neuronales utilizando Algoritmos
Evolutivos y Combinaciones con Búsqueda Local.
Actualización:
19/09/2002 (Madrid)
Responsables: D. Enrique Alba Torres
D. Ignacio Reyes Moreno
Termination_Condition: Comprueba si la condición de terminación se ha
satisfecho.
Init: Inicializa EA y crea la población.
Step_Up: ejecuta una generación del ciclo reproductivo y comprueba la condición
de terminación.
Main_Loop: Ejecuta el bucle principal del algoritmo evolutivo un número de
veces indicado por el parámetro del método.
Set_Solution_Fitness: Fija la solución si es conocida.
Get_Current_Generation: Consulta la generación actual en la que se
encuentra el algoritmo evolutivo.
Print_All: Imprime todas las estadísticas tanto en pantalla como en archivo.
Print_train_result: Imprime los resultados del entrenamiento en pantalla.
Print_test_result: Imprime los resultados de la fase de test en pantalla.
Print_In_File: Habilita la escritura en archivo.
Set_Type_Output: Habilita el tipo de salida en pantalla.
1.2.15 Clase Bipoes
Encargada de implementar un algoritmo evolutivo con dos poblaciones. Los métodos
de los que se dispone:
Init: inicializa los dos algoritmos de que consta la clase: el explotador y el
explorador.
Set_Solution_Fitness: Permite fijar la solución al problema, si es que la
conocemos.
Termination_Condition: Comprueba si se sastisface la condición de
terminación.
Proyecto:
Entrenamiento de Redes Neuronales utilizando Algoritmos
Evolutivos y Combinaciones con Búsqueda Local.
Actualización:
19/09/2002 (Madrid)
Responsables: D. Enrique Alba Torres
D. Ignacio Reyes Moreno
Get_Solution_Fitness: Consultamos el fitness solución.
Scheduler: Ejecuta el planificador de los dos algoritmos.
Execute_ae1: Ejecuta la hebra del algoritmo explorador.
Execute_ae2: Ejecuta la hebra del algoritmo explotador.
Restart_Condition: Comprueba si es necesario reiniciar el proceso de
búsqueda.
Reset_Pop: Genera una nueva población.
Además de los métodos ya descritos, se dispone de otros encargados de llevar a cabo la
entrada/salida, que son los mismos desde el punto de vista semántico a los vistos en la clase
EA.