From: Gary P. <gpa...@gm...> - 2009-06-24 05:57:33
|
Obtaining the size of the population was possible in two ways. However, using the getPopulationSize() method was flawed as it returned the size of the initial population and not the current population. This method has been removed and you should be using topology.size() instead. To get the size of the initial population, the PopulationInitialisationStrategy should be queried for the entity number. Signed-off-by: Gary Pampara <gpa...@gm...> --- .../population/MultiPopulationBasedAlgorithm.java | 6 ------ .../population/PopulationBasedAlgorithm.java | 14 ++++++-------- .../population/SinglePopulationBasedAlgorithm.java | 9 --------- .../cilib/coevolution/CoevolutionAlgorithm.java | 2 +- .../GeneticAlgorithmIterationStrategy.java | 2 +- .../cilib/entity/visitor/SpatialRadiusVisitor.java | 2 +- .../continuous/decorators/AngleModulation.java | 17 ++++++++++------- .../DimensionBoundViolationsPerParticle.java | 2 +- .../cilib/measurement/single/Diversity.java | 2 +- .../measurement/single/NormalisedDiversity.java | 2 +- .../single/ParticleBoundViolations.java | 2 +- .../AverageDiversityAroundAllEntities.java | 2 +- .../measurement/single/diversity/Diversity.java | 4 ++-- .../SpatialCenterInitialisationStrategy.java | 2 +- .../RandomSentryDetectionStrategy.java | 2 +- .../PartialReinitialisationResponseStrategy.java | 2 +- 16 files changed, 29 insertions(+), 43 deletions(-) diff --git a/src/main/java/net/sourceforge/cilib/algorithm/population/MultiPopulationBasedAlgorithm.java b/src/main/java/net/sourceforge/cilib/algorithm/population/MultiPopulationBasedAlgorithm.java index b7f0870..a8affab 100644 --- a/src/main/java/net/sourceforge/cilib/algorithm/population/MultiPopulationBasedAlgorithm.java +++ b/src/main/java/net/sourceforge/cilib/algorithm/population/MultiPopulationBasedAlgorithm.java @@ -166,12 +166,6 @@ public abstract class MultiPopulationBasedAlgorithm extends PopulationBasedAlgor } @Override - public int getPopulationSize() { - // TODO: Should this method return the size as the sum of each subpopulation? - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override public Topology<? extends Entity> getTopology() { throw new UnsupportedOperationException("Not supported yet."); } diff --git a/src/main/java/net/sourceforge/cilib/algorithm/population/PopulationBasedAlgorithm.java b/src/main/java/net/sourceforge/cilib/algorithm/population/PopulationBasedAlgorithm.java index ca1c418..b1dfba9 100644 --- a/src/main/java/net/sourceforge/cilib/algorithm/population/PopulationBasedAlgorithm.java +++ b/src/main/java/net/sourceforge/cilib/algorithm/population/PopulationBasedAlgorithm.java @@ -50,12 +50,6 @@ public abstract class PopulationBasedAlgorithm extends Algorithm { public abstract PopulationBasedAlgorithm getClone(); /** - * Return the size of the current population. - * @return The size of the population. - */ - public abstract int getPopulationSize(); - - /** * {@inheritDoc} */ @Override @@ -90,11 +84,15 @@ public abstract class PopulationBasedAlgorithm extends Algorithm { public abstract Object accept(TopologyVisitor visitor); /** - * - * @param initialisationStrategy + * Set the initialisation strategy to use for the initialisation of the population. + * @param initialisationStrategy The population initialisation strategy to set. */ public abstract void setInitialisationStrategy(PopulationInitialisationStrategy initialisationStrategy); + /** + * Get the current {@code PopulationInitialisationStrategy}. + * @return The current {@code PopulationInitialisationStrategy}. + */ public abstract PopulationInitialisationStrategy getInitialisationStrategy(); } diff --git a/src/main/java/net/sourceforge/cilib/algorithm/population/SinglePopulationBasedAlgorithm.java b/src/main/java/net/sourceforge/cilib/algorithm/population/SinglePopulationBasedAlgorithm.java index 1d72f60..8be5bcb 100644 --- a/src/main/java/net/sourceforge/cilib/algorithm/population/SinglePopulationBasedAlgorithm.java +++ b/src/main/java/net/sourceforge/cilib/algorithm/population/SinglePopulationBasedAlgorithm.java @@ -63,15 +63,6 @@ public abstract class SinglePopulationBasedAlgorithm extends PopulationBasedAlgo protected abstract void algorithmIteration(); /** - * Get the size of the current population within the algorithm. - * @return The size of the current Population. - */ - @Override - public int getPopulationSize() { - return this.initialisationStrategy.getEntityNumber(); - } - - /** * {@inheritDoc} */ @Override diff --git a/src/main/java/net/sourceforge/cilib/coevolution/CoevolutionAlgorithm.java b/src/main/java/net/sourceforge/cilib/coevolution/CoevolutionAlgorithm.java index f89256a..826312f 100755 --- a/src/main/java/net/sourceforge/cilib/coevolution/CoevolutionAlgorithm.java +++ b/src/main/java/net/sourceforge/cilib/coevolution/CoevolutionAlgorithm.java @@ -69,7 +69,7 @@ public class CoevolutionAlgorithm extends MultiPopulationBasedAlgorithm { public int getPopulationSize() { int sum = 0; for (PopulationBasedAlgorithm currentAlgorithm : subPopulationsAlgorithms) { - sum += currentAlgorithm.getPopulationSize(); + sum += currentAlgorithm.getTopology().size(); } return sum; diff --git a/src/main/java/net/sourceforge/cilib/ec/iterationstrategies/GeneticAlgorithmIterationStrategy.java b/src/main/java/net/sourceforge/cilib/ec/iterationstrategies/GeneticAlgorithmIterationStrategy.java index 4ea4387..e76b3f4 100644 --- a/src/main/java/net/sourceforge/cilib/ec/iterationstrategies/GeneticAlgorithmIterationStrategy.java +++ b/src/main/java/net/sourceforge/cilib/ec/iterationstrategies/GeneticAlgorithmIterationStrategy.java @@ -120,7 +120,7 @@ public class GeneticAlgorithmIterationStrategy extends AbstractIterationStrategy ListIterator<? extends Entity> i = ec.getTopology().listIterator(); int count = 0; - int size = ec.getTopology().size() - ec.getPopulationSize(); + int size = ec.getTopology().size() - ec.getInitialisationStrategy().getEntityNumber(); while (i.hasNext() && count < size) { i.next(); diff --git a/src/main/java/net/sourceforge/cilib/entity/visitor/SpatialRadiusVisitor.java b/src/main/java/net/sourceforge/cilib/entity/visitor/SpatialRadiusVisitor.java index 0a11876..1746c21 100644 --- a/src/main/java/net/sourceforge/cilib/entity/visitor/SpatialRadiusVisitor.java +++ b/src/main/java/net/sourceforge/cilib/entity/visitor/SpatialRadiusVisitor.java @@ -44,7 +44,7 @@ public class SpatialRadiusVisitor extends TopologyVisitor { double maxDistance = 0.0; // get number of entities in the population - int numberOfEntities = ((PopulationBasedAlgorithm) this.currentAlgorithm).getPopulationSize(); + int numberOfEntities = ((PopulationBasedAlgorithm) this.currentAlgorithm).getTopology().size(); // initialize iterator to be used to calculate spatial center Iterator<? extends Entity> calculateCenterIterator = ((PopulationBasedAlgorithm) this.currentAlgorithm).getTopology().iterator(); diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/decorators/AngleModulation.java b/src/main/java/net/sourceforge/cilib/functions/continuous/decorators/AngleModulation.java index 7855415..6539d0c 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/decorators/AngleModulation.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/decorators/AngleModulation.java @@ -69,22 +69,25 @@ public class AngleModulation extends ContinuousFunction { } /** - * + * {@inheritDoc} */ + @Override public Object getMinimum() { return function.getMinimum(); } /** - * + * {@inheritDoc} */ + @Override public Object getMaximum() { return function.getMaximum(); } /** - * + * {@inheritDoc} */ + @Override public double evaluate(Vector x) { String solution = generateBitString(x); Vector expandedVector = decodeBitString(solution); @@ -121,7 +124,7 @@ public class AngleModulation extends ContinuousFunction { /** * - * @param funciton + * @param decoratedFunciton */ public void setFunction(Function decoratedFunciton) { this.function = decoratedFunciton; @@ -130,7 +133,7 @@ public class AngleModulation extends ContinuousFunction { /** * - * @param string + * @param domain * @return */ public int getRequiredNumberOfBits(DomainRegistry domain) { @@ -210,8 +213,8 @@ public class AngleModulation extends ContinuousFunction { * TODO: Move this into a class that will make sense. * * @param bitString The bitsting as a string - * @param i The starting index - * @param j The ending index + * @param startIndex The starting index + * @param endIndex The ending index * @return The value of the bitstring */ public double valueOf(String bitString, int startIndex, int endIndex) { diff --git a/src/main/java/net/sourceforge/cilib/measurement/single/DimensionBoundViolationsPerParticle.java b/src/main/java/net/sourceforge/cilib/measurement/single/DimensionBoundViolationsPerParticle.java index fbec5b4..9f7ad0e 100644 --- a/src/main/java/net/sourceforge/cilib/measurement/single/DimensionBoundViolationsPerParticle.java +++ b/src/main/java/net/sourceforge/cilib/measurement/single/DimensionBoundViolationsPerParticle.java @@ -79,7 +79,7 @@ public class DimensionBoundViolationsPerParticle implements Measurement { PopulationBasedAlgorithm populationBasedAlgorithm = (PopulationBasedAlgorithm) algorithm; int numberOfViolations = 0; - int populationSize = populationBasedAlgorithm.getPopulationSize(); + int populationSize = populationBasedAlgorithm.getTopology().size(); for (Entity populationEntity : populationBasedAlgorithm.getTopology()) { for (Numeric position : (Vector) populationEntity.getCandidateSolution()) { diff --git a/src/main/java/net/sourceforge/cilib/measurement/single/Diversity.java b/src/main/java/net/sourceforge/cilib/measurement/single/Diversity.java index fa08d4d..03b7e59 100644 --- a/src/main/java/net/sourceforge/cilib/measurement/single/Diversity.java +++ b/src/main/java/net/sourceforge/cilib/measurement/single/Diversity.java @@ -68,7 +68,7 @@ public class Diversity implements Measurement { public Type getValue(Algorithm algorithm) { PopulationBasedAlgorithm populationBasedAlgorithm = (PopulationBasedAlgorithm) algorithm; - int numberOfEntities = populationBasedAlgorithm.getPopulationSize(); + int numberOfEntities = populationBasedAlgorithm.getTopology().size(); Iterator<? extends Entity> k = populationBasedAlgorithm.getTopology().iterator(); Entity entity = k.next(); diff --git a/src/main/java/net/sourceforge/cilib/measurement/single/NormalisedDiversity.java b/src/main/java/net/sourceforge/cilib/measurement/single/NormalisedDiversity.java index 6aa8679..9b4310a 100644 --- a/src/main/java/net/sourceforge/cilib/measurement/single/NormalisedDiversity.java +++ b/src/main/java/net/sourceforge/cilib/measurement/single/NormalisedDiversity.java @@ -83,7 +83,7 @@ public class NormalisedDiversity implements Measurement { PSO pso = (PSO) algorithm; - int numberParticles = pso.getPopulationSize(); + int numberParticles = pso.getTopology().size(); Iterator<Particle> k = pso.getTopology().iterator(); Particle particle = k.next(); diff --git a/src/main/java/net/sourceforge/cilib/measurement/single/ParticleBoundViolations.java b/src/main/java/net/sourceforge/cilib/measurement/single/ParticleBoundViolations.java index eacc2bc..a9b6d21 100644 --- a/src/main/java/net/sourceforge/cilib/measurement/single/ParticleBoundViolations.java +++ b/src/main/java/net/sourceforge/cilib/measurement/single/ParticleBoundViolations.java @@ -79,7 +79,7 @@ public class ParticleBoundViolations implements Measurement { Iterator<? extends Entity> populationIterator = populationBasedAlgorithm.getTopology().iterator(); int numberOfViolations = 0; - int populationSize = populationBasedAlgorithm.getPopulationSize(); + int populationSize = populationBasedAlgorithm.getTopology().size(); while (populationIterator.hasNext()) { Entity entity = populationIterator.next(); diff --git a/src/main/java/net/sourceforge/cilib/measurement/single/diversity/AverageDiversityAroundAllEntities.java b/src/main/java/net/sourceforge/cilib/measurement/single/diversity/AverageDiversityAroundAllEntities.java index 6c241f8..25ef7fb 100644 --- a/src/main/java/net/sourceforge/cilib/measurement/single/diversity/AverageDiversityAroundAllEntities.java +++ b/src/main/java/net/sourceforge/cilib/measurement/single/diversity/AverageDiversityAroundAllEntities.java @@ -47,7 +47,7 @@ public class AverageDiversityAroundAllEntities extends Diversity { public Type getValue() { PopulationBasedAlgorithm algorithm = (PopulationBasedAlgorithm) Algorithm.get(); - int numberOfEntities = algorithm.getPopulationSize(); + int numberOfEntities = algorithm.getTopology().size(); Iterator<? extends Entity> populationCenterIterator = algorithm.getTopology().iterator(); diff --git a/src/main/java/net/sourceforge/cilib/measurement/single/diversity/Diversity.java b/src/main/java/net/sourceforge/cilib/measurement/single/diversity/Diversity.java index b4ed96c..e6426be 100644 --- a/src/main/java/net/sourceforge/cilib/measurement/single/diversity/Diversity.java +++ b/src/main/java/net/sourceforge/cilib/measurement/single/diversity/Diversity.java @@ -70,9 +70,9 @@ public class Diversity implements Measurement { public Type getValue(Algorithm algorithm) { PopulationBasedAlgorithm populationBasedAlgorithm = (PopulationBasedAlgorithm) algorithm; - int numberOfEntities = populationBasedAlgorithm.getPopulationSize(); + int numberOfEntities = populationBasedAlgorithm.getTopology().size(); - Vector center = (Vector) populationCenter.getCenter(); + Vector center = populationCenter.getCenter(); Iterator<? extends Entity> populationIterator = populationBasedAlgorithm.getTopology().iterator(); double distanceSum = 0.0; diff --git a/src/main/java/net/sourceforge/cilib/measurement/single/diversity/centerinitialisationstrategies/SpatialCenterInitialisationStrategy.java b/src/main/java/net/sourceforge/cilib/measurement/single/diversity/centerinitialisationstrategies/SpatialCenterInitialisationStrategy.java index 1541e53..4eed204 100644 --- a/src/main/java/net/sourceforge/cilib/measurement/single/diversity/centerinitialisationstrategies/SpatialCenterInitialisationStrategy.java +++ b/src/main/java/net/sourceforge/cilib/measurement/single/diversity/centerinitialisationstrategies/SpatialCenterInitialisationStrategy.java @@ -36,7 +36,7 @@ public class SpatialCenterInitialisationStrategy extends CenterInitialisationStr @Override public Vector getCenter() { PopulationBasedAlgorithm algorithm = (PopulationBasedAlgorithm) Algorithm.get(); - int numberOfEntities = algorithm.getPopulationSize(); + int numberOfEntities = algorithm.getTopology().size();//getPopulationSize(); Iterator<? extends Entity> averageIterator = algorithm.getTopology().iterator(); Entity entity = averageIterator.next(); diff --git a/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/RandomSentryDetectionStrategy.java b/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/RandomSentryDetectionStrategy.java index 986ffc7..2fd0c2b 100644 --- a/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/RandomSentryDetectionStrategy.java +++ b/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/RandomSentryDetectionStrategy.java @@ -69,7 +69,7 @@ public class RandomSentryDetectionStrategy<E extends PopulationBasedAlgorithm> e boolean envChangeOccured = false; ArrayList<Entity> sentryList = new ArrayList<Entity>(); - int populationSize = algorithm.getPopulationSize(); + int populationSize = topology.size(); for (int i = 0; i < sentries; i++) { int index = randomiser.nextInt(populationSize); diff --git a/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/PartialReinitialisationResponseStrategy.java b/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/PartialReinitialisationResponseStrategy.java index df30398..f81b1b8 100644 --- a/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/PartialReinitialisationResponseStrategy.java +++ b/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/PartialReinitialisationResponseStrategy.java @@ -64,7 +64,7 @@ public class PartialReinitialisationResponseStrategy<E extends PopulationBasedAl public void performReaction(E algorithm) { // Reset positions: Topology<? extends Entity> topology = algorithm.getTopology(); - int populationSize = algorithm.getPopulationSize(); + int populationSize = topology.size(); boolean [] used = new boolean[populationSize]; for (int i = 0; i < populationSize; ++i) used[i] = false; int numParticlesToReinitialise = (int) Math.floor(populationSize * reinitialisationRatio); -- 1.6.2.3 |