Add scout count info as additional data for output.
This commit is contained in:
parent
d80ac15142
commit
b75da91ead
@ -4,7 +4,9 @@ import eva2.optimization.individuals.AbstractEAIndividual;
|
||||
import eva2.optimization.individuals.InterfaceDataTypeDouble;
|
||||
import eva2.optimization.population.InterfaceSolutionSet;
|
||||
import eva2.optimization.population.Population;
|
||||
import eva2.optimization.population.PopulationInterface;
|
||||
import eva2.optimization.population.SolutionSet;
|
||||
import eva2.problems.InterfaceAdditionalPopulationInformer;
|
||||
import eva2.tools.math.Mathematics;
|
||||
import eva2.tools.math.RNG;
|
||||
import eva2.util.annotation.Description;
|
||||
@ -19,7 +21,7 @@ import java.util.logging.Logger;
|
||||
* This optimizer implements the original ABC algorithm proposed by Karaboga et.al.
|
||||
*/
|
||||
@Description("Artificial Bee Colony")
|
||||
public class ArtificialBeeColony extends AbstractOptimizer implements Serializable {
|
||||
public class ArtificialBeeColony extends AbstractOptimizer implements InterfaceAdditionalPopulationInformer, Serializable {
|
||||
private static final Logger LOGGER = Logger.getLogger(ArtificialBeeColony.class.getName());
|
||||
|
||||
/**
|
||||
@ -27,6 +29,8 @@ public class ArtificialBeeColony extends AbstractOptimizer implements Serializab
|
||||
*/
|
||||
protected int maxTrials = 100;
|
||||
|
||||
protected int scoutCount = 0;
|
||||
|
||||
protected AbstractEAIndividual bestIndividual;
|
||||
|
||||
|
||||
@ -51,6 +55,7 @@ public class ArtificialBeeColony extends AbstractOptimizer implements Serializab
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
this.scoutCount = 0;
|
||||
this.optimizationProblem.initializePopulation(this.population);
|
||||
this.evaluatePopulation(this.population);
|
||||
this.firePropertyChangedEvent(Population.NEXT_GENERATION_PERFORMED);
|
||||
@ -136,6 +141,7 @@ public class ArtificialBeeColony extends AbstractOptimizer implements Serializab
|
||||
AbstractEAIndividual oldestIndy = getOldestIndividual();
|
||||
if (oldestIndy.getAge() > this.maxTrials) {
|
||||
LOGGER.finer("Scout bee generated.");
|
||||
this.scoutCount++;
|
||||
oldestIndy.initialize(this.optimizationProblem);
|
||||
this.optimizationProblem.evaluate(oldestIndy);
|
||||
this.population.incrFunctionCalls();
|
||||
@ -267,4 +273,19 @@ public class ArtificialBeeColony extends AbstractOptimizer implements Serializab
|
||||
public int getMaxTrials() {
|
||||
return maxTrials;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getAdditionalDataHeader() {
|
||||
return new String[]{"scoutCount"};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getAdditionalDataInfo() {
|
||||
return new String[]{"Number of re-initialized Bees (Scouts)"};
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object[] getAdditionalDataValue(PopulationInterface pop) {
|
||||
return new Object[]{scoutCount};
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user