public class ADFContext extends java.lang.Object implements Prototype
adf contains the relevant ADF/ADM node. If it's an ADF function call, then arguments[] contains the evaluated arguments to the ADF. If it's an ADM function call, then arguments[] is set to false.
You set up the ADFContext object for a given ADF or ADM node with the prepareADF(...) and prepareADM(...) functions.
To evaluate an argument number from an ADFContext, call evaluate(...), and the results are evaluated and copied into input.
Modifier and Type | Field and Description |
---|---|
ADF |
adf
The ADF/ADM node proper
|
GPData[] |
arguments
An array of GPData nodes (none of the null, when it's used)
holding an ADF's arguments' return results
|
static java.lang.String |
P_ADFCONTEXT |
Constructor and Description |
---|
ADFContext() |
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.
|
Parameter |
defaultBase()
Returns the default base for this prototype.
|
void |
evaluate(EvolutionState state,
int thread,
GPData input,
ADFStack stack,
GPIndividual individual,
Problem problem,
int argument)
Evaluates the argument number in the current context
|
void |
prepareADF(ADF a,
GPProblem problem)
Increases arguments to accommodate space if necessary.
|
void |
prepareADM(ADM a)
Sets adf to a
|
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.
|
public static final java.lang.String P_ADFCONTEXT
public ADF adf
public GPData[] arguments
public Parameter defaultBase()
Prototype
defaultBase
in interface Prototype
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 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.
public void evaluate(EvolutionState state, int thread, GPData input, ADFStack stack, GPIndividual individual, Problem problem, int argument)
public final void prepareADF(ADF a, GPProblem problem)
public final void prepareADM(ADM a)