Sean, The errata for GP Related Sections of ECJ Manual Version 0.2 (*fetched from "svn checkout http://ecj.googlecode.com/svn/trunk/" on 12/1/2010*) is enclosed with this mail as an MS Excel datasheet. I'm very glad to see that ECJ 20 is released. Thanks for your great work! Merry Christmas & best regards, Wei 2010/12/2 Sean Luke <[log in to unmask]> > Also, (sorry, pressed <send> too fast) if you *cannot* modify LaTeX, feel > free to send me suggested errata. I'm sure the manual's got a ton of errors > in it. Also note that I've just modified the manual to reflect new changes > I've made to the GP system coming up in response to the discussion we've had > below. > > Sean > > > On Dec 1, 2010, at 9:59 AM, Wei He wrote: > > Hi Sean, >> >> By your revision and some additional debugging on other cooperative >> classes, the code works as my intention now. I am very grateful for your >> help. >> >> BTW, what is your plan about the ECJ manual? >> I found some tiny spelling and typewriting errors in GP related chapters. >> Do you need a errata sheet for later update? >> >> Wei >> >> 2010/11/30 Sean Luke <[log in to unmask]> >> Wei, there are several basic Java errors in your class below. Here is a >> revised version which fixes them but I've not tested it. >> >> Sean >> >> >> >> public class MyData extends GPData { >> >> public char char_val; >> public Bike Bike_val = new Bike_val(); >> >> >> public Object clone() { >> MyData copy = (MyData) super.clone(); >> copy.Bike_val = (Bike) (Bike_val.clone()); >> return copy; >> >> } >> >> public GPData copyTo(GPData other) { >> ((MyData) other).char_val = char_val; >> other.Bike_val = (Bike) (Bike_val.clone()); >> return other; >> >> } >> } >> >> >> On Nov 30, 2010, at 4:16 AM, Wei He wrote: >> >> Hi Sean, >> >> I tried to implement MyData. But, NullPointerException was thrown when >> cloning the Bike_val which was used by the setup procedure of >> MyGPProblem(BikeTestDataGe). >> I mean: >> >> public class MyData extends GPData { >> >> public char char_val; >> public Bike Bike_val; >> >> @Override >> public Object clone() { >> MyData copy = (MyData) super.clone(); >> >> // do any additional initialization required for deep clone >> copy.Bike_val = (Bike) copy.Bike_val.clone(); // >> NullPointerException is thrown >> >> return copy; >> } >> >> @Override >> public GPData copyTo(GPData other) { >> ((MyData) other).char_val = char_val; >> >> return other; >> } >> } >> >> >> And the stacktrace is as follows, >> java.lang.NullPointerException >> at testdatagen.bike.gp.MyData.clone(MyData.java:24) >> at ec.gp.ADFContext.setup(ADFContext.java:135) >> at ec.gp.ADFStack.setup(ADFStack.java:113) >> at ec.gp.GPProblem.setup(GPProblem.java:81) >> at >> testdatagen.bike.gp.BikeTestDataGen.setup(BikeTestDataGen.java:56) >> at ec.Evaluator.setup(Evaluator.java:79) >> at ec.simple.SimpleEvaluator.setup(SimpleEvaluator.java:36) >> at ec.EvolutionState.setup(EvolutionState.java:313) >> at >> ec.simple.SimpleEvolutionState.startFresh(SimpleEvolutionState.java:50) >> at ec.EvolutionState.run(EvolutionState.java:360) >> at ec.Evolve.main(Evolve.java:655) >> >> >> It seemed that I didn't get you. Can you please little elaborate? >> >> Thanks, >> Wei >> >> >> >> 2010/11/29 Wei He <[log in to unmask]> >> Thanks for your advice. I'll have a try. >> >> Best regards, >> Wei >> >> >> 2010/11/25 Sean Luke <[log in to unmask]> >> On Nov 24, 2010, at 9:20 PM, Wei He wrote: >> >> >> In the STGP example of the manual, the val variable can store both boolean >> and real-valued data. However, in my case, the input from the child (char >> data) and the the result (Bike data) of a GPNode can not use the same val >> variable. Should I allocate different fields for them as below? >> >> public class MyData extends GPData { >> public char char_val; >> public Bike Bike_val; >> public GPData copyTo(GPData other) { >> ((MyData)other).char_val = char_val; >> ((MyData)other).Bike_val = Bike_val; >> return other; >> } >> } >> >> Sure, that's how I'd do it. However I would clone Bike_val rather than >> sharing the pointer. Also you'll need to implement the MyData.clone() >> method and in it clone the Bike. I should show that as an example in the >> manual. >> >> Now it may be the case that you have certain GPNodes which can accept >> EITHER a char or a Bike. In that case I would have an additional boolean >> which indicates which variable holds the real data. >> >> Sean >> >> >> >>