Print

Print


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
>>
>>
>>
>>