Fix bug in PSO implementation.
This commit is contained in:
parent
b7749711ca
commit
3358a469a3
@ -1478,23 +1478,24 @@ public class ParticleSwarmOptimization extends AbstractOptimizer implements java
|
|||||||
@Override
|
@Override
|
||||||
public void setPopulation(Population pop) {
|
public void setPopulation(Population pop) {
|
||||||
this.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;
|
tracedVelocity = null;
|
||||||
initializeByPopulation(null, false);
|
initializeByPopulation(null, false);
|
||||||
|
bestIndividual = pop.getBestEAIndividual();
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < pop.size(); i++) {
|
for (int i = 0; i < pop.size(); i++) {
|
||||||
AbstractEAIndividual indy = pop.getEAIndividual(i);
|
AbstractEAIndividual indy = pop.getEAIndividual(i);
|
||||||
if (indy == null) {
|
if (indy == null) {
|
||||||
System.err.println("Error in PSO.setPopulation!");
|
System.err.println("Error in PSO.setPopulation!");
|
||||||
} else if (!indy.hasData(partTypeKey)) {
|
} else if (!indy.hasData(this.partTypeKey)) {
|
||||||
initIndividualDefaults(indy, initialVelocity);
|
initIndividualDefaults(indy, initialVelocity);
|
||||||
initIndividualMemory(indy);
|
initIndividualMemory(indy);
|
||||||
indy.putData(indexKey, i);
|
indy.putData(indexKey, i);
|
||||||
indy.setIndividualIndex(i);
|
indy.setIndividualIndex(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
bestIndividual = pop.getBestEAIndividual();
|
||||||
}
|
}
|
||||||
bestIndividual = pop.getBestEAIndividual();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
x
Reference in New Issue
Block a user