But, how do I do that? I mean, where do I check (in the code) that the individual generated does not fulfill the requirement of appearing every node at least once?
Thanks a lot.


2014-02-24 19:56 GMT+01:00 Xiaomeng Ye <[log in to unmask]>:
Or you can simply discard any non-conformed individuals, during any process (initialization, breeding). And keep generating new individuals until your population is filled with the individuals conforming to this rule.


On Mon, Feb 24, 2014 at 1:13 PM, Sean Luke <[log in to unmask]> wrote:
Francisco, ECJ can't do this by default: and I really have no idea how to require this constraint.  You'll have to either enforce this rule in the tree builder algorithm and/or the crossover mutation operators.  Alternatively you can assess the fitness of non-confirming individuals as very low.

Sean

On Feb 24, 2014, at 6:57 AM, Francisco Lopez de la Franca <[log in to unmask]> wrote:

> Hello.
>
> I am new in ECJ. I'm going to use ECJ to find the solution of a second degree equation, that is, x=(-b+sqrt(b^2-4ac))/(2a).
> I've implemented as FunctionSet the following nodes: add, sub, sqrt, square, mul, div, neg, a, b, c, 2 and 4.
> I've followed the instructions described both in the tutorial4 in the documentations provided with ECJ and the one in the ECJ manual.
>
> What I need and donot find the way, is to force to appear in the result tree the nodes: a, b, c, 2, 4, -, +, sqrt, square, div and mul. That is, to specify in some manner that the nodes must appear at least once. Moreover, I'd like to know if it is possible to set that one node must appear a number of times in the solution.
>
> I hope to have explained well.
>
> Thank you very much in advance.
>
> Regards.