Hi Peter,
Look at ERC.java. It implements ephemeral random constants, which
are almost what you are looking for. Some minor modificiations
should do the trick.
Keith
On Oct 1, 2008, at 5:55 AM, 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
