com.brownsoft.ag
Class MotorAG

java.lang.Object
  |
  +--com.brownsoft.ag.MotorAG

public class MotorAG
extends java.lang.Object

Esta clase implementa el algorítmo genético propiamente dicho

Version:
1.0
Author:
Gustavo Brown

Constructor Summary
MotorAG(IGeneracion generacion, ISeleccion seleccion, ICruzamiento cruzamiento, IMutacion mutacion)
          Constructor
 
Method Summary
 void addListener(IMotorListener listener)
          Agrega un listener de eventos del motor
 void clearFitnesses()
          Elimina el Hashtable de fitnesses, para que se vuelvan a calcular nuevamente
protected  void fireFinAlgoritmo()
          Dispara el evento de fin del algoritmo
protected  void fireFinIteracion()
          Dispara el evento de fin de iteracion
protected  void fireInicioIteracion()
          Dispara el evento de inicio de iteracion
 IIndividuo getBestIndividuo()
          Obtiene el mejor individuo de esta iteración
 double getFitness(IIndividuo individuo)
          Obtiene el fitness escalado de este individuo.
 java.util.Hashtable getFitnessMapping()
          Obtiene el Hashtable con los mapeos IIndividuo<-->Double(fitness)
 IGeneracion getGeneracion()
          Obtiene el IGeneracion de esta instancia
 double getNonScaledFitness(IIndividuo individuo)
          Obtiene el fitness de un individuo sin escalar.
 ICruzamiento getOperadorCruzamiento()
          Obtiene el operador de cruzamiento de esta instancia
 IMutacion getOperadorMutacion()
          Obtiene el operador de mutacion de esta instancia
 ISeleccion getOperadorSeleccion()
          Obtiene el operador de seleccion de esta instancia
 java.util.Vector getPoblacion()
          Obtiene un Vector con la poblacion actual
 int getTotIteraciones()
          Obtiene la cantidad total de iteraciones realizadas por este motor
 void iterar()
          Itera hasta que la condicion de parada se cumpla
 void iterar(int cantIteraciones)
          Itera una cantidad fija de veces el AG
 boolean iterarOnce()
          Itera una vez el algoritmo
 void removeListener(IMotorListener listener)
          Elimina un listener del motoro
 void setFitnessScaler(FitnessScaler fitnessScaler)
          Setea el FitnessScaler para este motor
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MotorAG

public MotorAG(IGeneracion generacion,
               ISeleccion seleccion,
               ICruzamiento cruzamiento,
               IMutacion mutacion)
Constructor

Parameters:
generacion - Genera la poblacion inicial
seleccion - Operador de seleccion
cruzamiento - Operador de cruzamiento
mutacion - Operador de mutacion
Method Detail

iterarOnce

public boolean iterarOnce()
                   throws MotorException
Itera una vez el algoritmo

Returns:
boolean true si la condicion de parada se ha cumplido
MotorException

iterar

public void iterar(int cantIteraciones)
            throws MotorException
Itera una cantidad fija de veces el AG

Parameters:
cantIteraciones - cantidad de veces a iterar
MotorException

iterar

public void iterar()
            throws MotorException
Itera hasta que la condicion de parada se cumpla

MotorException

getTotIteraciones

public int getTotIteraciones()
Obtiene la cantidad total de iteraciones realizadas por este motor

Returns:
cantidad total de iteraciones

getPoblacion

public java.util.Vector getPoblacion()
Obtiene un Vector con la poblacion actual

Returns:
Vector de IIndividuo con la población actual

getFitnessMapping

public java.util.Hashtable getFitnessMapping()
Obtiene el Hashtable con los mapeos IIndividuo<-->Double(fitness)

Returns:
Hashtable con los mapeos IIndividuo<-->Double(fitness)

getNonScaledFitness

public double getNonScaledFitness(IIndividuo individuo)
Obtiene el fitness de un individuo sin escalar. Solo lo calcula si es necesario

Parameters:
individuo - IIndividuo a obtener su fitness
Returns:
double con el fitness del individuo sin escalar

getFitness

public double getFitness(IIndividuo individuo)
Obtiene el fitness escalado de este individuo. Solo lo calcula si es necesario Para asignar un FitnessScaler se debe llamar a MotorAG.setFitnessScaler(IFitnessScaler) Si no hay ningun FitnessScaler asociado a este motor se retorna el fitness del individuo

Parameters:
individuo - IIndividuo a obtener su fitness
Returns:
double con el fitness escalado del individuo
See Also:
MotorAG.setFitnessScaler, IFitnessScaler

setFitnessScaler

public void setFitnessScaler(FitnessScaler fitnessScaler)
Setea el FitnessScaler para este motor


clearFitnesses

public void clearFitnesses()
Elimina el Hashtable de fitnesses, para que se vuelvan a calcular nuevamente


getBestIndividuo

public IIndividuo getBestIndividuo()
Obtiene el mejor individuo de esta iteración

Returns:
el mejor Individuo de esta iteración

addListener

public void addListener(IMotorListener listener)
Agrega un listener de eventos del motor

Parameters:
listener - El IMotorListener a agregar

removeListener

public void removeListener(IMotorListener listener)
Elimina un listener del motoro

Parameters:
listener - El IMotorListener a eliminar

fireInicioIteracion

protected void fireInicioIteracion()
Dispara el evento de inicio de iteracion


fireFinIteracion

protected void fireFinIteracion()
Dispara el evento de fin de iteracion


fireFinAlgoritmo

protected void fireFinAlgoritmo()
Dispara el evento de fin del algoritmo


getGeneracion

public IGeneracion getGeneracion()
Obtiene el IGeneracion de esta instancia

Returns:
IGeneracion de esta instancia

getOperadorSeleccion

public ISeleccion getOperadorSeleccion()
Obtiene el operador de seleccion de esta instancia

Returns:
ISeleccion de esta instancia

getOperadorCruzamiento

public ICruzamiento getOperadorCruzamiento()
Obtiene el operador de cruzamiento de esta instancia

Returns:
ICruzamiento de esta instancia

getOperadorMutacion

public IMutacion getOperadorMutacion()
Obtiene el operador de mutacion de esta instancia

Returns:
IMutacion de esta instancia