From b75da91ead022fa92b84d0132a8876d0bd4d6a0a Mon Sep 17 00:00:00 2001 From: Fabian Becker Date: Mon, 1 Dec 2014 12:23:12 +0000 Subject: [PATCH] Add scout count info as additional data for output. --- .../strategies/ArtificialBeeColony.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/eva2/optimization/strategies/ArtificialBeeColony.java b/src/eva2/optimization/strategies/ArtificialBeeColony.java index 32700bf7..0b9c1980 100644 --- a/src/eva2/optimization/strategies/ArtificialBeeColony.java +++ b/src/eva2/optimization/strategies/ArtificialBeeColony.java @@ -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}; + } }