Fix bug in PSO implementation.

This commit is contained in:
Fabian Becker 2014-11-06 11:27:32 +01:00
parent b7749711ca
commit 3358a469a3

View File

@ -1478,24 +1478,25 @@ public class ParticleSwarmOptimization extends AbstractOptimizer implements java
@Override
public void setPopulation(Population pop) {
this.population = pop;
if (pop.size() != pop.getTargetSize()) { // new particle count!
if (pop.size() > 0 && pop.size() != pop.getTargetSize()) { // new particle count!
tracedVelocity = null;
initializeByPopulation(null, false);
bestIndividual = pop.getBestEAIndividual();
} else {
for (int i = 0; i < pop.size(); i++) {
AbstractEAIndividual indy = pop.getEAIndividual(i);
if (indy == null) {
System.err.println("Error in PSO.setPopulation!");
} else if (!indy.hasData(partTypeKey)) {
} else if (!indy.hasData(this.partTypeKey)) {
initIndividualDefaults(indy, initialVelocity);
initIndividualMemory(indy);
indy.putData(indexKey, i);
indy.setIndividualIndex(i);
}
}
}
bestIndividual = pop.getBestEAIndividual();
}
}
@Override
public InterfaceSolutionSet getAllSolutions() {