Looks like the PSOSubpopulation.java file may not have been committed to CVS post minGene/maxGene updates. Here's a patch to fix it (I think): Index: PSOSubpopulation.java =================================================================== RCS file: /cvs/ecj/ecj/ec/pso/PSOSubpopulation.java,v retrieving revision 1.2 diff -c -r1.2 PSOSubpopulation.java *** PSOSubpopulation.java 29 Oct 2007 23:35:44 -0000 1.2 --- PSOSubpopulation.java 11 Feb 2008 00:39:01 -0000 *************** *** 109,115 **** if (loadInds == null) // we're generating new individuals, not reading them from a file { FloatVectorSpecies fvSpecies = (FloatVectorSpecies)species; - double range = fvSpecies.maxGene - fvSpecies.minGene; for (int i = 0; i < individuals.length; i++) { --- 109,114 ---- *************** *** 119,124 **** --- 118,124 ---- for(int j = 0; j < prevInd.genomeLength(); j++) { double val = prevInd.genome[j]; + double range = fvSpecies.maxGene(j) - fvSpecies.minGene(j); do prevInd.genome[j] = val + (range * initialVelocityScale) * (state.random[thread].nextDouble()*2.0 - 1.0); while (prevInd.genome[j] < fvSpecies.minGene(j) || prevInd.genome[j] > fvSpecies.maxGene(j));