Peter: others have mentioned it, but I'll chime in. This is exactly
what ERC.java does. Check it out!
Your approach below will not work for you. Rather, it will create a
node which returns a different value every time it is called. Sort of
like the GP node equivalent of (random 10.0)
Sean
Peter Thieu wrote:
> Hi there
>
> i want leaves with a constant, i.e:
>
> public class Const extends GPNode
> {
> private int cValue;
> public String toString() { return Integer.toString(this.cValue);}
>
> public void checkConstraints(final EvolutionState state,
> final int tree,
> final GPIndividual typicalIndividual,
> final Parameter individualBase)
> {
> super.checkConstraints(state,tree,typicalIndividual,individualBase);
> if (children.length!=0)
> state.output.error("Incorrect number of children for node " +
> toStringForError() + " at " +
> individualBase);
> }
>
> public void eval(final EvolutionState state,
> final int thread,
> final GPData input,
> final ADFStack stack,
> final GPIndividual individual,
> final Problem problem)
> {
> DoubleData rd = ((DoubleData)(input));
> this.cValue = ((int)(state.random[thread].nextDouble()*10));
> rd.x = this.cValue;
> }
> }
>
> assuming it creates a tree like (x+2) * 3, where 2 and 3 leaves were
> produced by the class Const
>
> assuming this tree is passed to the next generation, will it be the same
> tree with the same constants (x+2) * 3, or will there be new constants
> values i.e. (x+4) * 5?
>
> kind regards
>
> Peter
