public abstract class PushProblem extends GPProblem
Commonly you'd also set up the interpreter's data stacks with some initial data, then after running the program you might inspect the stacks to determine the return value. PushProblem also contains some helpful methods to make it easy for you to set up and modify these stacks.
Constructor and Description |
---|
PushProblem() |
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
clone()
Creates a new individual cloned from a prototype,
and suitable to begin use in its own evolutionary
context.
|
void |
executeProgram(org.spiderland.Psh.Program program,
org.spiderland.Psh.Interpreter interpreter,
int maxSteps)
Executes the given program for up to maxSteps steps.
|
org.spiderland.Psh.Interpreter |
getInterpreter(EvolutionState state,
GPIndividual ind,
int threadnum)
Builds a Push Interpreter suitable for interpreting the Program given in getProgram().
|
org.spiderland.Psh.Program |
getProgram(EvolutionState state,
GPIndividual ind)
Produces a Push Program from the provided GP Individual's tree.
|
boolean |
isFloatStackEmpty(org.spiderland.Psh.Interpreter interpreter)
Tests to see if the interpreter's float stack is empty.
|
boolean |
isIntStackEmpty(org.spiderland.Psh.Interpreter interpreter)
Tests to see if the interpreter's int stack is empty.
|
void |
pushOntoFloatStack(org.spiderland.Psh.Interpreter interpreter,
float val)
Pushes a value onto the top of the float stack of the interpreter.
|
void |
pushOntoIntStack(org.spiderland.Psh.Interpreter interpreter,
int val)
Pushes a value onto the top of the int stack of the interpreter.
|
void |
resetInterpreter(org.spiderland.Psh.Interpreter interpreter)
Clears the Interpreter's stacks so it is ready to execute another program.
|
float |
topOfFloatStack(org.spiderland.Psh.Interpreter interpreter)
Returns the top of the interpreter's float stack.
|
int |
topOfIntStack(org.spiderland.Psh.Interpreter interpreter)
Returns the top of the interpreter's int stack.
|
defaultBase, setup
canEvaluate, closeContacts, describe, describe, finishEvaluating, initializeContacts, prepareToEvaluate, reinitializeContacts
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
describe, evaluate
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;
}
public org.spiderland.Psh.Program getProgram(EvolutionState state, GPIndividual ind)
public org.spiderland.Psh.Interpreter getInterpreter(EvolutionState state, GPIndividual ind, int threadnum)
public void executeProgram(org.spiderland.Psh.Program program, org.spiderland.Psh.Interpreter interpreter, int maxSteps)
public void resetInterpreter(org.spiderland.Psh.Interpreter interpreter)
public void pushOntoFloatStack(org.spiderland.Psh.Interpreter interpreter, float val)
public void pushOntoIntStack(org.spiderland.Psh.Interpreter interpreter, int val)
public boolean isFloatStackEmpty(org.spiderland.Psh.Interpreter interpreter)
public boolean isIntStackEmpty(org.spiderland.Psh.Interpreter interpreter)
public float topOfFloatStack(org.spiderland.Psh.Interpreter interpreter)
public int topOfIntStack(org.spiderland.Psh.Interpreter interpreter)