Class InterPopulationExchange
- All Implemented Interfaces:
Setup,Singleton,Serializable
InterPopulationExchange has a topology which is similar to the one used by IslandExchange. Every few generations, a subpopulation will send some number of individuals to other subpopulations. Since all subpopulations evolve at the same generational speed, this is a synchronous procedure (IslandExchange instead is asynchronous by default, though you can change it to synchronous).
Individuals are sent from a subpopulation prior to breeding. They are stored in a waiting area until after all subpopulations have bred; thereafter they are added into the new subpopulation. This means that the subpopulation order doesn't matter. Also note that it means that some individuals will be created during breeding, and immediately killed to make way for the migrants. A little wasteful, we know, but it's simpler that way.
Parameters
| base.chatty boolean, default = true |
Should we be verbose or silent about our exchanges? |
Note: For each subpopulation in your population, there must be one exch.subpop... declaration set.
| base.subpop.n.select classname, inherits and != ec.SelectionMethod |
The selection method used by subpopulation #n for picking migrants to emigrate to other subpopulations. If not set, uses the default parameter below. |
| base.select classname, inherits and != ec.SelectionMethod |
server: Default parameter: the selection method used by a given subpopulation for picking migrants to emigrate to other subpopulations. |
| base.subpop.n.select-to-die classname, inherits and != ec.SelectionMethod (Default is random selection) |
The selection method used by subpopulation #n for picking individuals to be replaced by migrants. If not set, uses the default parameter below. |
| base.select-to-die classname, inherits and != ec.SelectionMethod (Default is random selection) |
server: Default parameter: the selection method used by a given subpopulation for picking individuals to be replaced by migrants. |
| base.subpop.n.mod int >= 1 |
The number of generations that subpopulation #n waits between sending emigrants. If not set, uses the default parameter below. |
| base.mod int >= 1 |
server: Default parameter: the number of generations that a given subpopulation waits between sending emigrants. |
| base.subpop.n.start int >= 0 |
The generation when subpopulation #n begins sending emigrants. If not set, uses the default parameter below. |
| base.start int >= 0 |
server: Default parameter: the generation when a given subpopulation begins sending emigrants. |
| base.subpop.n.size int >= 0 |
The number of emigrants sent at one time by generation #n. If not set, uses the default parameter below. |
| base.subpop.n.num-dest int >= 0 |
The number of destination subpopulations for this subpopulation. |
| base.subpop.n.dest.m int >= 0 |
Subpopulation #n's destination #m is this subpopulation. |
Parameter bases
| base.subpop.n.select | selection method for subpopulation #n's migrants |
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionMy parameter base -- I need to keep this in order to help the server reinitialize contactsbooleanstatic final StringWhether or not we're chattystatic final StringThe prefix for destinationsstatic final StringThe number of destinations from current islandstatic final StringThe parameter for the modulo (how many generations should pass between consecutive sendings of individualsstatic final StringHow many generations to pass at the beginning of the evolution before the first emigration from the current subpopulationstatic final StringThe selection method for sending individuals to other islandsstatic final StringThe selection method for deciding individuals to be replaced by immigrantsstatic final StringThe number of emigrants to be sentstatic final StringThe subpopulation delimiter -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidcloseContacts(EvolutionState state, int result) Closes contacts with other processes, if that's what you're doing.voidinitializeContacts(EvolutionState state) Initializes contacts with other processes, if that's what you're doing.Performs exchanges after the population has been bred but before it has been evaluated, once every generation (or pseudogeneration).Performs exchanges after the population has been evaluated but before it has been bred, once every generation (or pseudogeneration).voidInitializes contacts with other processes, if that's what you're doing.runComplete(EvolutionState state) Called after preBreedingExchangePopulation(...) to evaluate whether or not the exchanger wishes the run to shut down (with ec.EvolutionState.R_FAILURE).voidsetup(EvolutionState state, Parameter _base) Sets up the object by reading it from the parameters stored in state, built off of the parameter base base.
-
Field Details
-
P_SUBPOP
The subpopulation delimiter- See Also:
-
P_MODULO
The parameter for the modulo (how many generations should pass between consecutive sendings of individuals- See Also:
-
P_SIZE
The number of emigrants to be sent- See Also:
-
P_OFFSET
How many generations to pass at the beginning of the evolution before the first emigration from the current subpopulation- See Also:
-
P_DEST_FOR_SUBPOP
The number of destinations from current island- See Also:
-
P_DEST
The prefix for destinations- See Also:
-
P_SELECT_METHOD
The selection method for sending individuals to other islands- See Also:
-
P_SELECT_TO_DIE_METHOD
The selection method for deciding individuals to be replaced by immigrants- See Also:
-
P_CHATTY
Whether or not we're chatty- See Also:
-
base
My parameter base -- I need to keep this in order to help the server reinitialize contacts -
chatty
public boolean chatty
-
-
Constructor Details
-
InterPopulationExchange
public InterPopulationExchange()
-
-
Method Details
-
setup
Description copied from interface:SetupSets up the object by reading it from the parameters stored in state, built off of the parameter base base. If an ancestor implements this method, be sure to call super.setup(state,base); before you do anything else. -
initializeContacts
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. It doesn't do anything, as this exchanger works on only 1 computer.- Overrides:
initializeContactsin classExchanger
-
reinitializeContacts
Initializes contacts with other processes, if that's what you're doing. Called after restarting from a checkpoint. It doesn't do anything, as this exchanger works on only 1 computer.- Overrides:
reinitializeContactsin classExchanger
-
preBreedingExchangePopulation
Description copied from class:ExchangerPerforms exchanges after the population has been evaluated but before it has been bred, once every generation (or pseudogeneration).- Specified by:
preBreedingExchangePopulationin classExchanger
-
postBreedingExchangePopulation
Description copied from class:ExchangerPerforms exchanges after the population has been bred but before it has been evaluated, once every generation (or pseudogeneration).- Specified by:
postBreedingExchangePopulationin classExchanger
-
runComplete
Called after preBreedingExchangePopulation(...) to evaluate whether or not the exchanger wishes the run to shut down (with ec.EvolutionState.R_FAILURE). 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. This function does not return a String as soon as it wants to exit (another island found the perfect individual, or couldn't connect to the server). Instead, it sets a flag, called message, to remember next time to exit. This is due to a need for a graceful shutdown, where checkpoints are working properly and save all needed information.- Specified by:
runCompletein classExchanger
-
closeContacts
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.- Overrides:
closeContactsin classExchanger
-