ec
Class Exchanger

java.lang.Object
  extended by ec.Exchanger
All Implemented Interfaces:
Setup, Singleton, java.io.Serializable
Direct Known Subclasses:
InterPopulationExchange, IslandExchange, SimpleExchanger

public abstract class Exchanger
extends java.lang.Object
implements Singleton

The Exchanger is a singleton object whose job is to (optionally) perform individual exchanges between subpopulations in the run, or exchange individuals with other concurrent evolutionary run processes, using sockets or whatever. Keep in mind that other processes may go down, or be started up from checkpoints, etc.

Version:
1.0
Author:
Sean Luke
See Also:
Serialized Form

Constructor Summary
Exchanger()
           
 
Method Summary
abstract  void closeContacts(EvolutionState state, int result)
          Closes contacts with other processes, if that's what you're doing.
abstract  void initializeContacts(EvolutionState state)
          Initializes contacts with other processes, if that's what you're doing.
abstract  Population postBreedingExchangePopulation(EvolutionState state)
          Performs exchanges after the population has been bred but before it has been evaluated, once every generation (or pseudogeneration).
abstract  Population preBreedingExchangePopulation(EvolutionState state)
          Performs exchanges after the population has been evaluated but before it has been bred, once every generation (or pseudogeneration).
abstract  void reinitializeContacts(EvolutionState state)
          Initializes contacts with other processes, if that's what you're doing.
abstract  java.lang.String runComplete(EvolutionState state)
          Called after preBreedingExchangePopulation(...) to evaluate whether or not the exchanger wishes the run to shut down (with ec.EvolutionState.R_FAILURE) -- returns a String (which will be printed out as a message) if the exchanger wants to shut down, else returns null if the exchanger does NOT want to shut down.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface ec.Setup
setup
 

Constructor Detail

Exchanger

public Exchanger()
Method Detail

initializeContacts

public abstract void initializeContacts(EvolutionState state)
Initializes contacts with other processes, if that's what you're doing. Called at the beginning of an evolutionary run, before a population is set up.


reinitializeContacts

public abstract void reinitializeContacts(EvolutionState state)
Initializes contacts with other processes, if that's what you're doing. Called after restarting from a checkpoint.


preBreedingExchangePopulation

public abstract Population preBreedingExchangePopulation(EvolutionState state)
Performs exchanges after the population has been evaluated but before it has been bred, once every generation (or pseudogeneration).


postBreedingExchangePopulation

public abstract Population postBreedingExchangePopulation(EvolutionState state)
Performs exchanges after the population has been bred but before it has been evaluated, once every generation (or pseudogeneration).


runComplete

public abstract java.lang.String runComplete(EvolutionState state)
Called after preBreedingExchangePopulation(...) to evaluate whether or not the exchanger wishes the run to shut down (with ec.EvolutionState.R_FAILURE) -- returns a String (which will be printed out as a message) if the exchanger wants to shut down, else returns null if the exchanger does NOT want to shut down. Why would you want to shut down? This would happen for two reasons. First, another process might have found an ideal individual and the global run is now over. Second, some network or operating system error may have occurred and the system needs to be shut down gracefully. Note that if the exchanger wants to shut down, the system will shut down REGARDLESS of whether or not the user stated ec.EvolutionState.quitOnRunComplete.


closeContacts

public abstract void closeContacts(EvolutionState state,
                                   int result)
Closes contacts with other processes, if that's what you're doing. Called at the end of an evolutionary run. result is either ec.EvolutionState.R_SUCCESS or ec.EvolutionState.R_FAILURE, indicating whether or not an ideal individual was found.