Hello Norzila, 

Okay, now I think I understand.  I see that in ECJ 25, changing app/moosuite/moosuite.params to use spea2 causes the various examples (zdt1, etc) to issue a NullPointerException in SPEA2Breeder.setup().  You attempted to fix the bug in SPEA2Breeder, and that is when you started receiving the ArrayIndexOutOfBoundsException.  You also note that the kur-spea2 objective is broken.

The SPEA2Breeder bug is part of a suite of bugs that ECJ 25 introduced as we moved from representing populations as arrays to ArrayLists.  We believe we have fixed most of these bug in the development version of ECJ, and we don't know of any current bugs with SPEA2, though we are still verifying the affected algorithms (see this issue).

The kur-spea2 bug is known but not yet fixed—we were holding off because we thought we wanted to reorganize how all the moosuite examples work.  That might not happen anymore, though, so I'll try and commit a fix to kur-spea2 later this morning.


On Wed, Nov 29, 2017 at 5:30 AM, Norliza Abdullah <[log in to unmask]> wrote:
Hi Eric,

I try to run using sphere,qv,zdt1-zdt6.

And also just to let you know the parameter kur-spea2 cannot be used because the problem does not exist in the Moosuite.java.

Thanks a lot.


On 29 November 2017 at 00:06, Eric 'Siggy' Scott <[log in to unmask]> wrote:
Hello Norliza,

Could you share the parameter file you are using?

We've been working on fixing some issues that affect SPEA2 in ECJ 25, but I'd like to try and reproduce the exact exception you're getting.


On Tue, Nov 28, 2017 at 2:52 PM, Norliza Abdullah <[log in to unmask]> wrote:

I am running the moosuite problem using SPEA2 in ECJ25, and this error occurred (after I change this line for (int i = 0; i < reduceBy.length; i++)

FloatVectorSpecies is using polynomial mutation as its global mutation type, but alternative-polynomial-version is not defined.  Assuming 'true'
Subpop 0 best fitness of generation Fitness: [-20.82654708545083 -8.87740942183433]
Strength: 41.0
Distance: 0.1170973657236295 Fitness: 0.1170973657236295
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -50
        at java.util.ArrayList.elementData(ArrayList.java:418)
        at java.util.ArrayList.set(ArrayList.java:446)
        at ec.multiobjective.spea2.SPEA2Breeder.buildArchive(SPEA2Breeder.java:138)
        at ec.multiobjective.spea2.SPEA2Breeder.loadElites(SPEA2Breeder.java:61)
        at ec.simple.SimpleBreeder.breedPopulation(SimpleBreeder.java:257)
        at ec.simple.SimpleEvolutionState.evolve(SimpleEvolutionState.java:104)
        at ec.EvolutionState.run(EvolutionState.java:482)
        at ec.Evolve.main(Evolve.java:773)

But when I change it back to ECJ previous version it's running fine. The difference between both SPEA2Breeder.java in ECJ25 and the previous one is one called individual size (ECJ25) instead of the previous one called individual length.


Ph.D student in Computer Science, George Mason University
Web Director, Journal of Mason Graduate Research

Thank you.

Besh Wishes,

Norliza Abdullah


Ph.D student in Computer Science, George Mason University
Web Director, Journal of Mason Graduate Research