From 3358a469a36c44ca8998c00df04142463dac479d Mon Sep 17 00:00:00 2001 From: Fabian Becker Date: Thu, 6 Nov 2014 11:27:32 +0100 Subject: [PATCH] Fix bug in PSO implementation. --- .../optimization/strategies/ParticleSwarmOptimization.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/eva2/optimization/strategies/ParticleSwarmOptimization.java b/src/eva2/optimization/strategies/ParticleSwarmOptimization.java index 32ec6f55..6830a2d3 100644 --- a/src/eva2/optimization/strategies/ParticleSwarmOptimization.java +++ b/src/eva2/optimization/strategies/ParticleSwarmOptimization.java @@ -1478,23 +1478,24 @@ 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(); } - bestIndividual = pop.getBestEAIndividual(); } @Override