|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectec.Evolve
public class Evolve
Evolve is the main entry class for an evolutionary computation run.
An EC run is done with one of two argument formats:
java ec.Evolve -file parameter_file [-p parameter=value]*
This starts a new evolutionary run, using the parameter file parameter_file. The user can provide optional overriding parameters on the command-line with the -p option.
java ec.Evolve -checkpoint checkpoint_file
This starts up an evolutionary run from a previous checkpoint file.
The basic Evolve class has a main() loop with a simple job iteration facility. If you'd like to run the evolutionary system four times, each with a different random seed, you might do:
java ec.Evolve -file parameter_file -p jobs=4
Here, Evolve will run the first time with the random seed equal to whatever's specified in your file, then job#2 will be run with the seed + 1, job#3 with the seed + 2, and job#4 with the seed + 3. If you have multiple seeds, ECJ will try to make sure they're all different even across jobs by adding the job number * numberOfSeeds to each of them. This means that if you're doing multiple jobs with multiple seeds, you should probably set seed.0 to x, seed.1 to x+1, seed.2 to x+2, etc. for best results. It also works if seed.0 is x, seed.1 is y (a number much bigger than x), seed.2 is z (a number much bigger than y) etc. If you set seed.0=time etc. for multiple jobs, the values of each seed will be set to the current time that the job starts plus the job number * numberOfSeeds. As current time always goes up, this shouldn't be an issue. However it's theoretically possible that if you checkpoint and restart on another system with a clock set back in time, you could get the same seed in a later job.
main() has been designed to be modified. The comments for the Evolve.java file contain a lot discussion of how ECJ's main() bootstraps the EvolutionState object and runs it, plus a much simpler example of main() and explanations for how main() works.
Parameters
jobs int >= 1 (default) | (The number of jobs to iterate. The current job number (0...jobs-1) will be added to each seed UNLESS the seed is loaded from the system time. The job number also gets added as a prefix (if the number of jobs is more than 1)). |
nostore bool = true or false (default) |
(should the ec.util.Output facility not store announcements in memory?) |
flush bool = true or false (default) |
(should I flush all output as soon as it's printed (useful for debugging when an exception occurs)) |
evalthreads int >= 1 |
(the number of threads to spawn for evaluation) |
breedthreads int >= 1 |
(the number of threads to spawn for breeding) |
seed.n int != 0, or string = time |
(the seed for random number generator #n. n should range from 0 to Max(evalthreads,breedthreads)-1. If value is time, then the seed is based on the system clock plus n.) |
state classname, inherits and != ec.EvolutionState |
(the EvolutionState object class) |
print-accessed-params bool = true or false (default) |
(at the end of a run, do we print out a list of all the parameters requested during the run?) |
print-used-params bool = true or false (default) |
(at the end of a run, do we print out a list of all the parameters actually used during the run?) |
print-unaccessed-params bool = true or false (default) |
(at the end of a run, do we print out a list of all the parameters NOT requested during the run?) |
print-unused-params bool = true or false (default) |
(at the end of a run, do we print out a list of all the parameters NOT actually used during the run?) |
print-all-params bool = true or false (default) |
(at the end of a run, do we print out a list of all the parameters stored in the parameter database?) |
Field Summary | |
---|---|
static java.lang.String |
A_CHECKPOINT
The argument indicating that we're starting up from a checkpoint file. |
static java.lang.String |
A_FILE
The argument indicating that we're starting fresh from a new parameter file. |
static java.lang.String |
P_BREEDTHREADS
breedthreads parameter |
static java.lang.String |
P_EVALTHREADS
evalthreads parameter |
static java.lang.String |
P_PRINTACCESSEDPARAMETERS
|
static java.lang.String |
P_PRINTALLPARAMETERS
|
static java.lang.String |
P_PRINTUNACCESSEDPARAMETERS
|
static java.lang.String |
P_PRINTUNUSEDPARAMETERS
|
static java.lang.String |
P_PRINTUSEDPARAMETERS
|
static java.lang.String |
P_SEED
seed parameter |
static java.lang.String |
P_STATE
state parameter |
static java.lang.String |
V_SEED_TIME
'time' seed parameter value |
static java.lang.String |
V_THREADS_AUTO
'auto' thread parameter value |
Constructor Summary | |
---|---|
Evolve()
|
Method Summary | |
---|---|
static void |
cleanup(EvolutionState state)
Begins a fresh evolutionary run with a given state. |
static int |
determineSeed(Output output,
ParameterDatabase parameters,
Parameter seedParameter,
long currentTime,
int offset,
boolean auto)
Loads a random generator seed. |
static int |
determineThreads(Output output,
ParameterDatabase parameters,
Parameter threadParameter)
Loads the number of threads. |
static EvolutionState |
initialize(ParameterDatabase parameters,
int randomSeedOffset)
Initializes an evolutionary run given the parameters and a random seed adjustment (added to each random seed). |
static EvolutionState |
initialize(ParameterDatabase parameters,
int randomSeedOffset,
Output output)
Initializes an evolutionary run given the parameters and a random seed adjustment (added to each random seed), with the Output pre-constructed. |
static ParameterDatabase |
loadParameterDatabase(java.lang.String[] args)
Loads a ParameterDatabase from checkpoint if "-params" is in the command-line arguments. |
static void |
main(java.lang.String[] args)
Top-level evolutionary loop. |
static EvolutionState |
possiblyRestoreFromCheckpoint(java.lang.String[] args)
Restores an EvolutionState from checkpoint if "-checkpoint FILENAME" is in the command-line arguments. |
static MersenneTwisterFast |
primeGenerator(MersenneTwisterFast generator)
Primes the generator. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final java.lang.String P_PRINTACCESSEDPARAMETERS
public static final java.lang.String P_PRINTUSEDPARAMETERS
public static final java.lang.String P_PRINTALLPARAMETERS
public static final java.lang.String P_PRINTUNUSEDPARAMETERS
public static final java.lang.String P_PRINTUNACCESSEDPARAMETERS
public static final java.lang.String A_CHECKPOINT
public static final java.lang.String A_FILE
public static final java.lang.String P_EVALTHREADS
public static final java.lang.String P_BREEDTHREADS
public static final java.lang.String P_SEED
public static final java.lang.String V_SEED_TIME
public static final java.lang.String P_STATE
public static final java.lang.String V_THREADS_AUTO
Constructor Detail |
---|
public Evolve()
Method Detail |
---|
public static EvolutionState possiblyRestoreFromCheckpoint(java.lang.String[] args)
public static ParameterDatabase loadParameterDatabase(java.lang.String[] args)
public static int determineThreads(Output output, ParameterDatabase parameters, Parameter threadParameter)
public static MersenneTwisterFast primeGenerator(MersenneTwisterFast generator)
public static int determineSeed(Output output, ParameterDatabase parameters, Parameter seedParameter, long currentTime, int offset, boolean auto)
public static EvolutionState initialize(ParameterDatabase parameters, int randomSeedOffset)
public static EvolutionState initialize(ParameterDatabase parameters, int randomSeedOffset, Output output)
public static void cleanup(EvolutionState state)
public static void main(java.lang.String[] args)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |