com.brownsoft.ag.fitnessScaler
Class FitnessScalerEspeciacion

java.lang.Object
  |
  +--com.brownsoft.ag.fitnessScaler.FitnessScaler
        |
        +--com.brownsoft.ag.fitnessScaler.FitnessScalerEspeciacion
All Implemented Interfaces:
IFitnessScaler

public class FitnessScalerEspeciacion
extends FitnessScaler

Este scaler implementa un algoritmo de nichos paralelos, como se describe en el libro de Goldberg(capitulo 5) El fitness se escala mediante la siguiente fórmula fitness_escalado = fitness_original/ Sum(s(d(xi, xj)) donde Sum denota sumatoria d indica distancia entre 2 individuos s indica la 'sharing function' que en este caso es triangular La funcion de sharing triangular es como sigue: sharing(distancia) = (sigmaShare - distancia) / sigmaShare y para distancias mayores que sigmaShare la funcion de sharing da 0 Este scaler solo funciona con individuos del tipo bitString

Version:
1.0
Author:
Gustavo Brown

Field Summary
(package private)  double sigmaShare
           
(package private)  java.util.Hashtable sumSigmaShare
           
 
Fields inherited from class com.brownsoft.ag.fitnessScaler.FitnessScaler
motor
 
Constructor Summary
FitnessScalerEspeciacion(IFitnessScaler parent, double sigmaShare)
          Constructor
 
Method Summary
protected  int getDistance(IndividuoBitStreamSimple individuo1, IndividuoBitStreamSimple individuo2)
          Obtiene la distancia entre 2 individuos
protected  double getSharing(int distance)
          Obtiene el sharing (es decir, le aplica la funcion de sharing a la distancia) La implementacion por defecto es un sharing triangular, pero se puede derivar esta clase para cambiar la función
 void inicioIteracion()
          Avisa que se inicia una nueva iteración
protected  double scaleFitness(double fitness)
          Este metodo debe ser definido por las subclases de FitnessScaler
protected  void setupSigmaShare(IndividuoBitStreamSimple individuo)
          Calcula el sigmaShare para un individuo
 
Methods inherited from class com.brownsoft.ag.fitnessScaler.FitnessScaler
fireInicioIteracion, getMotor, getProcessingIndividual, getScaledFitness, getScaledFitness, initScaler
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

sumSigmaShare

java.util.Hashtable sumSigmaShare

sigmaShare

double sigmaShare
Constructor Detail

FitnessScalerEspeciacion

public FitnessScalerEspeciacion(IFitnessScaler parent,
                                double sigmaShare)
Constructor

Parameters:
parent - El parent de este fitness scaler (o FitnessScalerSink)
sigmaShare - el sigma de la funcion de sharing medido en bits de distancia
Method Detail

scaleFitness

protected double scaleFitness(double fitness)
Este metodo debe ser definido por las subclases de FitnessScaler

Overrides:
scaleFitness in class FitnessScaler
Returns:
fitness escalado para que sea siempre positivo en este punto de la cadena

getDistance

protected int getDistance(IndividuoBitStreamSimple individuo1,
                          IndividuoBitStreamSimple individuo2)
Obtiene la distancia entre 2 individuos


getSharing

protected double getSharing(int distance)
Obtiene el sharing (es decir, le aplica la funcion de sharing a la distancia) La implementacion por defecto es un sharing triangular, pero se puede derivar esta clase para cambiar la función


setupSigmaShare

protected void setupSigmaShare(IndividuoBitStreamSimple individuo)
Calcula el sigmaShare para un individuo


inicioIteracion

public void inicioIteracion()
Avisa que se inicia una nueva iteración

Specified by:
inicioIteracion in interface IFitnessScaler
Overrides:
inicioIteracion in class FitnessScaler