Hi Eva,

I too am using SPEA2 and am confused by this and other issues.  I 
experienced similar behaviour to that described below, and initially 
assumed "top block" must refer to the *end* of the individuals array, 
rather than the *start*.

However, looking at the SPEA2TournamentSelection class:

int i = 

We can see the the individual (which should be selected from the archive 
only) will come from the *start* of the array, as the documentation states.

Is it possible there is a bug in the SPEA2 code?  I have not received 
the results I expected when trying a few experiments, and have seen 
similar postings from others. 

I have, as Sean suggested, contacted the author (Rob Hubley) but he's 
currently unavailable.  If Rob gets back to me I'll post his reply.

Kind Regards,


Eva Alfaro wrote:
> Dear all,
> Lately I have been using SPEA2 for a bankruptcy prediction problem. 
> Everything seemed to work fine but once I got to analyse the final 
> population of one of my runs the results didn't match what I expected to 
> find.
> According to the documentation the archive is maintained at the top block 
> of the individuals vector. Since I was getting "Truncating the archive" 
> messages on the screen, I assumed that the archive would be filled with 
> non-dominated individuals. That was not the case. In the top block of the 
> population non-dominated individuals and dominated individuals were all 
> mixed and furhter below the archive size limit (out of the archive) there 
> were non-dominated individuals. Summarizing, in the final population of my 
> run I could find more than 300 non-dominated individuals (settings for 
> population size and archive size were 1000 and 100, respectively) and only 
> around 50 of them were placed at the top 100 position of the individuals 
> vector.
> Any help? Where am I going wrong?
> Thank you,
> Eva

David R White

Research Student
Department of Computer Science
University of York
York YO10 5DD
United Kingdom

Phone: +44 (0)1904 434756