Rodrigo, the GE code in ECJ is fairly new and less well tested than the GP code. We think it's not too bad but if you come across oddities, do let us know. Sean On Jan 26, 2013, at 2:06 PM, Rodrigo Barros wrote: > Sorry about that! =D > > On 26 January 2013 19:03, Sean Luke <[log in to unmask]> wrote: >> Well that was easy! :-) >> >> Sean >> >> On Jan 26, 2013, at 12:07 PM, Rodrigo Barros wrote: >> >>> I figured it out by myself. Thanks anyway! =) >>> >>> On 26 January 2013 16:18, Rodrigo Barros <[log in to unmask]> wrote: >>>> Hi, >>>> I'm implementing a GE system to evolve functions for regression. >>>> One of my non-terminals is an if-then-else function. My grammar looks like this: >>>> >>>> <start>::= <exp> >>>> <exp>::= (* <coef> <var>) | (/ <coef> <var>) | (+ <coef> <var>) | (- >>>> <coef> <var>) | <var> >>>> <exp>::= (+ <exp> <exp>) | (- <exp> <exp>) | (* <exp> <exp>) | (/ >>>> <exp> <exp>) | (^ <exp> <int>) >>>> <exp>::= (log <exp>) | (cos <exp>) | (sin <exp>) >>>> <exp>::= (if <bool> <exp> <exp>) >>>> <bool>::= (gt <exp> <exp>) | (gteq <exp> <exp>) | (sm <exp> <exp>) | >>>> (smeq <exp> <exp>) | (eq <exp> <exp>) | (neq <exp> <exp>) >>>> <coef>::= (RealNumber) | <int> >>>> <int>::= (IntegerNumber) >>>> <var>::= (Att) >>>> >>>> And my GPData has two attributes: a boolean value and a double value. >>>> My implementation of the if-then-else rule is: >>>> >>>> public void eval(final EvolutionState state,final int thread,final >>>> GPData input,final ADFStack stack,final GPIndividual individual,final >>>> Problem problem) >>>> { >>>> boolean result; >>>> GEData data = ((GEData)(input)); >>>> children[0].eval(state,thread,input,stack,individual,problem); >>>> result = data.bool; >>>> if(result){ >>>> children[1].eval(state,thread,input,stack,individual,problem); >>>> } >>>> else{ >>>> children[2].eval(state,thread,input,stack,individual,problem); >>>> } >>>> } >>>> >>>> For some reason, I'm getting the following error: >>>> "Incorrect number of children for node if at >>>> pop.subpop.0.species.gp-species.ind" >>>> >>>> Though I'm pretty sure I configured correctly the rule in the parameters file: >>>> gp.fs.0.func.17 = seege.If >>>> gp.fs.0.func.17.nc = nc3 >>>> >>>> Do you have any idea why the If-then-else rule is supposedly receiving >>>> the wrong number of children (different from 3)? I don't know what >>>> else to try. >>>> >>>> Thank you in advance, >>>> >>>> Rodrigo >>>> >>>> >>>> >>>> -- >>>> Rodrigo Coelho Barros, MSc. >>>> PhD Candidate >>>> Bioinspired Computation Laboratory (BioCom) >>>> Department of Computer Science >>>> University of São Paulo at São Carlos (ICMC-USP) >>>> >>>> www.icmc.usp.br/~rcbarros >>>> e-mail (1): [log in to unmask] >>>> e-mail (2): [log in to unmask] >>>> e-mail (3): [log in to unmask] >>>> >>>> mobile: +44 75 7227 4565 >>> >>> >>> >>> -- >>> Rodrigo Coelho Barros, MSc. >>> PhD Candidate >>> Bioinspired Computation Laboratory (BioCom) >>> Department of Computer Science >>> University of São Paulo at São Carlos (ICMC-USP) >>> >>> www.icmc.usp.br/~rcbarros >>> e-mail (1): [log in to unmask] >>> e-mail (2): [log in to unmask] >>> e-mail (3): [log in to unmask] >>> >>> mobile: +44 75 7227 4565 > > > > -- > Rodrigo Coelho Barros, MSc. > PhD Candidate > Bioinspired Computation Laboratory (BioCom) > Department of Computer Science > University of São Paulo at São Carlos (ICMC-USP) > > www.icmc.usp.br/~rcbarros > e-mail (1): [log in to unmask] > e-mail (2): [log in to unmask] > e-mail (3): [log in to unmask] > > mobile: +44 75 7227 4565