|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectec.Problem
ec.gp.ge.GEProblem
public class GEProblem
GEProblem is a special replacement for Problem which performs GE mapping. You do not subclass from GEProblem. Rather, create a GPProblem subclass and set it to be the 'problem' parameter of the GEProblem. The GEProblem will convert the GEIndividual into a GPIndividual, then pass this GPIndividual to the GPProblem to be evaluated.
The procedure is as follows. Let's say your GPProblem is the Artificial Ant problem. Instead of saying...
eval.problem = ec.app.ant.Ant
eval.problem = ec.app.ant.Ant
eval.problem.data = ec.app.ant.AntData
eval.problem.moves = 400
eval.problem.file = santafe.trl
... you instead make your problem a GEProblem like this:
eval.problem = ec.gp.ge.GEProblem
... and then you hang the Ant problem, and all its subsidiary data, as the 'problem' parameter from the GEProblem like so:
eval.problem.problem = ec.app.ant.Ant
eval.problem.problem.data = ec.app.ant.AntData
eval.problem.problem.moves = 400
eval.problem.problem.file = santafe.trl
Everything else should be handled for you. GEProblem is also compatible with the MasterProblem procedure for distributed evaluation, and is also both a SimpleProblemForm and a GroupedProblemForm. We've got you covered.
Parameters
base.problem classname, inherits from GPProblem |
(The GPProblem which actually performs the evaluation of the mapped GPIndividual) |
Field Summary | |
---|---|
static java.lang.String |
P_PROBLEM
|
GPProblem |
problem
|
Constructor Summary | |
---|---|
GEProblem()
|
Method Summary | |
---|---|
boolean |
canEvaluate()
Asynchronous Steady-State EC only: Returns true if the problem is ready to evaluate. |
java.lang.Object |
clone()
Creates a new individual cloned from a prototype, and suitable to begin use in its own evolutionary context. |
void |
closeContacts(EvolutionState state,
int result)
Called to shut down remote evaluation network contacts when the run is completed. |
void |
describe(EvolutionState state,
Individual ind,
int subpopulation,
int threadnum,
int log)
Part of SimpleProblemForm. |
void |
evaluate(EvolutionState state,
Individual[] ind,
boolean[] updateFitness,
boolean countVictoriesOnly,
int[] subpops,
int threadnum)
Default version assumes that every individual is a GEIndividual. |
void |
evaluate(EvolutionState state,
Individual ind,
int subpopulation,
int threadnum)
Evaluates the individual in ind, if necessary (perhaps not evaluating them if their evaluated flags are true), and sets their fitness appropriately. |
void |
finishEvaluating(EvolutionState state,
int threadnum)
Will be called by the Evaluator after prepareToEvaluate(...) is called and then a series of individuals are evaluated. |
void |
initializeContacts(EvolutionState state)
Called to set up remote evaluation network contacts when the run is started. |
void |
postprocessPopulation(EvolutionState state,
Population pop,
boolean countVictoriesOnly)
Finish processing the population (such as fitness information) after evaluation. |
void |
prepareToEvaluate(EvolutionState state,
int threadnum)
May be called by the Evaluator prior to a series of individuals to evaluate, and then ended with a finishEvaluating(...). |
void |
preprocessPopulation(EvolutionState state,
Population pop,
boolean countVictoriesOnly)
Set up the population pop (such as fitness information) prior to evaluation. |
void |
reinitializeContacts(EvolutionState state)
Called to reinitialize remote evaluation network contacts when the run is restarted from checkpoint. |
void |
setup(EvolutionState state,
Parameter base)
Sets up the object by reading it from the parameters stored in state, built off of the parameter base base. |
Methods inherited from class ec.Problem |
---|
defaultBase, describe |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final java.lang.String P_PROBLEM
public GPProblem problem
Constructor Detail |
---|
public GEProblem()
Method Detail |
---|
public void setup(EvolutionState state, Parameter base)
Prototype
For prototypes, setup(...) is typically called once for the prototype instance; cloned instances do not receive the setup(...) call. setup(...) may be called more than once; the only guarantee is that it will get called at least once on an instance or some "parent" object from which it was ultimately cloned.
setup
in interface Prototype
setup
in interface Setup
setup
in class Problem
public java.lang.Object clone()
Prototype
Typically this should be a full "deep" clone. However, you may share certain elements with other objects rather than clone hem, depending on the situation:
Implementations.
public Object clone()
{
try
{
return super.clone();
}
catch ((CloneNotSupportedException e)
{ throw new InternalError(); } // never happens
}
public Object clone()
{
try
{
MyObject myobj = (MyObject) (super.clone());
// put your deep-cloning code here...
}
catch ((CloneNotSupportedException e)
{ throw new InternalError(); } // never happens
return myobj;
}
public Object clone()
{
MyObject myobj = (MyObject) (super.clone());
// put your deep-cloning code here...
return myobj;
}
clone
in interface Prototype
clone
in class Problem
public void prepareToEvaluate(EvolutionState state, int threadnum)
Problem
prepareToEvaluate
in class Problem
public void finishEvaluating(EvolutionState state, int threadnum)
Problem
finishEvaluating
in class Problem
public void initializeContacts(EvolutionState state)
Problem
initializeContacts
in class Problem
public void reinitializeContacts(EvolutionState state)
Problem
reinitializeContacts
in class Problem
public void closeContacts(EvolutionState state, int result)
Problem
closeContacts
in class Problem
public boolean canEvaluate()
Problem
canEvaluate
in class Problem
public void preprocessPopulation(EvolutionState state, Population pop, boolean countVictoriesOnly)
GroupedProblemForm
countVictoriesOnly will be set if Individuals' fitness is to be based on whether they're the winner of a test, instead of based on the specifics of the scores in the tests. This really only happens for Single-Elimination Tournament one-population competitive coevolution.
preprocessPopulation
in interface GroupedProblemForm
public void postprocessPopulation(EvolutionState state, Population pop, boolean countVictoriesOnly)
GroupedProblemForm
countVictoriesOnly will be set if Individuals' fitness is to be based on whether they're the winner of a test, instead of based on the specifics of the scores in the tests. This really only happens for Single-Elimination Tournament one-population competitive coevolution. If this is set, probably would leave the Fitnesses as they are here (they've been set and incremented in evaluate(...)), but if it's not set, you may want to set the Fitnesses to the maximum or average or the various trials performed.
postprocessPopulation
in interface GroupedProblemForm
public void evaluate(EvolutionState state, Individual[] ind, boolean[] updateFitness, boolean countVictoriesOnly, int[] subpops, int threadnum)
evaluate
in interface GroupedProblemForm
public void evaluate(EvolutionState state, Individual ind, int subpopulation, int threadnum)
SimpleProblemForm
evaluate
in interface SimpleProblemForm
public void describe(EvolutionState state, Individual ind, int subpopulation, int threadnum, int log)
Problem
describe
in interface SimpleProblemForm
describe
in class Problem
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |