From: Gary P. <gpa...@gm...> - 2009-07-31 07:56:40
|
The fact that fitness evalautions can be bypassed was not correct. These patches prevent such ambiguity and result in a cleaner API. Gary Pampara (2): Removed calculateFitness(boolean) from Entity. Always increment evaluations problem. .../algorithm/MultistartOptimisationAlgorithm.java | 2 +- .../cilib/bioinf/rnaprediction/RNAParticle.java | 2 +- .../net/sourceforge/cilib/boa/bee/AbstractBee.java | 10 +--- .../cilib/clustering/kmeans/KMeans.java | 6 +- .../cilib/cooperative/CooperativeEntity.java | 9 +-- .../SelectiveContributionUpdateStrategy.java | 2 +- .../java/net/sourceforge/cilib/ec/Individual.java | 10 +--- .../DifferentialEvolutionIterationStrategy.java | 2 +- .../java/net/sourceforge/cilib/entity/Entity.java | 7 -- .../java/net/sourceforge/cilib/entity/Harmony.java | 12 +--- .../crossover/BlendCrossoverStrategy.java | 4 +- .../crossover/OnePointCrossoverStrategy.java | 4 +- .../crossover/UniformCrossoverStrategy.java | 4 +- .../criterion/CriterionBasedMOProblemAdapter.java | 2 +- .../ArchivingIterationStrategy.java | 4 +- .../foundation/NeuralNetworkProblem.java | 7 +- .../CooperativeOptimisationProblemAdapter.java | 2 +- .../net/sourceforge/cilib/problem/MOFitness.java | 8 +- .../cilib/problem/MOOptimisationProblem.java | 12 ++-- .../cilib/problem/OptimisationProblem.java | 4 +- .../cilib/problem/OptimisationProblemAdapter.java | 6 +- .../cilib/pso/dynamic/DynamicParticle.java | 2 +- ...NeighbourhoodBestSentriesDetectionStrategy.java | 2 +- .../RandomSentriesDetectionStrategy.java | 2 +- .../RandomSentryDetectionStrategy.java | 4 +- .../RandomSentryPointsDetectionStrategy.java | 2 +- .../TopologyBestSentryDetectionStrategy.java | 2 +- .../ArchiveReevaluationResponseStrategy.java | 4 +- ...lutionParticleReevaluationResponseStrategy.java | 2 +- .../DominantGuideUpdateStrategy.java | 4 +- .../cilib/pso/particle/AbstractParticle.java | 10 +--- .../cilib/pso/particle/MultiObjectiveParticle.java | 2 +- .../cilib/pso/particle/ParticleDecorator.java | 4 +- .../cilib/pso/particle/StandardParticle.java | 4 +- .../DEPositionUpdateStrategy.java | 4 +- .../GCVelocityUpdateStrategy.java | 2 +- .../calculator/EntityBasedFitnessCalculator.java | 6 +- .../cilib/util/calculator/FitnessCalculator.java | 4 +- .../calculator/PropertyBasedFitnessCalculator.java | 4 +- .../StructuredTypeFitnessCalculator.java | 4 +- .../crossover/BlendCrossoverStrategyTest.java | 2 +- .../crossover/OnePointCrossoverStrategyTest.java | 2 +- .../crossover/UniformCrossoverStrategyTest.java | 2 +- .../entity/topologies/VonNeumannTopologyTest.java | 2 +- .../cilib/moo/archive/constrained/ArchiveTest.java | 74 ++++++++++---------- .../constrained/ConstrainedArchiveTest.java | 4 +- .../solutionweighing/SolutionWeighingTest.java | 12 ++-- .../sourceforge/cilib/problem/MOFitnessTest.java | 10 +-- 48 files changed, 123 insertions(+), 172 deletions(-) |
From: Gary P. <gpa...@gm...> - 2009-07-31 07:56:44
|
Removed the option of calculating the fitness of the Entity without incrementing the associated fitness evaluation. Signed-off-by: Gary Pampara <gpa...@gm...> --- .../cilib/bioinf/rnaprediction/RNAParticle.java | 2 +- .../net/sourceforge/cilib/boa/bee/AbstractBee.java | 10 +--------- .../java/net/sourceforge/cilib/ec/Individual.java | 10 +--------- .../DifferentialEvolutionIterationStrategy.java | 2 +- .../java/net/sourceforge/cilib/entity/Entity.java | 7 ------- .../java/net/sourceforge/cilib/entity/Harmony.java | 12 +----------- .../crossover/BlendCrossoverStrategy.java | 4 ++-- .../crossover/OnePointCrossoverStrategy.java | 4 ++-- .../crossover/UniformCrossoverStrategy.java | 4 ++-- .../cilib/problem/OptimisationProblem.java | 1 + ...NeighbourhoodBestSentriesDetectionStrategy.java | 2 +- .../RandomSentriesDetectionStrategy.java | 2 +- .../RandomSentryDetectionStrategy.java | 2 +- .../RandomSentryPointsDetectionStrategy.java | 2 +- .../TopologyBestSentryDetectionStrategy.java | 2 +- .../cilib/pso/particle/AbstractParticle.java | 10 +--------- .../cilib/pso/particle/ParticleDecorator.java | 4 ++-- .../cilib/pso/particle/StandardParticle.java | 4 ++-- .../entity/topologies/VonNeumannTopologyTest.java | 2 +- 19 files changed, 23 insertions(+), 63 deletions(-) diff --git a/src/main/java/net/sourceforge/cilib/bioinf/rnaprediction/RNAParticle.java b/src/main/java/net/sourceforge/cilib/bioinf/rnaprediction/RNAParticle.java index 7acca1b..a294456 100644 --- a/src/main/java/net/sourceforge/cilib/bioinf/rnaprediction/RNAParticle.java +++ b/src/main/java/net/sourceforge/cilib/bioinf/rnaprediction/RNAParticle.java @@ -324,7 +324,7 @@ public class RNAParticle extends AbstractParticle { * {@inheritDoc} */ @Override - public void calculateFitness(boolean count) { + public void calculateFitness() { // TODO Auto-generated method stub } diff --git a/src/main/java/net/sourceforge/cilib/boa/bee/AbstractBee.java b/src/main/java/net/sourceforge/cilib/boa/bee/AbstractBee.java index ddef6ac..ceea52b 100644 --- a/src/main/java/net/sourceforge/cilib/boa/bee/AbstractBee.java +++ b/src/main/java/net/sourceforge/cilib/boa/bee/AbstractBee.java @@ -97,15 +97,7 @@ public abstract class AbstractBee extends AbstractEntity implements HoneyBee { */ @Override public void calculateFitness() { - this.calculateFitness(true); - } - - /** - * {@inheritDoc} - */ - @Override - public void calculateFitness(boolean count) { - this.getProperties().put(EntityType.FITNESS, getFitnessCalculator().getFitness(this, count)); + this.getProperties().put(EntityType.FITNESS, getFitnessCalculator().getFitness(this, true)); } /** diff --git a/src/main/java/net/sourceforge/cilib/ec/Individual.java b/src/main/java/net/sourceforge/cilib/ec/Individual.java index a236ba8..c1ea82f 100644 --- a/src/main/java/net/sourceforge/cilib/ec/Individual.java +++ b/src/main/java/net/sourceforge/cilib/ec/Individual.java @@ -145,15 +145,7 @@ public class Individual extends AbstractEntity { */ @Override public void calculateFitness() { - calculateFitness(true); - } - - /** - * {@inheritDoc} - */ - @Override - public void calculateFitness(boolean count) { - this.getProperties().put(EntityType.FITNESS, this.getFitnessCalculator().getFitness(this, count)); + this.getProperties().put(EntityType.FITNESS, this.getFitnessCalculator().getFitness(this, true)); } /** diff --git a/src/main/java/net/sourceforge/cilib/ec/iterationstrategies/DifferentialEvolutionIterationStrategy.java b/src/main/java/net/sourceforge/cilib/ec/iterationstrategies/DifferentialEvolutionIterationStrategy.java index 478b09f..881fa0d 100644 --- a/src/main/java/net/sourceforge/cilib/ec/iterationstrategies/DifferentialEvolutionIterationStrategy.java +++ b/src/main/java/net/sourceforge/cilib/ec/iterationstrategies/DifferentialEvolutionIterationStrategy.java @@ -101,7 +101,7 @@ public class DifferentialEvolutionIterationStrategy extends AbstractIterationStr // Replace the parent (current) if the offspring is better Entity offspringEntity = offspring.get(0); boundaryConstraint.enforce(offspringEntity); - offspringEntity.calculateFitness(false); + offspringEntity.calculateFitness(); if (offspringEntity.getFitness().compareTo(current.getFitness()) > 0) { // the trial vector is better than the parent current.setCandidateSolution(offspring.get(0).getCandidateSolution()); diff --git a/src/main/java/net/sourceforge/cilib/entity/Entity.java b/src/main/java/net/sourceforge/cilib/entity/Entity.java index c6d84bb..0c67599 100644 --- a/src/main/java/net/sourceforge/cilib/entity/Entity.java +++ b/src/main/java/net/sourceforge/cilib/entity/Entity.java @@ -75,13 +75,6 @@ public interface Entity extends Comparable<Entity>, Cloneable, Serializable { public void calculateFitness(); /** - * Calculate the fitness of the <code>Entity</code>. This method may or may not - * increment the number of fitness evaluations of the algorithm. - * @param count Add or do not add this fitness evaluation to the algorithm global count. - */ - public void calculateFitness(boolean count); - - /** * Returns the {@linkplain Entity} fitness. * @return The {@linkplain Fitness} of the {@linkplain Entity}. */ diff --git a/src/main/java/net/sourceforge/cilib/entity/Harmony.java b/src/main/java/net/sourceforge/cilib/entity/Harmony.java index 984a3d7..85fe665 100644 --- a/src/main/java/net/sourceforge/cilib/entity/Harmony.java +++ b/src/main/java/net/sourceforge/cilib/entity/Harmony.java @@ -21,12 +21,10 @@ */ package net.sourceforge.cilib.entity; -import net.sourceforge.cilib.type.types.Types; import net.sourceforge.cilib.math.random.generator.MersenneTwister; import net.sourceforge.cilib.problem.Fitness; import net.sourceforge.cilib.problem.InferiorFitness; import net.sourceforge.cilib.problem.OptimisationProblem; -import net.sourceforge.cilib.type.types.Type; import net.sourceforge.cilib.type.types.container.StructuredType; /** @@ -82,15 +80,7 @@ public class Harmony extends AbstractEntity { */ @Override public void calculateFitness() { - calculateFitness(true); - } - - /** - * {@inheritDoc} - */ - @Override - public void calculateFitness(boolean count) { - Fitness fitness = getFitnessCalculator().getFitness(this, count); + Fitness fitness = getFitnessCalculator().getFitness(this, true); this.getProperties().put(EntityType.FITNESS, fitness); } diff --git a/src/main/java/net/sourceforge/cilib/entity/operators/crossover/BlendCrossoverStrategy.java b/src/main/java/net/sourceforge/cilib/entity/operators/crossover/BlendCrossoverStrategy.java index 96e4dbe..43ea467 100644 --- a/src/main/java/net/sourceforge/cilib/entity/operators/crossover/BlendCrossoverStrategy.java +++ b/src/main/java/net/sourceforge/cilib/entity/operators/crossover/BlendCrossoverStrategy.java @@ -132,8 +132,8 @@ public class BlendCrossoverStrategy extends CrossoverStrategy { */ } - offspring1.calculateFitness(false); - offspring2.calculateFitness(false); + offspring1.calculateFitness(); + offspring2.calculateFitness(); offspring.add(offspring1); offspring.add(offspring2); diff --git a/src/main/java/net/sourceforge/cilib/entity/operators/crossover/OnePointCrossoverStrategy.java b/src/main/java/net/sourceforge/cilib/entity/operators/crossover/OnePointCrossoverStrategy.java index e7f900b..8c73685 100644 --- a/src/main/java/net/sourceforge/cilib/entity/operators/crossover/OnePointCrossoverStrategy.java +++ b/src/main/java/net/sourceforge/cilib/entity/operators/crossover/OnePointCrossoverStrategy.java @@ -80,8 +80,8 @@ public class OnePointCrossoverStrategy extends CrossoverStrategy { offspringVector2.insert(j, offspringVector1.get(j).getClone()); } - offspring1.calculateFitness(false); - offspring2.calculateFitness(false); + offspring1.calculateFitness(); + offspring2.calculateFitness(); offspring.add(offspring1); offspring.add(offspring2); diff --git a/src/main/java/net/sourceforge/cilib/entity/operators/crossover/UniformCrossoverStrategy.java b/src/main/java/net/sourceforge/cilib/entity/operators/crossover/UniformCrossoverStrategy.java index 8be479e..1230a38 100644 --- a/src/main/java/net/sourceforge/cilib/entity/operators/crossover/UniformCrossoverStrategy.java +++ b/src/main/java/net/sourceforge/cilib/entity/operators/crossover/UniformCrossoverStrategy.java @@ -91,8 +91,8 @@ public class UniformCrossoverStrategy extends CrossoverStrategy { } } - offspring1.calculateFitness(false); - offspring2.calculateFitness(false); + offspring1.calculateFitness(); + offspring2.calculateFitness(); offspring.add(offspring1); offspring.add(offspring2); diff --git a/src/main/java/net/sourceforge/cilib/problem/OptimisationProblem.java b/src/main/java/net/sourceforge/cilib/problem/OptimisationProblem.java index e300bd5..a5437c2 100644 --- a/src/main/java/net/sourceforge/cilib/problem/OptimisationProblem.java +++ b/src/main/java/net/sourceforge/cilib/problem/OptimisationProblem.java @@ -43,6 +43,7 @@ public interface OptimisationProblem extends Problem { /** * {@inheritDoc} */ + @Override public OptimisationProblem getClone(); /** diff --git a/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/NeighbourhoodBestSentriesDetectionStrategy.java b/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/NeighbourhoodBestSentriesDetectionStrategy.java index ba791bf..5365fe9 100644 --- a/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/NeighbourhoodBestSentriesDetectionStrategy.java +++ b/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/NeighbourhoodBestSentriesDetectionStrategy.java @@ -51,7 +51,7 @@ public class NeighbourhoodBestSentriesDetectionStrategy<E extends PopulationBase for (Entity sentry : sentries) { double previousFitness = sentry.getFitness().getValue(); - sentry.calculateFitness(false); + sentry.calculateFitness(); double currentFitness = sentry.getFitness().getValue(); if(Math.abs(previousFitness - currentFitness) >= epsilon) { diff --git a/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/RandomSentriesDetectionStrategy.java b/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/RandomSentriesDetectionStrategy.java index ec5a662..d2f2c3f 100644 --- a/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/RandomSentriesDetectionStrategy.java +++ b/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/RandomSentriesDetectionStrategy.java @@ -86,7 +86,7 @@ public class RandomSentriesDetectionStrategy<E extends PopulationBasedAlgorithm> // check for change double previousFitness = sentry.getFitness().getValue(); - sentry.calculateFitness(false); + sentry.calculateFitness(); double currentFitness = sentry.getFitness().getValue(); if (Math.abs(previousFitness - currentFitness) >= epsilon) { 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 3ec957b..11f0fb3 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 @@ -78,7 +78,7 @@ public class RandomSentryDetectionStrategy<E extends PopulationBasedAlgorithm> e for (Entity nextSentry : sentryList) { double oldSentryFitness = nextSentry.getFitness().getValue(); - nextSentry.calculateFitness(false); + nextSentry.calculateFitness(); double newSentryFitness = algorithm.getOptimisationProblem().getFitness(nextSentry.getCandidateSolution(), false).getValue(); if(Math.abs(oldSentryFitness - newSentryFitness) >= theta) { diff --git a/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/RandomSentryPointsDetectionStrategy.java b/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/RandomSentryPointsDetectionStrategy.java index eb39d9e..f20cb29 100644 --- a/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/RandomSentryPointsDetectionStrategy.java +++ b/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/RandomSentryPointsDetectionStrategy.java @@ -86,7 +86,7 @@ public class RandomSentryPointsDetectionStrategy<E extends PopulationBasedAlgori if (algorithm.getIterations() % interval == 0) { for (Entity sentry : sentries) { double previousFitness = sentry.getFitness().getValue(); - sentry.calculateFitness(false); + sentry.calculateFitness(); double currentFitness = sentry.getFitness().getValue(); if(Math.abs(previousFitness - currentFitness) >= epsilon) { diff --git a/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/TopologyBestSentryDetectionStrategy.java b/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/TopologyBestSentryDetectionStrategy.java index 8e2f2c1..62e59b0 100644 --- a/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/TopologyBestSentryDetectionStrategy.java +++ b/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/TopologyBestSentryDetectionStrategy.java @@ -54,7 +54,7 @@ public class TopologyBestSentryDetectionStrategy<E extends PopulationBasedAlgori if (algorithm.getIterations() % interval == 0) { Entity sentry = algorithm.getTopology().getBestEntity(); double previousFitness = sentry.getFitness().getValue(); - sentry.calculateFitness(false); + sentry.calculateFitness(); double currentFitness = sentry.getFitness().getValue(); if (Math.abs(previousFitness - currentFitness) >= epsilon) { diff --git a/src/main/java/net/sourceforge/cilib/pso/particle/AbstractParticle.java b/src/main/java/net/sourceforge/cilib/pso/particle/AbstractParticle.java index 9d3bec1..d274363 100644 --- a/src/main/java/net/sourceforge/cilib/pso/particle/AbstractParticle.java +++ b/src/main/java/net/sourceforge/cilib/pso/particle/AbstractParticle.java @@ -122,15 +122,7 @@ public abstract class AbstractParticle extends AbstractEntity implements Particl * {@inheritDoc} */ @Override - public void calculateFitness() { - calculateFitness(true); - } - - /** - * {@inheritDoc} - */ - @Override - public abstract void calculateFitness(boolean count); + public abstract void calculateFitness(); /** * {@inheritDoc} diff --git a/src/main/java/net/sourceforge/cilib/pso/particle/ParticleDecorator.java b/src/main/java/net/sourceforge/cilib/pso/particle/ParticleDecorator.java index ed44981..c2e7f90 100644 --- a/src/main/java/net/sourceforge/cilib/pso/particle/ParticleDecorator.java +++ b/src/main/java/net/sourceforge/cilib/pso/particle/ParticleDecorator.java @@ -121,8 +121,8 @@ public abstract class ParticleDecorator extends AbstractParticle { } @Override - public void calculateFitness(boolean count) { - target.calculateFitness(count); + public void calculateFitness() { + target.calculateFitness(); } public void setNeighbourhoodBest(Particle particle) { diff --git a/src/main/java/net/sourceforge/cilib/pso/particle/StandardParticle.java b/src/main/java/net/sourceforge/cilib/pso/particle/StandardParticle.java index 2ed3c98..5176e8f 100644 --- a/src/main/java/net/sourceforge/cilib/pso/particle/StandardParticle.java +++ b/src/main/java/net/sourceforge/cilib/pso/particle/StandardParticle.java @@ -162,8 +162,8 @@ public class StandardParticle extends AbstractParticle { * {@inheritDoc} */ @Override - public void calculateFitness(boolean count) { - Fitness fitness = getFitnessCalculator().getFitness(this, count); + public void calculateFitness() { + Fitness fitness = getFitnessCalculator().getFitness(this, true); this.getProperties().put(EntityType.FITNESS, fitness); this.personalBestUpdateStrategy.updatePersonalBest(this); diff --git a/src/test/java/net/sourceforge/cilib/entity/topologies/VonNeumannTopologyTest.java b/src/test/java/net/sourceforge/cilib/entity/topologies/VonNeumannTopologyTest.java index 388d27c..8012fa8 100644 --- a/src/test/java/net/sourceforge/cilib/entity/topologies/VonNeumannTopologyTest.java +++ b/src/test/java/net/sourceforge/cilib/entity/topologies/VonNeumannTopologyTest.java @@ -246,7 +246,7 @@ public class VonNeumannTopologyTest { } @Override - public void calculateFitness(boolean count) { + public void calculateFitness() { throw new UnsupportedOperationException("Mocked object - not allowed"); } -- 1.6.4 |
From: Gary P. <gpa...@gm...> - 2009-07-31 07:56:47
|
When the fitness is determined from the problem, the number of fitness evaluations must be incremented. Signed-off-by: Gary Pampara <gpa...@gm...> --- .../algorithm/MultistartOptimisationAlgorithm.java | 2 +- .../net/sourceforge/cilib/boa/bee/AbstractBee.java | 2 +- .../cilib/clustering/kmeans/KMeans.java | 6 +- .../cilib/cooperative/CooperativeEntity.java | 9 +-- .../SelectiveContributionUpdateStrategy.java | 2 +- .../java/net/sourceforge/cilib/ec/Individual.java | 2 +- .../java/net/sourceforge/cilib/entity/Harmony.java | 2 +- .../criterion/CriterionBasedMOProblemAdapter.java | 2 +- .../ArchivingIterationStrategy.java | 4 +- .../foundation/NeuralNetworkProblem.java | 7 +- .../CooperativeOptimisationProblemAdapter.java | 2 +- .../net/sourceforge/cilib/problem/MOFitness.java | 8 +- .../cilib/problem/MOOptimisationProblem.java | 12 ++-- .../cilib/problem/OptimisationProblem.java | 3 +- .../cilib/problem/OptimisationProblemAdapter.java | 6 +- .../cilib/pso/dynamic/DynamicParticle.java | 2 +- .../RandomSentryDetectionStrategy.java | 2 +- .../ArchiveReevaluationResponseStrategy.java | 4 +- ...lutionParticleReevaluationResponseStrategy.java | 2 +- .../DominantGuideUpdateStrategy.java | 4 +- .../cilib/pso/particle/MultiObjectiveParticle.java | 2 +- .../cilib/pso/particle/StandardParticle.java | 2 +- .../DEPositionUpdateStrategy.java | 4 +- .../GCVelocityUpdateStrategy.java | 2 +- .../calculator/EntityBasedFitnessCalculator.java | 6 +- .../cilib/util/calculator/FitnessCalculator.java | 4 +- .../calculator/PropertyBasedFitnessCalculator.java | 4 +- .../StructuredTypeFitnessCalculator.java | 4 +- .../crossover/BlendCrossoverStrategyTest.java | 2 +- .../crossover/OnePointCrossoverStrategyTest.java | 2 +- .../crossover/UniformCrossoverStrategyTest.java | 2 +- .../cilib/moo/archive/constrained/ArchiveTest.java | 74 ++++++++++---------- .../constrained/ConstrainedArchiveTest.java | 4 +- .../solutionweighing/SolutionWeighingTest.java | 12 ++-- .../sourceforge/cilib/problem/MOFitnessTest.java | 10 +-- 35 files changed, 104 insertions(+), 113 deletions(-) diff --git a/src/main/java/net/sourceforge/cilib/algorithm/MultistartOptimisationAlgorithm.java b/src/main/java/net/sourceforge/cilib/algorithm/MultistartOptimisationAlgorithm.java index 0ed1bc5..8ef8f51 100644 --- a/src/main/java/net/sourceforge/cilib/algorithm/MultistartOptimisationAlgorithm.java +++ b/src/main/java/net/sourceforge/cilib/algorithm/MultistartOptimisationAlgorithm.java @@ -251,7 +251,7 @@ public class MultistartOptimisationAlgorithm extends Algorithm implements Partic * @see net.sourceforge.cilib.Problem.OptimisationProblemAdapter#calculateFitness(java.lang.Object) */ protected Fitness calculateFitness(Type solution) { - return target.getFitness(solution, true); + return target.getFitness(solution); } public void resetFitnessCounter() { diff --git a/src/main/java/net/sourceforge/cilib/boa/bee/AbstractBee.java b/src/main/java/net/sourceforge/cilib/boa/bee/AbstractBee.java index ceea52b..2f4e1ab 100644 --- a/src/main/java/net/sourceforge/cilib/boa/bee/AbstractBee.java +++ b/src/main/java/net/sourceforge/cilib/boa/bee/AbstractBee.java @@ -97,7 +97,7 @@ public abstract class AbstractBee extends AbstractEntity implements HoneyBee { */ @Override public void calculateFitness() { - this.getProperties().put(EntityType.FITNESS, getFitnessCalculator().getFitness(this, true)); + this.getProperties().put(EntityType.FITNESS, getFitnessCalculator().getFitness(this)); } /** diff --git a/src/main/java/net/sourceforge/cilib/clustering/kmeans/KMeans.java b/src/main/java/net/sourceforge/cilib/clustering/kmeans/KMeans.java index d4fd66c..8f85a73 100644 --- a/src/main/java/net/sourceforge/cilib/clustering/kmeans/KMeans.java +++ b/src/main/java/net/sourceforge/cilib/clustering/kmeans/KMeans.java @@ -73,7 +73,7 @@ public class KMeans extends SingularAlgorithm { /** * Create a copy of the provided instance. - * @param rhs The instance to copy. + * @param copy The instance to copy. */ public KMeans(KMeans copy) { super(copy); @@ -105,7 +105,7 @@ public class KMeans extends SingularAlgorithm { */ @Override public void algorithmIteration() { - calculator.getFitness(centroids, true); + calculator.getFitness(centroids); // the fitness calculation step already arranged the clusters and centroids for us ClusteringUtils helper = ClusteringUtils.get(); @@ -163,7 +163,7 @@ public class KMeans extends SingularAlgorithm { */ @Override public OptimisationSolution getBestSolution() { - return new OptimisationSolution(centroids.getClone(), getOptimisationProblem().getFitness(centroids, false)); + return new OptimisationSolution(centroids.getClone(), getOptimisationProblem().getFitness(centroids)); } /** diff --git a/src/main/java/net/sourceforge/cilib/cooperative/CooperativeEntity.java b/src/main/java/net/sourceforge/cilib/cooperative/CooperativeEntity.java index 4ae1f95..640c41d 100644 --- a/src/main/java/net/sourceforge/cilib/cooperative/CooperativeEntity.java +++ b/src/main/java/net/sourceforge/cilib/cooperative/CooperativeEntity.java @@ -29,7 +29,6 @@ import net.sourceforge.cilib.problem.OptimisationProblem; import net.sourceforge.cilib.type.types.Numeric; import net.sourceforge.cilib.type.types.Type; import net.sourceforge.cilib.type.types.container.StructuredType; -import net.sourceforge.cilib.type.types.container.TypeList; import net.sourceforge.cilib.type.types.container.Vector; /** @@ -52,6 +51,7 @@ public class CooperativeEntity extends AbstractEntity { fitness = rhs.fitness; } + @Override public CooperativeEntity getClone() { return new CooperativeEntity(this); } @@ -137,11 +137,8 @@ public class CooperativeEntity extends AbstractEntity { throw new UnsupportedOperationException("Methd not implemented"); } + @Override public void calculateFitness() { - calculateFitness(true); - } - - public void calculateFitness(boolean count) { - fitness = getFitnessCalculator().getFitness(this, count); + fitness = getFitnessCalculator().getFitness(this); } } diff --git a/src/main/java/net/sourceforge/cilib/cooperative/contributionupdatestrategies/SelectiveContributionUpdateStrategy.java b/src/main/java/net/sourceforge/cilib/cooperative/contributionupdatestrategies/SelectiveContributionUpdateStrategy.java index 5452c99..ddf5bef 100644 --- a/src/main/java/net/sourceforge/cilib/cooperative/contributionupdatestrategies/SelectiveContributionUpdateStrategy.java +++ b/src/main/java/net/sourceforge/cilib/cooperative/contributionupdatestrategies/SelectiveContributionUpdateStrategy.java @@ -38,7 +38,7 @@ public class SelectiveContributionUpdateStrategy implements ContributionUpdateSt dstTest.update(src, srcPos, dstPos, length); // calculate new fitness of updated clone - dstTest.calculateFitness(false); + dstTest.calculateFitness(); // if updated clone is better than original context, update context if(dstTest.compareTo(dst) > 0) { diff --git a/src/main/java/net/sourceforge/cilib/ec/Individual.java b/src/main/java/net/sourceforge/cilib/ec/Individual.java index c1ea82f..c6373e0 100644 --- a/src/main/java/net/sourceforge/cilib/ec/Individual.java +++ b/src/main/java/net/sourceforge/cilib/ec/Individual.java @@ -145,7 +145,7 @@ public class Individual extends AbstractEntity { */ @Override public void calculateFitness() { - this.getProperties().put(EntityType.FITNESS, this.getFitnessCalculator().getFitness(this, true)); + this.getProperties().put(EntityType.FITNESS, this.getFitnessCalculator().getFitness(this)); } /** diff --git a/src/main/java/net/sourceforge/cilib/entity/Harmony.java b/src/main/java/net/sourceforge/cilib/entity/Harmony.java index 85fe665..6b21457 100644 --- a/src/main/java/net/sourceforge/cilib/entity/Harmony.java +++ b/src/main/java/net/sourceforge/cilib/entity/Harmony.java @@ -80,7 +80,7 @@ public class Harmony extends AbstractEntity { */ @Override public void calculateFitness() { - Fitness fitness = getFitnessCalculator().getFitness(this, true); + Fitness fitness = getFitnessCalculator().getFitness(this); this.getProperties().put(EntityType.FITNESS, fitness); } diff --git a/src/main/java/net/sourceforge/cilib/moo/criterion/CriterionBasedMOProblemAdapter.java b/src/main/java/net/sourceforge/cilib/moo/criterion/CriterionBasedMOProblemAdapter.java index e2687c0..c0c23ff 100644 --- a/src/main/java/net/sourceforge/cilib/moo/criterion/CriterionBasedMOProblemAdapter.java +++ b/src/main/java/net/sourceforge/cilib/moo/criterion/CriterionBasedMOProblemAdapter.java @@ -83,7 +83,7 @@ public class CriterionBasedMOProblemAdapter extends OptimisationProblemAdapter { @Override protected Fitness calculateFitness(Type solution) { - return this.problem.getFitness(this.activeIndex, solution, true); + return this.problem.getFitness(this.activeIndex, solution); } @Override diff --git a/src/main/java/net/sourceforge/cilib/moo/iterationstrategies/ArchivingIterationStrategy.java b/src/main/java/net/sourceforge/cilib/moo/iterationstrategies/ArchivingIterationStrategy.java index f8e38ff..124747d 100644 --- a/src/main/java/net/sourceforge/cilib/moo/iterationstrategies/ArchivingIterationStrategy.java +++ b/src/main/java/net/sourceforge/cilib/moo/iterationstrategies/ArchivingIterationStrategy.java @@ -72,12 +72,12 @@ public class ArchivingIterationStrategy<E extends PopulationBasedAlgorithm> impl } protected void updateArchive(Topology<? extends Entity> population) { - Algorithm topLevelAlgorithm = (Algorithm) Algorithm.getAlgorithmList().get(0); + Algorithm topLevelAlgorithm = Algorithm.getAlgorithmList().get(0); List<OptimisationSolution> optimisationSolutions = new ArrayList<OptimisationSolution>(); for (Entity entity : population) { Type solution = entity.getCandidateSolution().getClone(); optimisationSolutions.add(new OptimisationSolution(solution, - topLevelAlgorithm.getOptimisationProblem().getFitness(solution, false))); + topLevelAlgorithm.getOptimisationProblem().getFitness(solution))); } Archive.get().addAll(optimisationSolutions); } diff --git a/src/main/java/net/sourceforge/cilib/neuralnetwork/foundation/NeuralNetworkProblem.java b/src/main/java/net/sourceforge/cilib/neuralnetwork/foundation/NeuralNetworkProblem.java index 8f54433..de82adf 100644 --- a/src/main/java/net/sourceforge/cilib/neuralnetwork/foundation/NeuralNetworkProblem.java +++ b/src/main/java/net/sourceforge/cilib/neuralnetwork/foundation/NeuralNetworkProblem.java @@ -76,11 +76,10 @@ public class NeuralNetworkProblem implements OptimisationProblem, Initializable return evaluationStrategy.evaluate(p); } - public Fitness getFitness(Type solution, boolean count) { + @Override + public Fitness getFitness(Type solution) { + ++fitnessEvaluations; - if (count) { - ++fitnessEvaluations; - } this.getTopology().setWeights((Vector) solution); //Defaults to first error element as the main fitness... diff --git a/src/main/java/net/sourceforge/cilib/problem/CooperativeOptimisationProblemAdapter.java b/src/main/java/net/sourceforge/cilib/problem/CooperativeOptimisationProblemAdapter.java index 316d620..42ed4ab 100644 --- a/src/main/java/net/sourceforge/cilib/problem/CooperativeOptimisationProblemAdapter.java +++ b/src/main/java/net/sourceforge/cilib/problem/CooperativeOptimisationProblemAdapter.java @@ -111,7 +111,7 @@ public class CooperativeOptimisationProblemAdapter extends OptimisationProblemAd for (int i = 0; i < dimension; ++i) { ((Vector) context.getCandidateSolution()).setReal(offset + i, participant.getReal(i)); } - return problem.getFitness(context.getCandidateSolution(), true); + return problem.getFitness(context.getCandidateSolution()); } public DomainRegistry getDomain() { diff --git a/src/main/java/net/sourceforge/cilib/problem/MOFitness.java b/src/main/java/net/sourceforge/cilib/problem/MOFitness.java index a6144a6..4edfc45 100644 --- a/src/main/java/net/sourceforge/cilib/problem/MOFitness.java +++ b/src/main/java/net/sourceforge/cilib/problem/MOFitness.java @@ -34,19 +34,19 @@ public class MOFitness implements Fitness { private static final long serialVersionUID = 1477723759384827131L; private Fitness[] fitnesses; - public MOFitness(MOOptimisationProblem problem, Type[] solution, boolean count) { + public MOFitness(MOOptimisationProblem problem, Type[] solution) { int size = problem.size(); fitnesses = new Fitness[size]; for (int i = 0; i < size; ++i) { - fitnesses[i] = problem.getFitness(i, solution[i], count); + fitnesses[i] = problem.getFitness(i, solution[i]); } } - public MOFitness(MOOptimisationProblem problem, Type solution, boolean count) { + public MOFitness(MOOptimisationProblem problem, Type solution) { int size = problem.size(); fitnesses = new Fitness[size]; for (int i = 0; i < size; ++i) { - fitnesses[i] = problem.getFitness(i, solution, count); + fitnesses[i] = problem.getFitness(i, solution); } } diff --git a/src/main/java/net/sourceforge/cilib/problem/MOOptimisationProblem.java b/src/main/java/net/sourceforge/cilib/problem/MOOptimisationProblem.java index 54b4b4a..ccc139f 100644 --- a/src/main/java/net/sourceforge/cilib/problem/MOOptimisationProblem.java +++ b/src/main/java/net/sourceforge/cilib/problem/MOOptimisationProblem.java @@ -56,17 +56,17 @@ public class MOOptimisationProblem implements OptimisationProblem, List<Optimisa return new MOOptimisationProblem(this); } - public MOFitness getFitness(Type[] solutions, boolean count) { - return new MOFitness(this, solutions, count); + public MOFitness getFitness(Type[] solutions) { + return new MOFitness(this, solutions); } @Override - public MOFitness getFitness(Type solution, boolean count) { - return new MOFitness(this, solution, count); + public MOFitness getFitness(Type solution) { + return new MOFitness(this, solution); } - public Fitness getFitness(int index, Type solution, boolean count) { - return problems.get(index).getFitness(solution, count); + public Fitness getFitness(int index, Type solution) { + return problems.get(index).getFitness(solution); } @Override diff --git a/src/main/java/net/sourceforge/cilib/problem/OptimisationProblem.java b/src/main/java/net/sourceforge/cilib/problem/OptimisationProblem.java index a5437c2..454aaa9 100644 --- a/src/main/java/net/sourceforge/cilib/problem/OptimisationProblem.java +++ b/src/main/java/net/sourceforge/cilib/problem/OptimisationProblem.java @@ -53,10 +53,9 @@ public interface OptimisationProblem extends Problem { * falls outside the search space of this problem. * * @param solution The potential solution found by the optimisation algorithm. - * @param count True if this call should contribute to the fitness evaluation count, see {@link #getFitnessEvaluations()}. * @return The fitness of the solution. */ - public Fitness getFitness(Type solution, boolean count); + public Fitness getFitness(Type solution); /** * Returns the number of times the underlying fitness function has been evaluated. diff --git a/src/main/java/net/sourceforge/cilib/problem/OptimisationProblemAdapter.java b/src/main/java/net/sourceforge/cilib/problem/OptimisationProblemAdapter.java index 1b2e37d..aa7288d 100644 --- a/src/main/java/net/sourceforge/cilib/problem/OptimisationProblemAdapter.java +++ b/src/main/java/net/sourceforge/cilib/problem/OptimisationProblemAdapter.java @@ -72,10 +72,8 @@ public abstract class OptimisationProblemAdapter implements OptimisationProblem /** * {@inheritDoc} */ - public final Fitness getFitness(Type solution, boolean count) { - if (count) { - fitnessEvaluations.incrementAndGet(); - } + public final Fitness getFitness(Type solution) { + fitnessEvaluations.incrementAndGet(); if (this.changeStrategy.shouldApply(this)) changeEnvironment(); diff --git a/src/main/java/net/sourceforge/cilib/pso/dynamic/DynamicParticle.java b/src/main/java/net/sourceforge/cilib/pso/dynamic/DynamicParticle.java index efa583e..a69ac96 100644 --- a/src/main/java/net/sourceforge/cilib/pso/dynamic/DynamicParticle.java +++ b/src/main/java/net/sourceforge/cilib/pso/dynamic/DynamicParticle.java @@ -52,7 +52,7 @@ public class DynamicParticle extends StandardParticle { * Re-evaluate both best and current position of the particle. */ public void reevaluate() { - this.getProperties().put(EntityType.Particle.BEST_FITNESS, getFitnessCalculator().getFitness(this, true)); + this.getProperties().put(EntityType.Particle.BEST_FITNESS, getFitnessCalculator().getFitness(this)); this.calculateFitness(); } } 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 11f0fb3..95387a7 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 @@ -79,7 +79,7 @@ public class RandomSentryDetectionStrategy<E extends PopulationBasedAlgorithm> e for (Entity nextSentry : sentryList) { double oldSentryFitness = nextSentry.getFitness().getValue(); nextSentry.calculateFitness(); - double newSentryFitness = algorithm.getOptimisationProblem().getFitness(nextSentry.getCandidateSolution(), false).getValue(); + double newSentryFitness = algorithm.getOptimisationProblem().getFitness(nextSentry.getCandidateSolution()).getValue(); if(Math.abs(oldSentryFitness - newSentryFitness) >= theta) { envChangeOccured = true; diff --git a/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/ArchiveReevaluationResponseStrategy.java b/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/ArchiveReevaluationResponseStrategy.java index 10db1e8..cce4afd 100644 --- a/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/ArchiveReevaluationResponseStrategy.java +++ b/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/ArchiveReevaluationResponseStrategy.java @@ -46,7 +46,7 @@ public class ArchiveReevaluationResponseStrategy extends EnvironmentChangeRespon @Override protected void performReaction(PopulationBasedAlgorithm algorithm) { for (Entity entity : algorithm.getTopology()) { - entity.getProperties().put(EntityType.Particle.BEST_FITNESS, entity.getFitnessCalculator().getFitness(entity, true)); + entity.getProperties().put(EntityType.Particle.BEST_FITNESS, entity.getFitnessCalculator().getFitness(entity)); //entity.getProperties().put(EntityType.Particle.BEST_POSITION, entity.getCandidateSolution()); entity.calculateFitness(); } @@ -56,7 +56,7 @@ public class ArchiveReevaluationResponseStrategy extends EnvironmentChangeRespon List<OptimisationSolution> newList = new LinkedList<OptimisationSolution>(); for (OptimisationSolution solution : Archive.get()) { - OptimisationSolution os = new OptimisationSolution(solution.getPosition(), problem.getFitness(solution.getPosition(), false)); + OptimisationSolution os = new OptimisationSolution(solution.getPosition(), problem.getFitness(solution.getPosition())); newList.add(os); } diff --git a/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/CompetitiveCoevolutionParticleReevaluationResponseStrategy.java b/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/CompetitiveCoevolutionParticleReevaluationResponseStrategy.java index f3140f8..15c0b15 100644 --- a/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/CompetitiveCoevolutionParticleReevaluationResponseStrategy.java +++ b/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/CompetitiveCoevolutionParticleReevaluationResponseStrategy.java @@ -70,7 +70,7 @@ public class CompetitiveCoevolutionParticleReevaluationResponseStrategy<E extend Blackboard<Enum<?>, Type> blackboard = new Blackboard<Enum<?>, Type>(); blackboard.put(EntityType.CANDIDATE_SOLUTION, ((AbstractParticle)e).getBestPosition()); blackboard.put(EntityType.Coevolution.BOARD, new EntityScoreboard()); - Fitness val = currentAlgorithm.getOptimisationProblem().getFitness(blackboard, false); + Fitness val = currentAlgorithm.getOptimisationProblem().getFitness(blackboard); e.getProperties().put(EntityType.Particle.BEST_FITNESS, val); //if currentV is better than re-evaluated pBest, then replace it if (e.getFitness().compareTo(e.getBestFitness()) > 0) { diff --git a/src/main/java/net/sourceforge/cilib/pso/moo/guideupdatestrategies/DominantGuideUpdateStrategy.java b/src/main/java/net/sourceforge/cilib/pso/moo/guideupdatestrategies/DominantGuideUpdateStrategy.java index 22d529e..fccbd7d 100644 --- a/src/main/java/net/sourceforge/cilib/pso/moo/guideupdatestrategies/DominantGuideUpdateStrategy.java +++ b/src/main/java/net/sourceforge/cilib/pso/moo/guideupdatestrategies/DominantGuideUpdateStrategy.java @@ -56,8 +56,8 @@ public class DominantGuideUpdateStrategy implements GuideUpdateStrategy { Vector previousGuide = (Vector) particle.getProperties().get(guideType); Algorithm topLevelAlgorithm = Algorithm.getAlgorithmList().get(0); OptimisationProblem problem = topLevelAlgorithm.getOptimisationProblem(); - Fitness currentFitness = problem.getFitness(newGuide, false); - if (previousGuide == null || currentFitness.compareTo(problem.getFitness(previousGuide, false)) > 0) { + Fitness currentFitness = problem.getFitness(newGuide); + if (previousGuide == null || currentFitness.compareTo(problem.getFitness(previousGuide)) > 0) { particle.getProperties().put(guideType, newGuide); } } diff --git a/src/main/java/net/sourceforge/cilib/pso/particle/MultiObjectiveParticle.java b/src/main/java/net/sourceforge/cilib/pso/particle/MultiObjectiveParticle.java index 272f0ab..cc66ed5 100644 --- a/src/main/java/net/sourceforge/cilib/pso/particle/MultiObjectiveParticle.java +++ b/src/main/java/net/sourceforge/cilib/pso/particle/MultiObjectiveParticle.java @@ -33,7 +33,7 @@ public class MultiObjectiveParticle extends StandardParticle { private static final long serialVersionUID = 2449622504036301616L; public void setBestPosition(Type bestPosition) { - Fitness bestPositionFitness = Algorithm.get().getOptimisationProblem().getFitness(bestPosition, false); + Fitness bestPositionFitness = Algorithm.get().getOptimisationProblem().getFitness(bestPosition); this.getProperties().put(EntityType.Particle.BEST_POSITION, bestPosition.getClone()); this.getProperties().put(EntityType.Particle.BEST_FITNESS, bestPositionFitness); diff --git a/src/main/java/net/sourceforge/cilib/pso/particle/StandardParticle.java b/src/main/java/net/sourceforge/cilib/pso/particle/StandardParticle.java index 5176e8f..6f2cb2d 100644 --- a/src/main/java/net/sourceforge/cilib/pso/particle/StandardParticle.java +++ b/src/main/java/net/sourceforge/cilib/pso/particle/StandardParticle.java @@ -163,7 +163,7 @@ public class StandardParticle extends AbstractParticle { */ @Override public void calculateFitness() { - Fitness fitness = getFitnessCalculator().getFitness(this, true); + Fitness fitness = getFitnessCalculator().getFitness(this); this.getProperties().put(EntityType.FITNESS, fitness); this.personalBestUpdateStrategy.updatePersonalBest(this); diff --git a/src/main/java/net/sourceforge/cilib/pso/positionupdatestrategies/DEPositionUpdateStrategy.java b/src/main/java/net/sourceforge/cilib/pso/positionupdatestrategies/DEPositionUpdateStrategy.java index 3c244cd..2ac5646 100755 --- a/src/main/java/net/sourceforge/cilib/pso/positionupdatestrategies/DEPositionUpdateStrategy.java +++ b/src/main/java/net/sourceforge/cilib/pso/positionupdatestrategies/DEPositionUpdateStrategy.java @@ -123,8 +123,8 @@ public class DEPositionUpdateStrategy implements PositionUpdateStrategy { //position should only become the offspring if its fitness is better - Fitness trialFitness = pso.getOptimisationProblem().getFitness(dePosition, false); - Fitness currentFitness = pso.getOptimisationProblem().getFitness(particle.getCandidateSolution(), false); + Fitness trialFitness = pso.getOptimisationProblem().getFitness(dePosition); + Fitness currentFitness = pso.getOptimisationProblem().getFitness(particle.getCandidateSolution()); if (trialFitness.compareTo(currentFitness) > 0) { particle.setCandidateSolution(dePosition); diff --git a/src/main/java/net/sourceforge/cilib/pso/velocityupdatestrategies/GCVelocityUpdateStrategy.java b/src/main/java/net/sourceforge/cilib/pso/velocityupdatestrategies/GCVelocityUpdateStrategy.java index 9bdfee4..cba2489 100644 --- a/src/main/java/net/sourceforge/cilib/pso/velocityupdatestrategies/GCVelocityUpdateStrategy.java +++ b/src/main/java/net/sourceforge/cilib/pso/velocityupdatestrategies/GCVelocityUpdateStrategy.java @@ -159,7 +159,7 @@ public class GCVelocityUpdateStrategy extends StandardVelocityUpdate { PSO pso = (PSO) Algorithm.get(); if (particle == pso.getTopology().getBestEntity(new SocialBestFitnessComparator<Particle>())) { - Fitness newFitness = particle.getFitnessCalculator().getFitness(particle, false); + Fitness newFitness = particle.getFitnessCalculator().getFitness(particle); if (!newFitness.equals(oldFitness)) { this.failureCount = 0; diff --git a/src/main/java/net/sourceforge/cilib/util/calculator/EntityBasedFitnessCalculator.java b/src/main/java/net/sourceforge/cilib/util/calculator/EntityBasedFitnessCalculator.java index afd5933..8b19b18 100644 --- a/src/main/java/net/sourceforge/cilib/util/calculator/EntityBasedFitnessCalculator.java +++ b/src/main/java/net/sourceforge/cilib/util/calculator/EntityBasedFitnessCalculator.java @@ -35,6 +35,7 @@ public class EntityBasedFitnessCalculator implements FitnessCalculator<Entity> { /** * {@inheritDoc} */ + @Override public EntityBasedFitnessCalculator getClone() { return this; } @@ -42,9 +43,10 @@ public class EntityBasedFitnessCalculator implements FitnessCalculator<Entity> { /** * {@inheritDoc} */ - public Fitness getFitness(Entity entity, boolean count) { + @Override + public Fitness getFitness(Entity entity) { Algorithm algorithm = Algorithm.get(); - return algorithm.getOptimisationProblem().getFitness(entity.getCandidateSolution(), count); + return algorithm.getOptimisationProblem().getFitness(entity.getCandidateSolution()); } } diff --git a/src/main/java/net/sourceforge/cilib/util/calculator/FitnessCalculator.java b/src/main/java/net/sourceforge/cilib/util/calculator/FitnessCalculator.java index 51ecf75..8ef9a07 100644 --- a/src/main/java/net/sourceforge/cilib/util/calculator/FitnessCalculator.java +++ b/src/main/java/net/sourceforge/cilib/util/calculator/FitnessCalculator.java @@ -34,14 +34,14 @@ public interface FitnessCalculator<T> extends Cloneable { /** * {@inheritDoc} */ + @Override public FitnessCalculator<T> getClone(); /** * Get the fitness, given the <code>position</code>. * @param entity The <code>Type</code> to base the calculation on. - * @param count Whether or not the evaluation is to be counted. * @return A <code>Fitness</code> object representing the fitness of the <code>position</code>. */ - public Fitness getFitness(T entity, boolean count); + public Fitness getFitness(T entity); } diff --git a/src/main/java/net/sourceforge/cilib/util/calculator/PropertyBasedFitnessCalculator.java b/src/main/java/net/sourceforge/cilib/util/calculator/PropertyBasedFitnessCalculator.java index 78783d3..39479ee 100644 --- a/src/main/java/net/sourceforge/cilib/util/calculator/PropertyBasedFitnessCalculator.java +++ b/src/main/java/net/sourceforge/cilib/util/calculator/PropertyBasedFitnessCalculator.java @@ -45,8 +45,8 @@ public class PropertyBasedFitnessCalculator implements * {@inheritDoc} */ @Override - public Fitness getFitness(Entity entity, boolean count) { + public Fitness getFitness(Entity entity) { Algorithm algorithm = Algorithm.get(); - return algorithm.getOptimisationProblem().getFitness(entity.getProperties(), count); + return algorithm.getOptimisationProblem().getFitness(entity.getProperties()); } } diff --git a/src/main/java/net/sourceforge/cilib/util/calculator/StructuredTypeFitnessCalculator.java b/src/main/java/net/sourceforge/cilib/util/calculator/StructuredTypeFitnessCalculator.java index 5fe4d24..5e77f38 100644 --- a/src/main/java/net/sourceforge/cilib/util/calculator/StructuredTypeFitnessCalculator.java +++ b/src/main/java/net/sourceforge/cilib/util/calculator/StructuredTypeFitnessCalculator.java @@ -46,9 +46,9 @@ public class StructuredTypeFitnessCalculator<T extends StructuredType<?>> implem * {@inheritDoc} */ @Override - public Fitness getFitness(T structure, boolean count) { + public Fitness getFitness(T structure) { Algorithm algorithm = Algorithm.get(); - return algorithm.getOptimisationProblem().getFitness(structure, count); + return algorithm.getOptimisationProblem().getFitness(structure); } } diff --git a/src/test/java/net/sourceforge/cilib/entity/operators/crossover/BlendCrossoverStrategyTest.java b/src/test/java/net/sourceforge/cilib/entity/operators/crossover/BlendCrossoverStrategyTest.java index b66511a..7035d52 100644 --- a/src/test/java/net/sourceforge/cilib/entity/operators/crossover/BlendCrossoverStrategyTest.java +++ b/src/test/java/net/sourceforge/cilib/entity/operators/crossover/BlendCrossoverStrategyTest.java @@ -84,7 +84,7 @@ public class BlendCrossoverStrategyTest { } @Override - public Fitness getFitness(Individual entity, boolean count) { + public Fitness getFitness(Individual entity) { return InferiorFitness.instance(); } } diff --git a/src/test/java/net/sourceforge/cilib/entity/operators/crossover/OnePointCrossoverStrategyTest.java b/src/test/java/net/sourceforge/cilib/entity/operators/crossover/OnePointCrossoverStrategyTest.java index e7805ca..f6a97df 100644 --- a/src/test/java/net/sourceforge/cilib/entity/operators/crossover/OnePointCrossoverStrategyTest.java +++ b/src/test/java/net/sourceforge/cilib/entity/operators/crossover/OnePointCrossoverStrategyTest.java @@ -84,7 +84,7 @@ public class OnePointCrossoverStrategyTest { } @Override - public Fitness getFitness(Individual entity, boolean count) { + public Fitness getFitness(Individual entity) { return InferiorFitness.instance(); } } diff --git a/src/test/java/net/sourceforge/cilib/entity/operators/crossover/UniformCrossoverStrategyTest.java b/src/test/java/net/sourceforge/cilib/entity/operators/crossover/UniformCrossoverStrategyTest.java index daae496..f132db1 100644 --- a/src/test/java/net/sourceforge/cilib/entity/operators/crossover/UniformCrossoverStrategyTest.java +++ b/src/test/java/net/sourceforge/cilib/entity/operators/crossover/UniformCrossoverStrategyTest.java @@ -84,7 +84,7 @@ public class UniformCrossoverStrategyTest { } @Override - public Fitness getFitness(Individual entity, boolean count) { + public Fitness getFitness(Individual entity) { return InferiorFitness.instance(); } } diff --git a/src/test/java/net/sourceforge/cilib/moo/archive/constrained/ArchiveTest.java b/src/test/java/net/sourceforge/cilib/moo/archive/constrained/ArchiveTest.java index a6cbc2a..8a1a84a 100644 --- a/src/test/java/net/sourceforge/cilib/moo/archive/constrained/ArchiveTest.java +++ b/src/test/java/net/sourceforge/cilib/moo/archive/constrained/ArchiveTest.java @@ -234,29 +234,29 @@ public class ArchiveTest { // and test if the fitness-value is correct. Iterator<Vector> vectorIterator = testVectors.iterator(); Vector testVector = vectorIterator.next(); - MOFitness fitness = (MOFitness) problem.getFitness(testVector, false); + MOFitness fitness = problem.getFitness(testVector); assertThat(fitness.getDimension(), is(2)); assertEquals(1.46361111111, fitness.getFitness(0).getValue(), EPSILON); assertEquals(55, fitness.getFitness(1).getValue(), EPSILON); - archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem.getFitness(testVector, false)))); - assertThat(archive.contains(new OptimisationSolution(testVector, problem.getFitness(testVector, false))), is(true)); + archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem.getFitness(testVector)))); + assertThat(archive.contains(new OptimisationSolution(testVector, problem.getFitness(testVector))), is(true)); testVector = vectorIterator.next(); - fitness = (MOFitness) problem.getFitness(testVector, false); + fitness = problem.getFitness(testVector); assertThat(fitness.getDimension(), is(2)); assertEquals(0.491388888889, fitness.getFitness(0).getValue(), EPSILON); assertEquals(90, fitness.getFitness(1).getValue(), EPSILON); - archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem.getFitness(testVector, false)))); - assertThat(archive.contains(new OptimisationSolution(testVector, problem.getFitness(testVector, false))), is(true)); + archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem.getFitness(testVector)))); + assertThat(archive.contains(new OptimisationSolution(testVector, problem.getFitness(testVector))), is(true)); assertThat(archive.size(), is(2)); testVector = vectorIterator.next(); - fitness = (MOFitness) problem.getFitness(testVector, false); + fitness = problem.getFitness(testVector); assertThat(fitness.getDimension(), is(2)); assertEquals(0.261797052154, fitness.getFitness(0).getValue(), EPSILON); assertEquals(135, fitness.getFitness(1).getValue(), EPSILON); - archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem.getFitness(testVector, false)))); - assertThat(archive.contains(new OptimisationSolution(testVector, problem.getFitness(testVector, false))), is(true)); + archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem.getFitness(testVector)))); + assertThat(archive.contains(new OptimisationSolution(testVector, problem.getFitness(testVector))), is(true)); assertThat(archive.size(), is(3)); // After the archive size has been monitored continuously, insert the exact same solutions into the archive again. @@ -264,9 +264,9 @@ public class ArchiveTest { vectorIterator = testVectors.iterator(); while (vectorIterator.hasNext()) { testVector = vectorIterator.next(); - fitness = (MOFitness) problem.getFitness(testVector, false); + fitness = problem.getFitness(testVector); assertThat(fitness.getDimension(), is(2)); - archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem.getFitness(testVector, false)))); + archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem.getFitness(testVector)))); } // Archive size must stay the same due to set-based behavior of archive. assertThat(archive.size(), is(3)); @@ -284,7 +284,7 @@ public class ArchiveTest { DummyOptimisationProblem1 problem1 = new DummyOptimisationProblem1(); Collection<Vector> testVectors = createDummyVectors(); for (Vector testVector : testVectors) { - archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem1.getFitness(testVector, false)))); + archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem1.getFitness(testVector)))); } // Arhive size is now 3. assertThat(archive.size(), is(3)); @@ -296,13 +296,13 @@ public class ArchiveTest { DummyOptimisationProblem2 problem2 = new DummyOptimisationProblem2(); Iterator<Vector> vectorIterator = testVectors.iterator(); Vector testVector = vectorIterator.next(); - MOFitness fitness = (MOFitness) problem2.getFitness(testVector, false); + MOFitness fitness = problem2.getFitness(testVector); assertThat(fitness.getDimension(), is(2)); assertEquals(2.92722222222, fitness.getFitness(0).getValue(), EPSILON); assertEquals(110, fitness.getFitness(1).getValue(), EPSILON); // Then, check which solutions (corresponding to problem 1) dominates the first external solution corresponding to problem 2. - Collection<OptimisationSolution> dominantSolutions = archive.dominates(new OptimisationSolution(testVector, problem2.getFitness(testVector, false))); + Collection<OptimisationSolution> dominantSolutions = archive.dominates(new OptimisationSolution(testVector, problem2.getFitness(testVector))); assertThat(dominantSolutions.size(), is(2)); Iterator<OptimisationSolution> dominantIterator = dominantSolutions.iterator(); @@ -323,22 +323,22 @@ public class ArchiveTest { // solution with fitness (2.92722222222, 110) which is correct. // Finally, check that archive does not accept this solution. - archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem2.getFitness(testVector, false)))); + archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem2.getFitness(testVector)))); assertThat(archive.size(), is(3)); - assertThat(archive.contains(new OptimisationSolution(testVector, problem2.getFitness(testVector, false))), is(false)); + assertThat(archive.contains(new OptimisationSolution(testVector, problem2.getFitness(testVector))), is(false)); // For the second vector (2,3,4,5,6) calculate the fitness in terms of optimisation problem 2 and check it. testVector = vectorIterator.next(); - fitness = (MOFitness) problem2.getFitness(testVector, false); + fitness = problem2.getFitness(testVector); assertThat(fitness.getDimension(), is(2)); assertEquals(0.982777777778, fitness.getFitness(0).getValue(), EPSILON); assertEquals(180, fitness.getFitness(1).getValue(), EPSILON); // Now, check which solutions (corresponding to problem 1) dominates the second external solution corresponding to problem 2. - dominantSolutions = archive.dominates(new OptimisationSolution(testVector, problem2.getFitness(testVector, false))); + dominantSolutions = archive.dominates(new OptimisationSolution(testVector, problem2.getFitness(testVector))); assertThat(dominantSolutions.size(), is(2)); dominantIterator = dominantSolutions.iterator(); @@ -359,22 +359,22 @@ public class ArchiveTest { // solution with fitness (0.982777777778, 180) which is correct. // Finally, check that archive does not accept this solution. - archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem2.getFitness(testVector, false)))); + archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem2.getFitness(testVector)))); assertThat(archive.size(), is(3)); - assertThat(archive.contains(new OptimisationSolution(testVector, problem2.getFitness(testVector, false))), is(false)); + assertThat(archive.contains(new OptimisationSolution(testVector, problem2.getFitness(testVector))), is(false)); // For the third vector (3,4,5,6,7) calculate the fitness in terms of optimisation problem 2 and check it. testVector = vectorIterator.next(); - fitness = (MOFitness) problem2.getFitness(testVector, false); + fitness = problem2.getFitness(testVector); assertThat(fitness.getDimension(), is(2)); assertEquals(0.523594104308, fitness.getFitness(0).getValue(), EPSILON); assertEquals(270, fitness.getFitness(1).getValue(), EPSILON); // Now, check which solutions (corresponding to problem 1) dominates the second solution corresponding to problem 2. - dominantSolutions = archive.dominates(new OptimisationSolution(testVector, problem2.getFitness(testVector, false))); + dominantSolutions = archive.dominates(new OptimisationSolution(testVector, problem2.getFitness(testVector))); assertThat(dominantSolutions.size(), is(2)); dominantIterator = dominantSolutions.iterator(); @@ -395,9 +395,9 @@ public class ArchiveTest { // solution with fitness (0.523594104308, 270) which is correct. // Finally, check that archive does not accept this solution. - archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem2.getFitness(testVector, false)))); + archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem2.getFitness(testVector)))); assertThat(archive.size(), is(3)); - assertThat(archive.contains(new OptimisationSolution(testVector, problem2.getFitness(testVector, false))), is(false)); + assertThat(archive.contains(new OptimisationSolution(testVector, problem2.getFitness(testVector))), is(false)); } /** @@ -413,7 +413,7 @@ public class ArchiveTest { DummyOptimisationProblem2 problem2 = new DummyOptimisationProblem2(); Collection<Vector> testVectors = createDummyVectors(); for (Vector testVector : testVectors) { - archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem2.getFitness(testVector, false)))); + archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem2.getFitness(testVector)))); } // Arhive size is now 3. assertThat(archive.size(), is(3)); @@ -425,13 +425,13 @@ public class ArchiveTest { DummyOptimisationProblem1 problem1 = new DummyOptimisationProblem1(); Iterator<Vector> vectorIterator = testVectors.iterator(); Vector testVector = vectorIterator.next(); - MOFitness fitness = (MOFitness) problem1.getFitness(testVector, false); + MOFitness fitness = problem1.getFitness(testVector); assertThat(fitness.getDimension(), is(2)); assertEquals(1.46361111111, fitness.getFitness(0).getValue(), EPSILON); assertEquals(55, fitness.getFitness(1).getValue(), EPSILON); // Then, check which solutions (corresponding to problem 2) is dominated by the first external solution corresponding to problem 1. - Collection<OptimisationSolution> dominatedSolutions = archive.isDominatedBy(new OptimisationSolution(testVector, problem1.getFitness(testVector, false))); + Collection<OptimisationSolution> dominatedSolutions = archive.isDominatedBy(new OptimisationSolution(testVector, problem1.getFitness(testVector))); assertThat(dominatedSolutions.size(), is(1)); Iterator<OptimisationSolution> dominatedIterator = dominatedSolutions.iterator(); @@ -445,10 +445,10 @@ public class ArchiveTest { // Thus, no more solutions in archive is dominated by this external solution. // Now, insert this external solution and it should replace abovementioned dominated solution. - archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem1.getFitness(testVector, false)))); + archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem1.getFitness(testVector)))); assertThat(archive.size(), is(3)); assertThat(archive.contains(dominatedSolution), is(false)); - assertThat(archive.contains(new OptimisationSolution(testVector, problem1.getFitness(testVector, false))), is(true)); + assertThat(archive.contains(new OptimisationSolution(testVector, problem1.getFitness(testVector))), is(true)); // -- Arhive contains (0.982777777778, 180); (0.523594104308, 270); new --> (1.46361111111, 55) <-- new; @@ -457,13 +457,13 @@ public class ArchiveTest { // For the second vector (2,3,4,5,6) calculate the fitness in terms of optimisation problem 1 and check it. testVector = vectorIterator.next(); - fitness = (MOFitness) problem1.getFitness(testVector, false); + fitness = problem1.getFitness(testVector); assertThat(fitness.getDimension(), is(2)); assertEquals(0.491388888889, fitness.getFitness(0).getValue(), EPSILON); assertEquals(90, fitness.getFitness(1).getValue(), EPSILON); // Then, check which solutions (corresponding to problem 2) is dominated by the second external solution corresponding to problem 1. - dominatedSolutions = archive.isDominatedBy(new OptimisationSolution(testVector, problem1.getFitness(testVector, false))); + dominatedSolutions = archive.isDominatedBy(new OptimisationSolution(testVector, problem1.getFitness(testVector))); assertThat(dominatedSolutions.size(), is(2)); dominatedIterator = dominatedSolutions.iterator(); @@ -480,11 +480,11 @@ public class ArchiveTest { assertEquals(270, ((MOFitness) dominatedSolution2.getFitness()).getFitness(1).getValue(), EPSILON); // Now, insert this external solution and it should replace both of the abovementioned dominated solutions. - archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem1.getFitness(testVector, false)))); + archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem1.getFitness(testVector)))); assertThat(archive.size(), is(2)); assertThat(archive.contains(dominatedSolution1), is(false)); assertThat(archive.contains(dominatedSolution2), is(false)); - assertThat(archive.contains(new OptimisationSolution(testVector, problem1.getFitness(testVector, false))), is(true)); + assertThat(archive.contains(new OptimisationSolution(testVector, problem1.getFitness(testVector))), is(true)); // -- Arhive contains (1.46361111111, 55); new --> (0.491388888889, 90) <-- new; @@ -493,19 +493,19 @@ public class ArchiveTest { // For the third vector (3,4,5,6,7) calculate the fitness in terms of optimisation problem 1 and check it. testVector = vectorIterator.next(); - fitness = (MOFitness) problem1.getFitness(testVector, false); + fitness = problem1.getFitness(testVector); assertThat(fitness.getDimension(), is(2)); assertEquals(0.261797052154, fitness.getFitness(0).getValue(), EPSILON); assertEquals(135, fitness.getFitness(1).getValue(), EPSILON); // Then, check which solutions (corresponding to problem 2) is dominated by the second external solution corresponding to problem 1. - dominatedSolutions = archive.isDominatedBy(new OptimisationSolution(testVector, problem1.getFitness(testVector, false))); + dominatedSolutions = archive.isDominatedBy(new OptimisationSolution(testVector, problem1.getFitness(testVector))); assertThat(dominatedSolutions.size(), is(0)); // No solutions dominate external solution. // Now, insert this external solution and it should be accepted in archive and not replace any other solution. - archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem1.getFitness(testVector, false)))); + archive.addAll(Arrays.asList(new OptimisationSolution(testVector, problem1.getFitness(testVector)))); assertThat(archive.size(), is(3)); - assertThat(archive.contains(new OptimisationSolution(testVector, problem1.getFitness(testVector, false))), is(true)); + assertThat(archive.contains(new OptimisationSolution(testVector, problem1.getFitness(testVector))), is(true)); // -- Archive contains (1.46361111111, 55); (0.491388888889, 90); (0.261797052154, 135); } diff --git a/src/test/java/net/sourceforge/cilib/moo/archive/constrained/ConstrainedArchiveTest.java b/src/test/java/net/sourceforge/cilib/moo/archive/constrained/ConstrainedArchiveTest.java index 05b3737..8a8491f 100644 --- a/src/test/java/net/sourceforge/cilib/moo/archive/constrained/ConstrainedArchiveTest.java +++ b/src/test/java/net/sourceforge/cilib/moo/archive/constrained/ConstrainedArchiveTest.java @@ -190,7 +190,7 @@ public class ConstrainedArchiveTest { for (int j = i; j < i + 5; ++j) { vector.add(new Real(j)); } - archive.addAll(Arrays.asList(new OptimisationSolution(vector, problem.getFitness(vector, false)))); + archive.addAll(Arrays.asList(new OptimisationSolution(vector, problem.getFitness(vector)))); } assertThat(archive.size(), is(100)); archive.clear(); @@ -201,7 +201,7 @@ public class ConstrainedArchiveTest { for (int j = i; j < i + 5; ++j) { vector.add(new Real(j)); } - solutions.add(new OptimisationSolution(vector, problem.getFitness(vector, false))); + solutions.add(new OptimisationSolution(vector, problem.getFitness(vector))); } archive.addAll(solutions); assertThat(archive.size(), is(100)); diff --git a/src/test/java/net/sourceforge/cilib/moo/archive/solutionweighing/SolutionWeighingTest.java b/src/test/java/net/sourceforge/cilib/moo/archive/solutionweighing/SolutionWeighingTest.java index ae30953..9d2ef20 100644 --- a/src/test/java/net/sourceforge/cilib/moo/archive/solutionweighing/SolutionWeighingTest.java +++ b/src/test/java/net/sourceforge/cilib/moo/archive/solutionweighing/SolutionWeighingTest.java @@ -72,7 +72,7 @@ public class SolutionWeighingTest { } @Override - public Fitness getFitness(Type solution, boolean count) { + public Fitness getFitness(Type solution) { Vector position = (Vector) solution; return new MinimisationFitness(position.getReal(index)); } @@ -123,27 +123,27 @@ public class SolutionWeighingTest { Vector position = new Vector(); position.add(new Real(1)); position.add(new Real(1)); - solutions.add(new OptimisationSolution(position, moProblem.getFitness(position, false))); + solutions.add(new OptimisationSolution(position, moProblem.getFitness(position))); position = new Vector(); position.add(new Real(2)); position.add(new Real(4)); - solutions.add(new OptimisationSolution(position, moProblem.getFitness(position, false))); + solutions.add(new OptimisationSolution(position, moProblem.getFitness(position))); position = new Vector(); position.add(new Real(3)); position.add(new Real(2)); - solutions.add(new OptimisationSolution(position, moProblem.getFitness(position, false))); + solutions.add(new OptimisationSolution(position, moProblem.getFitness(position))); position = new Vector(); position.add(new Real(4)); position.add(new Real(6)); - solutions.add(new OptimisationSolution(position, moProblem.getFitness(position, false))); + solutions.add(new OptimisationSolution(position, moProblem.getFitness(position))); position = new Vector(); position.add(new Real(5)); position.add(new Real(1)); - solutions.add(new OptimisationSolution(position, moProblem.getFitness(position, false))); + solutions.add(new OptimisationSolution(position, moProblem.getFitness(position))); } @Test diff --git a/src/test/java/net/sourceforge/cilib/problem/MOFitnessTest.java b/src/test/java/net/sourceforge/cilib/problem/MOFitnessTest.java index 407bc25..ae5d5d5 100644 --- a/src/test/java/net/sourceforge/cilib/problem/MOFitnessTest.java +++ b/src/test/java/net/sourceforge/cilib/problem/MOFitnessTest.java @@ -56,8 +56,8 @@ public class MOFitnessTest { new MinimisationFitness(new Integer(1).doubleValue()), new MinimisationFitness(new Integer(1).doubleValue())}; - Fitness f1 = moproblem.getFitness(inferior, false); - Fitness f2 = moproblem.getFitness(oneFitness, false); + Fitness f1 = moproblem.getFitness(inferior); + Fitness f2 = moproblem.getFitness(oneFitness); assertTrue(f1.compareTo(f2) < 0); assertTrue(f2.compareTo(f1) > 0); @@ -80,14 +80,10 @@ public class MOFitnessTest { } @Override - public Fitness getFitness(Type solution, boolean count) { + public Fitness getFitness(Type solution) { return (Fitness) solution; } - public Fitness getFitness(Type[] solution, boolean count) { - return (Fitness) solution[i]; - } - @Override public int getFitnessEvaluations() { return 0; -- 1.6.4 |
From: Gary P. <gpa...@gm...> - 2009-07-31 08:31:48
|
Chatted to Leo. There are exceptions when it comes to dynamic environments. Positions that have not changed that need to be re-evaluated based on an environment change should not count as a fitness evaluation. Will adjust the patch to cater for such situations. On Friday 31 July 2009 09:56:20 Gary Pampara wrote: > When the fitness is determined from the problem, the number of fitness > evaluations must be incremented. > > Signed-off-by: Gary Pampara <gpa...@gm...> > --- > .../algorithm/MultistartOptimisationAlgorithm.java | 2 +- > .../net/sourceforge/cilib/boa/bee/AbstractBee.java | 2 +- > .../cilib/clustering/kmeans/KMeans.java | 6 +- > .../cilib/cooperative/CooperativeEntity.java | 9 +-- > .../SelectiveContributionUpdateStrategy.java | 2 +- > .../java/net/sourceforge/cilib/ec/Individual.java | 2 +- > .../java/net/sourceforge/cilib/entity/Harmony.java | 2 +- > .../criterion/CriterionBasedMOProblemAdapter.java | 2 +- > .../ArchivingIterationStrategy.java | 4 +- > .../foundation/NeuralNetworkProblem.java | 7 +- > .../CooperativeOptimisationProblemAdapter.java | 2 +- > .../net/sourceforge/cilib/problem/MOFitness.java | 8 +- > .../cilib/problem/MOOptimisationProblem.java | 12 ++-- > .../cilib/problem/OptimisationProblem.java | 3 +- > .../cilib/problem/OptimisationProblemAdapter.java | 6 +- > .../cilib/pso/dynamic/DynamicParticle.java | 2 +- > .../RandomSentryDetectionStrategy.java | 2 +- > .../ArchiveReevaluationResponseStrategy.java | 4 +- > ...lutionParticleReevaluationResponseStrategy.java | 2 +- > .../DominantGuideUpdateStrategy.java | 4 +- > .../cilib/pso/particle/MultiObjectiveParticle.java | 2 +- > .../cilib/pso/particle/StandardParticle.java | 2 +- > .../DEPositionUpdateStrategy.java | 4 +- > .../GCVelocityUpdateStrategy.java | 2 +- > .../calculator/EntityBasedFitnessCalculator.java | 6 +- > .../cilib/util/calculator/FitnessCalculator.java | 4 +- > .../calculator/PropertyBasedFitnessCalculator.java | 4 +- > .../StructuredTypeFitnessCalculator.java | 4 +- > .../crossover/BlendCrossoverStrategyTest.java | 2 +- > .../crossover/OnePointCrossoverStrategyTest.java | 2 +- > .../crossover/UniformCrossoverStrategyTest.java | 2 +- > .../cilib/moo/archive/constrained/ArchiveTest.java | 74 > ++++++++++---------- .../constrained/ConstrainedArchiveTest.java | > 4 +- > .../solutionweighing/SolutionWeighingTest.java | 12 ++-- > .../sourceforge/cilib/problem/MOFitnessTest.java | 10 +-- > 35 files changed, 104 insertions(+), 113 deletions(-) > > diff --git > a/src/main/java/net/sourceforge/cilib/algorithm/MultistartOptimisationAlgor >ithm.java > b/src/main/java/net/sourceforge/cilib/algorithm/MultistartOptimisationAlgor >ithm.java index 0ed1bc5..8ef8f51 100644 > --- > a/src/main/java/net/sourceforge/cilib/algorithm/MultistartOptimisationAlgor >ithm.java +++ > b/src/main/java/net/sourceforge/cilib/algorithm/MultistartOptimisationAlgor >ithm.java @@ -251,7 +251,7 @@ public class MultistartOptimisationAlgorithm > extends Algorithm implements Partic * @see > net.sourceforge.cilib.Problem.OptimisationProblemAdapter#calculateFitness(j >ava.lang.Object) */ > protected Fitness calculateFitness(Type solution) { > - return target.getFitness(solution, true); > + return target.getFitness(solution); > } > > public void resetFitnessCounter() { > diff --git a/src/main/java/net/sourceforge/cilib/boa/bee/AbstractBee.java > b/src/main/java/net/sourceforge/cilib/boa/bee/AbstractBee.java index > ceea52b..2f4e1ab 100644 > --- a/src/main/java/net/sourceforge/cilib/boa/bee/AbstractBee.java > +++ b/src/main/java/net/sourceforge/cilib/boa/bee/AbstractBee.java > @@ -97,7 +97,7 @@ public abstract class AbstractBee extends AbstractEntity > implements HoneyBee { */ > @Override > public void calculateFitness() { > - this.getProperties().put(EntityType.FITNESS, > getFitnessCalculator().getFitness(this, true)); + > this.getProperties().put(EntityType.FITNESS, > getFitnessCalculator().getFitness(this)); } > > /** > diff --git > a/src/main/java/net/sourceforge/cilib/clustering/kmeans/KMeans.java > b/src/main/java/net/sourceforge/cilib/clustering/kmeans/KMeans.java index > d4fd66c..8f85a73 100644 > --- a/src/main/java/net/sourceforge/cilib/clustering/kmeans/KMeans.java > +++ b/src/main/java/net/sourceforge/cilib/clustering/kmeans/KMeans.java > @@ -73,7 +73,7 @@ public class KMeans extends SingularAlgorithm { > > /** > * Create a copy of the provided instance. > - * @param rhs The instance to copy. > + * @param copy The instance to copy. > */ > public KMeans(KMeans copy) { > super(copy); > @@ -105,7 +105,7 @@ public class KMeans extends SingularAlgorithm { > */ > @Override > public void algorithmIteration() { > - calculator.getFitness(centroids, true); > + calculator.getFitness(centroids); > > // the fitness calculation step already arranged the clusters and > centroids for us ClusteringUtils helper = ClusteringUtils.get(); > @@ -163,7 +163,7 @@ public class KMeans extends SingularAlgorithm { > */ > @Override > public OptimisationSolution getBestSolution() { > - return new OptimisationSolution(centroids.getClone(), > getOptimisationProblem().getFitness(centroids, false)); + return new > OptimisationSolution(centroids.getClone(), > getOptimisationProblem().getFitness(centroids)); } > > /** > diff --git > a/src/main/java/net/sourceforge/cilib/cooperative/CooperativeEntity.java > b/src/main/java/net/sourceforge/cilib/cooperative/CooperativeEntity.java > index 4ae1f95..640c41d 100644 > --- > a/src/main/java/net/sourceforge/cilib/cooperative/CooperativeEntity.java > +++ > b/src/main/java/net/sourceforge/cilib/cooperative/CooperativeEntity.java @@ > -29,7 +29,6 @@ import net.sourceforge.cilib.problem.OptimisationProblem; > import net.sourceforge.cilib.type.types.Numeric; > import net.sourceforge.cilib.type.types.Type; > import net.sourceforge.cilib.type.types.container.StructuredType; > -import net.sourceforge.cilib.type.types.container.TypeList; > import net.sourceforge.cilib.type.types.container.Vector; > > /** > @@ -52,6 +51,7 @@ public class CooperativeEntity extends AbstractEntity { > fitness = rhs.fitness; > } > > + @Override > public CooperativeEntity getClone() { > return new CooperativeEntity(this); > } > @@ -137,11 +137,8 @@ public class CooperativeEntity extends AbstractEntity > { throw new UnsupportedOperationException("Methd not implemented"); } > > + @Override > public void calculateFitness() { > - calculateFitness(true); > - } > - > - public void calculateFitness(boolean count) { > - fitness = getFitnessCalculator().getFitness(this, count); > + fitness = getFitnessCalculator().getFitness(this); > } > } > diff --git > a/src/main/java/net/sourceforge/cilib/cooperative/contributionupdatestrateg >ies/SelectiveContributionUpdateStrategy.java > b/src/main/java/net/sourceforge/cilib/cooperative/contributionupdatestrateg >ies/SelectiveContributionUpdateStrategy.java index 5452c99..ddf5bef 100644 > --- > a/src/main/java/net/sourceforge/cilib/cooperative/contributionupdatestrateg >ies/SelectiveContributionUpdateStrategy.java +++ > b/src/main/java/net/sourceforge/cilib/cooperative/contributionupdatestrateg >ies/SelectiveContributionUpdateStrategy.java @@ -38,7 +38,7 @@ public class > SelectiveContributionUpdateStrategy implements ContributionUpdateSt > dstTest.update(src, srcPos, dstPos, length); > > // calculate new fitness of updated clone > - dstTest.calculateFitness(false); > + dstTest.calculateFitness(); > > // if updated clone is better than original context, update > context if(dstTest.compareTo(dst) > 0) { > diff --git a/src/main/java/net/sourceforge/cilib/ec/Individual.java > b/src/main/java/net/sourceforge/cilib/ec/Individual.java index > c1ea82f..c6373e0 100644 > --- a/src/main/java/net/sourceforge/cilib/ec/Individual.java > +++ b/src/main/java/net/sourceforge/cilib/ec/Individual.java > @@ -145,7 +145,7 @@ public class Individual extends AbstractEntity { > */ > @Override > public void calculateFitness() { > - this.getProperties().put(EntityType.FITNESS, > this.getFitnessCalculator().getFitness(this, true)); + > this.getProperties().put(EntityType.FITNESS, > this.getFitnessCalculator().getFitness(this)); } > > /** > diff --git a/src/main/java/net/sourceforge/cilib/entity/Harmony.java > b/src/main/java/net/sourceforge/cilib/entity/Harmony.java index > 85fe665..6b21457 100644 > --- a/src/main/java/net/sourceforge/cilib/entity/Harmony.java > +++ b/src/main/java/net/sourceforge/cilib/entity/Harmony.java > @@ -80,7 +80,7 @@ public class Harmony extends AbstractEntity { > */ > @Override > public void calculateFitness() { > - Fitness fitness = getFitnessCalculator().getFitness(this, true); > + Fitness fitness = getFitnessCalculator().getFitness(this); > this.getProperties().put(EntityType.FITNESS, fitness); > } > > diff --git > a/src/main/java/net/sourceforge/cilib/moo/criterion/CriterionBasedMOProblem >Adapter.java > b/src/main/java/net/sourceforge/cilib/moo/criterion/CriterionBasedMOProblem >Adapter.java index e2687c0..c0c23ff 100644 > --- > a/src/main/java/net/sourceforge/cilib/moo/criterion/CriterionBasedMOProblem >Adapter.java +++ > b/src/main/java/net/sourceforge/cilib/moo/criterion/CriterionBasedMOProblem >Adapter.java @@ -83,7 +83,7 @@ public class CriterionBasedMOProblemAdapter > extends OptimisationProblemAdapter { > > @Override > protected Fitness calculateFitness(Type solution) { > - return this.problem.getFitness(this.activeIndex, solution, true); > + return this.problem.getFitness(this.activeIndex, solution); > } > > @Override > diff --git > a/src/main/java/net/sourceforge/cilib/moo/iterationstrategies/ArchivingIter >ationStrategy.java > b/src/main/java/net/sourceforge/cilib/moo/iterationstrategies/ArchivingIter >ationStrategy.java index f8e38ff..124747d 100644 > --- > a/src/main/java/net/sourceforge/cilib/moo/iterationstrategies/ArchivingIter >ationStrategy.java +++ > b/src/main/java/net/sourceforge/cilib/moo/iterationstrategies/ArchivingIter >ationStrategy.java @@ -72,12 +72,12 @@ public class > ArchivingIterationStrategy<E extends PopulationBasedAlgorithm> impl } > > protected void updateArchive(Topology<? extends Entity> population) { > - Algorithm topLevelAlgorithm = (Algorithm) > Algorithm.getAlgorithmList().get(0); + Algorithm topLevelAlgorithm = > Algorithm.getAlgorithmList().get(0); List<OptimisationSolution> > optimisationSolutions = new ArrayList<OptimisationSolution>(); for (Entity > entity : population) { > Type solution = entity.getCandidateSolution().getClone(); > optimisationSolutions.add(new OptimisationSolution(solution, > - > topLevelAlgorithm.getOptimisationProblem().getFitness(solution, false))); + > > topLevelAlgorithm.getOptimisationProblem().getFitness(solution))); } > Archive.get().addAll(optimisationSolutions); > } > diff --git > a/src/main/java/net/sourceforge/cilib/neuralnetwork/foundation/NeuralNetwor >kProblem.java > b/src/main/java/net/sourceforge/cilib/neuralnetwork/foundation/NeuralNetwor >kProblem.java index 8f54433..de82adf 100644 > --- > a/src/main/java/net/sourceforge/cilib/neuralnetwork/foundation/NeuralNetwor >kProblem.java +++ > b/src/main/java/net/sourceforge/cilib/neuralnetwork/foundation/NeuralNetwor >kProblem.java @@ -76,11 +76,10 @@ public class NeuralNetworkProblem > implements OptimisationProblem, Initializable return > evaluationStrategy.evaluate(p); > } > > - public Fitness getFitness(Type solution, boolean count) { > + @Override > + public Fitness getFitness(Type solution) { > + ++fitnessEvaluations; > > - if (count) { > - ++fitnessEvaluations; > - } > this.getTopology().setWeights((Vector) solution); > > //Defaults to first error element as the main fitness... > diff --git > a/src/main/java/net/sourceforge/cilib/problem/CooperativeOptimisationProble >mAdapter.java > b/src/main/java/net/sourceforge/cilib/problem/CooperativeOptimisationProble >mAdapter.java index 316d620..42ed4ab 100644 > --- > a/src/main/java/net/sourceforge/cilib/problem/CooperativeOptimisationProble >mAdapter.java +++ > b/src/main/java/net/sourceforge/cilib/problem/CooperativeOptimisationProble >mAdapter.java @@ -111,7 +111,7 @@ public class > CooperativeOptimisationProblemAdapter extends OptimisationProblemAd for > (int i = 0; i < dimension; ++i) { > ((Vector) context.getCandidateSolution()).setReal(offset + i, > participant.getReal(i)); } > - return problem.getFitness(context.getCandidateSolution(), true); > + return problem.getFitness(context.getCandidateSolution()); > } > > public DomainRegistry getDomain() { > diff --git a/src/main/java/net/sourceforge/cilib/problem/MOFitness.java > b/src/main/java/net/sourceforge/cilib/problem/MOFitness.java index > a6144a6..4edfc45 100644 > --- a/src/main/java/net/sourceforge/cilib/problem/MOFitness.java > +++ b/src/main/java/net/sourceforge/cilib/problem/MOFitness.java > @@ -34,19 +34,19 @@ public class MOFitness implements Fitness { > private static final long serialVersionUID = 1477723759384827131L; > private Fitness[] fitnesses; > > - public MOFitness(MOOptimisationProblem problem, Type[] solution, > boolean count) { + public MOFitness(MOOptimisationProblem problem, > Type[] solution) { int size = problem.size(); > fitnesses = new Fitness[size]; > for (int i = 0; i < size; ++i) { > - fitnesses[i] = problem.getFitness(i, solution[i], count); > + fitnesses[i] = problem.getFitness(i, solution[i]); > } > } > > - public MOFitness(MOOptimisationProblem problem, Type solution, boolean > count) { + public MOFitness(MOOptimisationProblem problem, Type > solution) { int size = problem.size(); > fitnesses = new Fitness[size]; > for (int i = 0; i < size; ++i) { > - fitnesses[i] = problem.getFitness(i, solution, count); > + fitnesses[i] = problem.getFitness(i, solution); > } > } > > diff --git > a/src/main/java/net/sourceforge/cilib/problem/MOOptimisationProblem.java > b/src/main/java/net/sourceforge/cilib/problem/MOOptimisationProblem.java > index 54b4b4a..ccc139f 100644 > --- > a/src/main/java/net/sourceforge/cilib/problem/MOOptimisationProblem.java > +++ > b/src/main/java/net/sourceforge/cilib/problem/MOOptimisationProblem.java @@ > -56,17 +56,17 @@ public class MOOptimisationProblem implements > OptimisationProblem, List<Optimisa return new MOOptimisationProblem(this); > } > > - public MOFitness getFitness(Type[] solutions, boolean count) { > - return new MOFitness(this, solutions, count); > + public MOFitness getFitness(Type[] solutions) { > + return new MOFitness(this, solutions); > } > > @Override > - public MOFitness getFitness(Type solution, boolean count) { > - return new MOFitness(this, solution, count); > + public MOFitness getFitness(Type solution) { > + return new MOFitness(this, solution); > } > > - public Fitness getFitness(int index, Type solution, boolean count) { > - return problems.get(index).getFitness(solution, count); > + public Fitness getFitness(int index, Type solution) { > + return problems.get(index).getFitness(solution); > } > > @Override > diff --git > a/src/main/java/net/sourceforge/cilib/problem/OptimisationProblem.java > b/src/main/java/net/sourceforge/cilib/problem/OptimisationProblem.java > index a5437c2..454aaa9 100644 > --- a/src/main/java/net/sourceforge/cilib/problem/OptimisationProblem.java > +++ b/src/main/java/net/sourceforge/cilib/problem/OptimisationProblem.java > @@ -53,10 +53,9 @@ public interface OptimisationProblem extends Problem { > * falls outside the search space of this problem. > * > * @param solution The potential solution found by the optimisation > algorithm. - * @param count True if this call should contribute to the > fitness evaluation count, see {@link #getFitnessEvaluations()}. * @return > The fitness of the solution. > */ > - public Fitness getFitness(Type solution, boolean count); > + public Fitness getFitness(Type solution); > > /** > * Returns the number of times the underlying fitness function has > been evaluated. diff --git > a/src/main/java/net/sourceforge/cilib/problem/OptimisationProblemAdapter.ja >va > b/src/main/java/net/sourceforge/cilib/problem/OptimisationProblemAdapter.ja >va index 1b2e37d..aa7288d 100644 > --- > a/src/main/java/net/sourceforge/cilib/problem/OptimisationProblemAdapter.ja >va +++ > b/src/main/java/net/sourceforge/cilib/problem/OptimisationProblemAdapter.ja >va @@ -72,10 +72,8 @@ public abstract class OptimisationProblemAdapter > implements OptimisationProblem /** > * {@inheritDoc} > */ > - public final Fitness getFitness(Type solution, boolean count) { > - if (count) { > - fitnessEvaluations.incrementAndGet(); > - } > + public final Fitness getFitness(Type solution) { > + fitnessEvaluations.incrementAndGet(); > > if (this.changeStrategy.shouldApply(this)) > changeEnvironment(); > diff --git > a/src/main/java/net/sourceforge/cilib/pso/dynamic/DynamicParticle.java > b/src/main/java/net/sourceforge/cilib/pso/dynamic/DynamicParticle.java > index efa583e..a69ac96 100644 > --- a/src/main/java/net/sourceforge/cilib/pso/dynamic/DynamicParticle.java > +++ b/src/main/java/net/sourceforge/cilib/pso/dynamic/DynamicParticle.java > @@ -52,7 +52,7 @@ public class DynamicParticle extends StandardParticle { > * Re-evaluate both best and current position of the particle. > */ > public void reevaluate() { > - this.getProperties().put(EntityType.Particle.BEST_FITNESS, > getFitnessCalculator().getFitness(this, true)); + > this.getProperties().put(EntityType.Particle.BEST_FITNESS, > getFitnessCalculator().getFitness(this)); this.calculateFitness(); > } > } > diff --git > a/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/Rando >mSentryDetectionStrategy.java > b/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/Rando >mSentryDetectionStrategy.java index 11f0fb3..95387a7 100644 > --- > a/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/Rando >mSentryDetectionStrategy.java +++ > b/src/main/java/net/sourceforge/cilib/pso/dynamic/detectionstrategies/Rando >mSentryDetectionStrategy.java @@ -79,7 +79,7 @@ public class > RandomSentryDetectionStrategy<E extends PopulationBasedAlgorithm> e for > (Entity nextSentry : sentryList) { > double oldSentryFitness = nextSentry.getFitness().getValue(); > nextSentry.calculateFitness(); > - double newSentryFitness = > algorithm.getOptimisationProblem().getFitness(nextSentry.getCandidateSoluti >on(), false).getValue(); + double newSentryFitness = > algorithm.getOptimisationProblem().getFitness(nextSentry.getCandidateSoluti >on()).getValue(); > > if(Math.abs(oldSentryFitness - newSentryFitness) >= theta) { > envChangeOccured = true; > diff --git > a/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/Archiv >eReevaluationResponseStrategy.java > b/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/Archiv >eReevaluationResponseStrategy.java index 10db1e8..cce4afd 100644 > --- > a/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/Archiv >eReevaluationResponseStrategy.java +++ > b/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/Archiv >eReevaluationResponseStrategy.java @@ -46,7 +46,7 @@ public class > ArchiveReevaluationResponseStrategy extends EnvironmentChangeRespon > @Override > protected void performReaction(PopulationBasedAlgorithm algorithm) { > for (Entity entity : algorithm.getTopology()) { > - entity.getProperties().put(EntityType.Particle.BEST_FITNESS, > entity.getFitnessCalculator().getFitness(entity, true)); + > entity.getProperties().put(EntityType.Particle.BEST_FITNESS, > entity.getFitnessCalculator().getFitness(entity)); > //entity.getProperties().put(EntityType.Particle.BEST_POSITION, > entity.getCandidateSolution()); entity.calculateFitness(); > } > @@ -56,7 +56,7 @@ public class ArchiveReevaluationResponseStrategy extends > EnvironmentChangeRespon > > List<OptimisationSolution> newList = new > LinkedList<OptimisationSolution>(); for (OptimisationSolution solution : > Archive.get()) { > - OptimisationSolution os = new > OptimisationSolution(solution.getPosition(), > problem.getFitness(solution.getPosition(), false)); + > OptimisationSolution os = new OptimisationSolution(solution.getPosition(), > problem.getFitness(solution.getPosition())); newList.add(os); > } > > diff --git > a/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/Compet >itiveCoevolutionParticleReevaluationResponseStrategy.java > b/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/Compet >itiveCoevolutionParticleReevaluationResponseStrategy.java index > f3140f8..15c0b15 100644 > --- > a/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/Compet >itiveCoevolutionParticleReevaluationResponseStrategy.java +++ > b/src/main/java/net/sourceforge/cilib/pso/dynamic/responsestrategies/Compet >itiveCoevolutionParticleReevaluationResponseStrategy.java @@ -70,7 +70,7 @@ > public class CompetitiveCoevolutionParticleReevaluationResponseStrategy<E > extend Blackboard<Enum<?>, Type> blackboard = new Blackboard<Enum<?>, > Type>(); blackboard.put(EntityType.CANDIDATE_SOLUTION, > ((AbstractParticle)e).getBestPosition()); > blackboard.put(EntityType.Coevolution.BOARD, new EntityScoreboard()); - > Fitness val = > currentAlgorithm.getOptimisationProblem().getFitness(blackboard, false); + > Fitness val = > currentAlgorithm.getOptimisationProblem().getFitness(blackboard); > e.getProperties().put(EntityType.Particle.BEST_FITNESS, val); //if currentV > is better than re-evaluated pBest, then replace it if > (e.getFitness().compareTo(e.getBestFitness()) > 0) { diff --git > a/src/main/java/net/sourceforge/cilib/pso/moo/guideupdatestrategies/Dominan >tGuideUpdateStrategy.java > b/src/main/java/net/sourceforge/cilib/pso/moo/guideupdatestrategies/Dominan >tGuideUpdateStrategy.java index 22d529e..fccbd7d 100644 > --- > a/src/main/java/net/sourceforge/cilib/pso/moo/guideupdatestrategies/Dominan >tGuideUpdateStrategy.java +++ > b/src/main/java/net/sourceforge/cilib/pso/moo/guideupdatestrategies/Dominan >tGuideUpdateStrategy.java @@ -56,8 +56,8 @@ public class > DominantGuideUpdateStrategy implements GuideUpdateStrategy { Vector > previousGuide = (Vector) particle.getProperties().get(guideType); Algorithm > topLevelAlgorithm = Algorithm.getAlgorithmList().get(0); > OptimisationProblem problem = topLevelAlgorithm.getOptimisationProblem(); - > Fitness currentFitness = problem.getFitness(newGuide, false); - > if (previousGuide == null || > currentFitness.compareTo(problem.getFitness(previousGuide, false)) > 0) { + > Fitness currentFitness = problem.getFitness(newGuide); > + if (previousGuide == null || > currentFitness.compareTo(problem.getFitness(previousGuide)) > 0) { > particle.getProperties().put(guideType, newGuide); > } > } > diff --git > a/src/main/java/net/sourceforge/cilib/pso/particle/MultiObjectiveParticle.j >ava > b/src/main/java/net/sourceforge/cilib/pso/particle/MultiObjectiveParticle.j >ava index 272f0ab..cc66ed5 100644 > --- > a/src/main/java/net/sourceforge/cilib/pso/particle/MultiObjectiveParticle.j >ava +++ > b/src/main/java/net/sourceforge/cilib/pso/particle/MultiObjectiveParticle.j >ava @@ -33,7 +33,7 @@ public class MultiObjectiveParticle extends > StandardParticle { private static final long serialVersionUID = > 2449622504036301616L; > > public void setBestPosition(Type bestPosition) { > - Fitness bestPositionFitness = > Algorithm.get().getOptimisationProblem().getFitness(bestPosition, false); + > Fitness bestPositionFitness = > Algorithm.get().getOptimisationProblem().getFitness(bestPosition); > > this.getProperties().put(EntityType.Particle.BEST_POSITION, > bestPosition.getClone()); > this.getProperties().put(EntityType.Particle.BEST_FITNESS, > bestPositionFitness); diff --git > a/src/main/java/net/sourceforge/cilib/pso/particle/StandardParticle.java > b/src/main/java/net/sourceforge/cilib/pso/particle/StandardParticle.java > index 5176e8f..6f2cb2d 100644 > --- > a/src/main/java/net/sourceforge/cilib/pso/particle/StandardParticle.java > +++ > b/src/main/java/net/sourceforge/cilib/pso/particle/StandardParticle.java @@ > -163,7 +163,7 @@ public class StandardParticle extends AbstractParticle { > */ > @Override > public void calculateFitness() { > - Fitness fitness = getFitnessCalculator().getFitness(this, true); > + Fitness fitness = getFitnessCalculator().getFitness(this); > this.getProperties().put(EntityType.FITNESS, fitness); > > this.personalBestUpdateStrategy.updatePersonalBest(this); > diff --git > a/src/main/java/net/sourceforge/cilib/pso/positionupdatestrategies/DEPositi >onUpdateStrategy.java > b/src/main/java/net/sourceforge/cilib/pso/positionupdatestrategies/DEPositi >onUpdateStrategy.java index 3c244cd..2ac5646 100755 > --- > a/src/main/java/net/sourceforge/cilib/pso/positionupdatestrategies/DEPositi >onUpdateStrategy.java +++ > b/src/main/java/net/sourceforge/cilib/pso/positionupdatestrategies/DEPositi >onUpdateStrategy.java @@ -123,8 +123,8 @@ public class > DEPositionUpdateStrategy implements PositionUpdateStrategy { > > > //position should only become the offspring if its fitness is > better - Fitness trialFitness = > pso.getOptimisationProblem().getFitness(dePosition, false); - > Fitness currentFitness = > pso.getOptimisationProblem().getFitness(particle.getCandidateSolution(), > false); + Fitness trialFitness = > pso.getOptimisationProblem().getFitness(dePosition); + Fitness > currentFitness = > pso.getOptimisationProblem().getFitness(particle.getCandidateSolution()); > > if (trialFitness.compareTo(currentFitness) > 0) { > particle.setCandidateSolution(dePosition); > diff --git > a/src/main/java/net/sourceforge/cilib/pso/velocityupdatestrategies/GCVeloci >tyUpdateStrategy.java > b/src/main/java/net/sourceforge/cilib/pso/velocityupdatestrategies/GCVeloci >tyUpdateStrategy.java index 9bdfee4..cba2489 100644 > --- > a/src/main/java/net/sourceforge/cilib/pso/velocityupdatestrategies/GCVeloci >tyUpdateStrategy.java +++ > b/src/main/java/net/sourceforge/cilib/pso/velocityupdatestrategies/GCVeloci >tyUpdateStrategy.java @@ -159,7 +159,7 @@ public class > GCVelocityUpdateStrategy extends StandardVelocityUpdate { PSO pso = (PSO) > Algorithm.get(); > > if (particle == pso.getTopology().getBestEntity(new > SocialBestFitnessComparator<Particle>())) { - Fitness newFitness > = particle.getFitnessCalculator().getFitness(particle, false); + > Fitness newFitness = particle.getFitnessCalculator().getFitness(particle); > > if (!newFitness.equals(oldFitness)) { > this.failureCount = 0; > diff --git > a/src/main/java/net/sourceforge/cilib/util/calculator/EntityBasedFitnessCal >culator.java > b/src/main/java/net/sourceforge/cilib/util/calculator/EntityBasedFitnessCal >culator.java index afd5933..8b19b18 100644 > --- > a/src/main/java/net/sourceforge/cilib/util/calculator/EntityBasedFitnessCal >culator.java +++ > b/src/main/java/net/sourceforge/cilib/util/calculator/EntityBasedFitnessCal >culator.java @@ -35,6 +35,7 @@ public class EntityBasedFitnessCalculator > implements FitnessCalculator<Entity> { /** > * {@inheritDoc} > */ > + @Override > public EntityBasedFitnessCalculator getClone() { > return this; > } > @@ -42,9 +43,10 @@ public class EntityBasedFitnessCalculator implements > FitnessCalculator<Entity> { /** > * {@inheritDoc} > */ > - public Fitness getFitness(Entity entity, boolean count) { > + @Override > + public Fitness getFitness(Entity entity) { > Algorithm algorithm = Algorithm.get(); > - return > algorithm.getOptimisationProblem().getFitness(entity.getCandidateSolution() >, count); + return > algorithm.getOptimisationProblem().getFitness(entity.getCandidateSolution() >); } > > } > diff --git > a/src/main/java/net/sourceforge/cilib/util/calculator/FitnessCalculator.jav >a > b/src/main/java/net/sourceforge/cilib/util/calculator/FitnessCalculator.jav >a index 51ecf75..8ef9a07 100644 > --- > a/src/main/java/net/sourceforge/cilib/util/calculator/FitnessCalculator.jav >a +++ > b/src/main/java/net/sourceforge/cilib/util/calculator/FitnessCalculator.jav >a @@ -34,14 +34,14 @@ public interface FitnessCalculator<T> extends > Cloneable { /** > * {@inheritDoc} > */ > + @Override > public FitnessCalculator<T> getClone(); > > /** > * Get the fitness, given the <code>position</code>. > * @param entity The <code>Type</code> to base the calculation on. > - * @param count Whether or not the evaluation is to be counted. > * @return A <code>Fitness</code> object representing the fitness of > the <code>position</code>. */ > - public Fitness getFitness(T entity, boolean count); > + public Fitness getFitness(T entity); > > } > diff --git > a/src/main/java/net/sourceforge/cilib/util/calculator/PropertyBasedFitnessC >alculator.java > b/src/main/java/net/sourceforge/cilib/util/calculator/PropertyBasedFitnessC >alculator.java index 78783d3..39479ee 100644 > --- > a/src/main/java/net/sourceforge/cilib/util/calculator/PropertyBasedFitnessC >alculator.java +++ > b/src/main/java/net/sourceforge/cilib/util/calculator/PropertyBasedFitnessC >alculator.java @@ -45,8 +45,8 @@ public class PropertyBasedFitnessCalculator > implements * {@inheritDoc} > */ > @Override > - public Fitness getFitness(Entity entity, boolean count) { > + public Fitness getFitness(Entity entity) { > Algorithm algorithm = Algorithm.get(); > - return > algorithm.getOptimisationProblem().getFitness(entity.getProperties(), > count); + return > algorithm.getOptimisationProblem().getFitness(entity.getProperties()); } > } > diff --git > a/src/main/java/net/sourceforge/cilib/util/calculator/StructuredTypeFitness >Calculator.java > b/src/main/java/net/sourceforge/cilib/util/calculator/StructuredTypeFitness >Calculator.java index 5fe4d24..5e77f38 100644 > --- > a/src/main/java/net/sourceforge/cilib/util/calculator/StructuredTypeFitness >Calculator.java +++ > b/src/main/java/net/sourceforge/cilib/util/calculator/StructuredTypeFitness >Calculator.java @@ -46,9 +46,9 @@ public class > StructuredTypeFitnessCalculator<T extends StructuredType<?>> implem * > {@inheritDoc} > */ > @Override > - public Fitness getFitness(T structure, boolean count) { > + public Fitness getFitness(T structure) { > Algorithm algorithm = Algorithm.get(); > - return algorithm.getOptimisationProblem().getFitness(structure, > count); + return > algorithm.getOptimisationProblem().getFitness(structure); } > > } > diff --git > a/src/test/java/net/sourceforge/cilib/entity/operators/crossover/BlendCross >overStrategyTest.java > b/src/test/java/net/sourceforge/cilib/entity/operators/crossover/BlendCross >overStrategyTest.java index b66511a..7035d52 100644 > --- > a/src/test/java/net/sourceforge/cilib/entity/operators/crossover/BlendCross >overStrategyTest.java +++ > b/src/test/java/net/sourceforge/cilib/entity/operators/crossover/BlendCross >overStrategyTest.java @@ -84,7 +84,7 @@ public class > BlendCrossoverStrategyTest { > } > > @Override > - public Fitness getFitness(Individual entity, boolean count) { > + public Fitness getFitness(Individual entity) { > return InferiorFitness.instance(); > } > } > diff --git > a/src/test/java/net/sourceforge/cilib/entity/operators/crossover/OnePointCr >ossoverStrategyTest.java > b/src/test/java/net/sourceforge/cilib/entity/operators/crossover/OnePointCr >ossoverStrategyTest.java index e7805ca..f6a97df 100644 > --- > a/src/test/java/net/sourceforge/cilib/entity/operators/crossover/OnePointCr >ossoverStrategyTest.java +++ > b/src/test/java/net/sourceforge/cilib/entity/operators/crossover/OnePointCr >ossoverStrategyTest.java @@ -84,7 +84,7 @@ public class > OnePointCrossoverStrategyTest { > } > > @Override > - public Fitness getFitness(Individual entity, boolean count) { > + public Fitness getFitness(Individual entity) { > return InferiorFitness.instance(); > } > } > diff --git > a/src/test/java/net/sourceforge/cilib/entity/operators/crossover/UniformCro >ssoverStrategyTest.java > b/src/test/java/net/sourceforge/cilib/entity/operators/crossover/UniformCro >ssoverStrategyTest.java index daae496..f132db1 100644 > --- > a/src/test/java/net/sourceforge/cilib/entity/operators/crossover/UniformCro >ssoverStrategyTest.java +++ > b/src/test/java/net/sourceforge/cilib/entity/operators/crossover/UniformCro >ssoverStrategyTest.java @@ -84,7 +84,7 @@ public class > UniformCrossoverStrategyTest { > } > > @Override > - public Fitness getFitness(Individual entity, boolean count) { > + public Fitness getFitness(Individual entity) { > return InferiorFitness.instance(); > } > } > diff --git > a/src/test/java/net/sourceforge/cilib/moo/archive/constrained/ArchiveTest.j >ava > b/src/test/java/net/sourceforge/cilib/moo/archive/constrained/ArchiveTest.j >ava index a6cbc2a..8a1a84a 100644 > --- > a/src/test/java/net/sourceforge/cilib/moo/archive/constrained/ArchiveTest.j >ava +++ > b/src/test/java/net/sourceforge/cilib/moo/archive/constrained/ArchiveTest.j >ava @@ -234,29 +234,29 @@ public class ArchiveTest { > // and test if the fitness-value is correct. > Iterator<Vector> vectorIterator = testVectors.iterator(); > Vector testVector = vectorIterator.next(); > - MOFitness fitness = (MOFitness) problem.getFitness(testVector, > false); + MOFitness fitness = problem.getFitness(testVector); > assertThat(fitness.getDimension(), is(2)); > assertEquals(1.46361111111, fitness.getFitness(0).getValue(), > EPSILON); assertEquals(55, fitness.getFitness(1).getValue(), EPSILON); - > archive.addAll(Arrays.asList(new OptimisationSolution(testVector, > problem.getFitness(testVector, false)))); - > assertThat(archive.contains(new OptimisationSolution(testVector, > problem.getFitness(testVector, false))), is(true)); + > archive.addAll(Arrays.asList(new OptimisationSolution(testVector, > problem.getFitness(testVector)))); + assertThat(archive.contains(new > OptimisationSolution(testVector, problem.getFitness(testVector))), > is(true)); > > testVector = vectorIterator.next(); > - fitness = (MOFitness) problem.getFitness(testVector, false); > + fitness = problem.getFitness(testVector); > assertThat(fitness.getDimension(), is(2)); > assertEquals(0.491388888889, fitness.getFitness(0).getValue(), > EPSILON); assertEquals(90, fitness.getFitness(1).getValue(), EPSILON); - > archive.addAll(Arrays.asList(new OptimisationSolution(testVector, > problem.getFitness(testVector, false)))); - > assertThat(archive.contains(new OptimisationSolution(testVector, > problem.getFitness(testVector, false))), is(true)); + > archive.addAll(Arrays.asList(new OptimisationSolution(testVector, > problem.getFitness(testVector)))); + assertThat(archive.contains(new > OptimisationSolution(testVector, problem.getFitness(testVector))), > is(true)); assertThat(archive.size(), is(2)); > > testVector = vectorIterator.next(); > - fitness = (MOFitness) problem.getFitness(testVector, false); > + fitness = problem.getFitness(testVector); > assertThat(fitness.getDimension(), is(2)); > assertEquals(0.261797052154, fitness.getFitness(0).getValue(), > EPSILON); assertEquals(135, fitness.getFitness(1).getValue(), EPSILON); - > archive.addAll(Arrays.asList(new OptimisationSolution(testVector, > problem.getFitness(testVector, false)))); - > assertThat(archive.contains(new OptimisationSolution(testVector, > problem.getFitness(testVector, false))), is(true)); + > archive.addAll(Arrays.asList(new OptimisationSolution(testVector, > problem.getFitness(testVector)))); + assertThat(archive.contains(new > OptimisationSolution(testVector, problem.getFitness(testVector))), > is(true)); assertThat(archive.size(), is(3)); > > // After the archive size has been monitored continuously, insert > the exact same solutions into the archive again. @@ -264,9 +264,9 @@ public > class ArchiveTest { > vectorIterator = testVectors.iterator(); > while (vectorIterator.hasNext()) { > testVector = vectorIterator.next(); > - fitness = (MOFitness) problem.getFitness(testVector, false); > + fitness = problem.getFitness(testVector); > assertThat(fitness.getDimension(), is(2)); > - archive.addAll(Arrays.asList(new > OptimisationSolution(testVector, problem.getFitness(testVector, false)))); > + archive.addAll(Arrays.asList(new > OptimisationSolution(testVector, problem.getFitness(testVector)))); } > // Archive size must stay the same due to set-based behavior of > archive. assertThat(archive.size(), is(3)); > @@ -284,7 +284,7 @@ public class ArchiveTest { > DummyOptimisationProblem1 problem1 = new > DummyOptimisationProblem1(); Collection<Vector> testVectors = > createDummyVectors(); > for (Vector testVector : testVectors) { > - archive.addAll(Arrays.asList(new > OptimisationSolution(testVector, problem1.getFitness(testVector, false)))); > + archive.addAll(Arrays.asList(new > OptimisationSolution(testVector, problem1.getFitness(testVector)))); } > // Arhive size is now 3. > assertThat(archive.size(), is(3)); > @@ -296,13 +296,13 @@ public class ArchiveTest { > DummyOptimisationProblem2 problem2 = new > DummyOptimisationProblem2(); Iterator<Vector> vectorIterator = > testVectors.iterator(); Vector testVector = vectorIterator.next(); > - MOFitness fitness = (MOFitness) problem2.getFitness(testVector, > false); + MOFitness fitness = problem2.getFitness(testVector); > assertThat(fitness.getDimension(), is(2)); > assertEquals(2.92722222222, fitness.getFitness(0).getValue(), > EPSILON); assertEquals(110, fitness.getFitness(1).getValue(), EPSILON); > > // Then, check which solutions (corresponding to problem 1) > dominates the first external solution corresponding to problem 2. - > Collection<OptimisationSolution> dominantSolutions = archive.dominates(new > OptimisationSolution(testVector, problem2.getFitness(testVector, false))); > + Collection<OptimisationSolution> dominantSolutions = > archive.dominates(new OptimisationSolution(testVector, > problem2.getFitness(testVector))); assertThat(dominantSolutions.size(), > is(2)); > Iterator<OptimisationSolution> dominantIterator = > dominantSolutions.iterator(); > > @@ -323,22 +323,22 @@ public class ArchiveTest { > // solution with fitness (2.92722222222, 110) which is correct. > > // Finally, check that archive does not accept this solution. > - archive.addAll(Arrays.asList(new OptimisationSolution(testVector, > problem2.getFitness(testVector, false)))); + > archive.addAll(Arrays.asList(new OptimisationSolution(testVector, > problem2.getFitness(testVector)))); assertThat(archive.size(), is(3)); > - assertThat(archive.contains(new OptimisationSolution(testVector, > problem2.getFitness(testVector, false))), is(false)); + > assertThat(archive.contains(new OptimisationSolution(testVector, > problem2.getFitness(testVector))), is(false)); > > > > > // For the second vector (2,3,4,5,6) calculate the fitness in > terms of optimisation problem 2 and check it. testVector = > vectorIterator.next(); > - fitness = (MOFitness) problem2.getFitness(testVector, false); > + fitness = problem2.getFitness(testVector); > assertThat(fitness.getDimension(), is(2)); > assertEquals(0.982777777778, fitness.getFitness(0).getValue(), > EPSILON); assertEquals(180, fitness.getFitness(1).getValue(), EPSILON); > > // Now, check which solutions (corresponding to problem 1) > dominates the second external solution corresponding to problem 2. - > dominantSolutions = archive.dominates(new OptimisationSolution(testVector, > problem2.getFitness(testVector, false))); + dominantSolutions = > archive.dominates(new OptimisationSolution(testVector, > problem2.getFitness(testVector))); assertThat(dominantSolutions.size(), > is(2)); > dominantIterator = dominantSolutions.iterator(); > > @@ -359,22 +359,22 @@ public class ArchiveTest { > // solution with fitness (0.982777777778, 180) which is correct. > > // Finally, check that archive does not accept this solution. > - archive.addAll(Arrays.asList(new OptimisationSolution(testVector, > problem2.getFitness(testVector, false)))); + > archive.addAll(Arrays.asList(new OptimisationSolution(testVector, > problem2.getFitness(testVector)))); assertThat(archive.size(), is(3)); > - assertThat(archive.contains(new OptimisationSolution(testVector, > problem2.getFitness(testVector, false))), is(false)); + > assertThat(archive.contains(new OptimisationSolution(testVector, > problem2.getFitness(testVector))), is(false)); > > > > > // For the third vector (3,4,5,6,7) calculate the fitness in terms > of optimisation problem 2 and check it. testVector = vectorIterator.next(); > - fitness = (MOFitness) problem2.getFitness(testVector, false); > + fitness = problem2.getFitness(testVector); > assertThat(fitness.getDimension(), is(2)); > assertEquals(0.523594104308, fitness.getFitness(0).getValue(), > EPSILON); assertEquals(270, fitness.getFitness(1).getValue(), EPSILON); > > // Now, check which solutions (corresponding to problem 1) > dominates the second solution corresponding to problem 2. - > dominantSolutions = archive.dominates(new OptimisationSolution(testVector, > problem2.getFitness(testVector, false))); + dominantSolutions = > archive.dominates(new OptimisationSolution(testVector, > problem2.getFitness(testVector))); assertThat(dominantSolutions.size(), > is(2)); > dominantIterator = dominantSolutions.iterator(); > > @@ -395,9 +395,9 @@ public class ArchiveTest { > // solution with fitness (0.523594104308, 270) which is correct. > > // Finally, check that archive does not accept this solution. > - archive.addAll(Arrays.asList(new OptimisationSolution(testVector, > problem2.getFitness(testVector, false)))); + > archive.addAll(Arrays.asList(new OptimisationSolution(testVector, > problem2.getFitness(testVector)))); assertThat(archive.size(), is(3)); > - assertThat(archive.contains(new OptimisationSolution(testVector, > problem2.getFitness(testVector, false))), is(false)); + > assertThat(archive.contains(new OptimisationSolution(testVector, > problem2.getFitness(testVector))), is(false)); } > > /** > @@ -413,7 +413,7 @@ public class ArchiveTest { > DummyOptimisationProblem2 problem2 = new > DummyOptimisationProblem2(); Collection<Vector> testVectors = > createDummyVectors(); > for (Vector testVector : testVectors) { > - archive.addAll(Arrays.asList(new > OptimisationSolution(testVector, problem2.getFitness(testVector, false)))); > + archive.addAll(Arrays.asList(new > OptimisationSolution(testVector, problem2.getFitness(testVector)))); } > // Arhive size is now 3. > assertThat(archive.size(), is(3)); > @@ -425,13 +425,13 @@ public class ArchiveTest { > DummyOptimisationProblem1 problem1 = new > DummyOptimisationProblem1(); Iterator<Vector> vectorIterator = > testVectors.iterator(); Vector testVector = vectorIterator.next(); > - MOFitness fitness = (MOFitness) problem1.getFitness(testVector, > false); + MOFitness fitness = problem1.getFitness(testVector); > assertThat(fitness.getDimension(), is(2)); > assertEquals(1.46361111111, fitness.getFitness(0).getValue(), > EPSILON); assertEquals(55, fitness.getFitness(1).getValue(), EPSILON); > > // Then, check which solutions (corresponding to problem 2) is > dominated by the first external solution corresponding to problem 1. - > Collection<OptimisationSolution> dominatedSolutions = > archive.isDominatedBy(new OptimisationSolution(testVector, > problem1.getFitness(testVector, false))); + > Collection<OptimisationSolution> dominatedSolutions = > archive.isDominatedBy(new OptimisationSolution(testVector, > problem1.getFitness(testVector))); assertThat(dominatedSolutions.size(), > is(1)); > Iterator<OptimisationSolution> dominatedIterator = > dominatedSolutions.iterator(); > > @@ -445,10 +445,10 @@ public class ArchiveTest { > // Thus, no more solutions in archive is dominated by this > external solution. > > // Now, insert this external solution and it should replace > abovementioned dominated solution. - > archive.addAll(Arrays.asList(new OptimisationSolution(testVector, > problem1.getFitness(testVector, false)))); + > archive.addAll(Arrays.asList(new OptimisationSolution(testVector, > problem1.getFitness(testVector)))); assertThat(archive.size(), is(3)); > assertThat(archive.contains(dominatedSolution), is(false)); > - assertThat(archive.contains(new OptimisationSolution(testVector, > problem1.getFitness(testVector, false))), is(true)); + > assertThat(archive.contains(new OptimisationSolution(testVector, > problem1.getFitness(testVector))), is(true)); > > // -- Arhive contains (0.982777777778, 180); (0.523594104308, > 270); new --> (1.46361111111, 55) <-- new; > > @@ -457,13 +457,13 @@ public class ArchiveTest { > > // For the second vector (2,3,4,5,6) calculate the fitness in > terms of optimisation problem 1 and check it. testVector = > vectorIterator.next(); > - fitness = (MOFitness) problem1.getFitness(testVector, false); > + fitness = problem1.getFitness(testVector); > assertThat(fitness.getDimension(), is(2)); > assertEquals(0.491388888889, fitness.getFitness(0).getValue(), > EPSILON); assertEquals(90, fitness.getFitness(1).getValue(), EPSILON); > > // Then, check which solutions (corresponding to problem 2) is > dominated by the second external solution corresponding to problem 1. - > dominatedSolutions = archive.isDominatedBy(new > OptimisationSolution(testVector, problem1.getFitness(testVector, false))); > + dominatedSolutions = archive.isDominatedBy(new > OptimisationSolution(testVector, problem1.getFitness(testVector))); > assertThat(dominatedSolutions.size(), is(2)); > dominatedIterator = dominatedSolutions.iterator(); > > @@ -480,11 +480,11 @@ public class ArchiveTest { > assertEquals(270, ((MOFitness) > dominatedSolution2.getFitness()).getFitness(1).getValue(), EPSILON); > > // Now, insert this external solution and it should replace both > of the abovementioned dominated solutions. - > archive.addAll(Arrays.asList(new OptimisationSolution(testVector, > problem1.getFitness(testVector, false)))); + > archive.addAll(Arrays.asList(new OptimisationSolution(testVector, > problem1.getFitness(testVector)))); assertThat(archive.size(), is(2)); > assertThat(archive.contains(dominatedSolution1), is(false)); > assertThat(archive.contains(dominatedSolution2), is(false)); > - assertThat(archive.contains(new OptimisationSolution(testVector, > problem1.getFitness(testVector, false))), is(true)); + > assertThat(archive.contains(new OptimisationSolution(testVector, > problem1.getFitness(testVector))), is(true)); > > // -- Arhive contains (1.46361111111, 55); new --> > (0.491388888889, 90) <-- new; > > @@ -493,19 +493,19 @@ public class ArchiveTest { > > // For the third vector (3,4,5,6,7) calculate the fitness in terms > of optimisation problem 1 and check it. testVector = vectorIterator.next(); > - fitness = (MOFitness) problem1.getFitness(testVector, false); > + fitness = problem1.getFitness(testVector); > assertThat(fitness.getDimension(), is(2)); > assertEquals(0.261797052154, fitness.getFitness(0).getValue(), > EPSILON); assertEquals(135, fitness.getFitness(1).getValue(), EPSILON); > > // Then, check which solutions (corresponding to problem 2) is > dominated by the second external solution corresponding to problem 1. - > dominatedSolutions = archive.isDominatedBy(new > OptimisationSolution(testVector, problem1.getFitness(testVector, false))); > + dominatedSolutions = archive.isDominatedBy(new > OptimisationSolution(testVector, problem1.getFitness(testVector))); > assertThat(dominatedSolutions.size(), is(0)); // No solutions dominate > external solution. > > // Now, insert this external solution and it should be accepted in > archive and not replace any other solution. - > archive.addAll(Arrays.asList(new OptimisationSolution(testVector, > problem1.getFitness(testVector, false)))); + > archive.addAll(Arrays.asList(new OptimisationSolution(testVector, > problem1.getFitness(testVector)))); assertThat(archive.size(), is(3)); > - assertThat(archive.contains(new OptimisationSolution(testVector, > problem1.getFitness(testVector, false))), is(true)); + > assertThat(archive.contains(new OptimisationSolution(testVector, > problem1.getFitness(testVector))), is(true)); > > // -- Archive contains (1.46361111111, 55); (0.491388888889, 90); > (0.261797052154, 135); } > diff --git > a/src/test/java/net/sourceforge/cilib/moo/archive/constrained/ConstrainedAr >chiveTest.java > b/src/test/java/net/sourceforge/cilib/moo/archive/constrained/ConstrainedAr >chiveTest.java index 05b3737..8a8491f 100644 > --- > a/src/test/java/net/sourceforge/cilib/moo/archive/constrained/ConstrainedAr >chiveTest.java +++ > b/src/test/java/net/sourceforge/cilib/moo/archive/constrained/ConstrainedAr >chiveTest.java @@ -190,7 +190,7 @@ public class ConstrainedArchiveTest { > for (int j = i; j < i + 5; ++j) { > vector.add(new Real(j)); > } > - archive.addAll(Arrays.asList(new OptimisationSolution(vector, > problem.getFitness(vector, false)))); + > archive.addAll(Arrays.asList(new OptimisationSolution(vector, > problem.getFitness(vector)))); } > assertThat(archive.size(), is(100)); > archive.clear(); > @@ -201,7 +201,7 @@ public class ConstrainedArchiveTest { > for (int j = i; j < i + 5; ++j) { > vector.add(new Real(j)); > } > - solutions.add(new OptimisationSolution(vector, > problem.getFitness(vector, false))); + solutions.add(new > OptimisationSolution(vector, problem.getFitness(vector))); } > archive.addAll(solutions); > assertThat(archive.size(), is(100)); > diff --git > a/src/test/java/net/sourceforge/cilib/moo/archive/solutionweighing/Solution >WeighingTest.java > b/src/test/java/net/sourceforge/cilib/moo/archive/solutionweighing/Solution >WeighingTest.java index ae30953..9d2ef20 100644 > --- > a/src/test/java/net/sourceforge/cilib/moo/archive/solutionweighing/Solution >WeighingTest.java +++ > b/src/test/java/net/sourceforge/cilib/moo/archive/solutionweighing/Solution >WeighingTest.java @@ -72,7 +72,7 @@ public class SolutionWeighingTest { > } > > @Override > - public Fitness getFitness(Type solution, boolean count) { > + public Fitness getFitness(Type solution) { > Vector position = (Vector) solution; > return new MinimisationFitness(position.getReal(index)); > } > @@ -123,27 +123,27 @@ public class SolutionWeighingTest { > Vector position = new Vector(); > position.add(new Real(1)); > position.add(new Real(1)); > - solutions.add(new OptimisationSolution(position, > moProblem.getFitness(position, false))); + solutions.add(new > OptimisationSolution(position, moProblem.getFitness(position))); > > position = new Vector(); > position.add(new Real(2)); > position.add(new Real(4)); > - solutions.add(new OptimisationSolution(position, > moProblem.getFitness(position, false))); + solutions.add(new > OptimisationSolution(position, moProblem.getFitness(position))); > > position = new Vector(); > position.add(new Real(3)); > position.add(new Real(2)); > - solutions.add(new OptimisationSolution(position, > moProblem.getFitness(position, false))); + solutions.add(new > OptimisationSolution(position, moProblem.getFitness(position))); > > position = new Vector(); > position.add(new Real(4)); > position.add(new Real(6)); > - solutions.add(new OptimisationSolution(position, > moProblem.getFitness(position, false))); + solutions.add(new > OptimisationSolution(position, moProblem.getFitness(position))); > > position = new Vector(); > position.add(new Real(5)); > position.add(new Real(1)); > - solutions.add(new OptimisationSolution(position, > moProblem.getFitness(position, false))); + solutions.add(new > OptimisationSolution(position, moProblem.getFitness(position))); } > > @Test > diff --git a/src/test/java/net/sourceforge/cilib/problem/MOFitnessTest.java > b/src/test/java/net/sourceforge/cilib/problem/MOFitnessTest.java index > 407bc25..ae5d5d5 100644 > --- a/src/test/java/net/sourceforge/cilib/problem/MOFitnessTest.java > +++ b/src/test/java/net/sourceforge/cilib/problem/MOFitnessTest.java > @@ -56,8 +56,8 @@ public class MOFitnessTest { > new MinimisationFitness(new Integer(1).doubleValue()), > new MinimisationFitness(new Integer(1).doubleValue())}; > > - Fitness f1 = moproblem.getFitness(inferior, false); > - Fitness f2 = moproblem.getFitness(oneFitness, false); > + Fitness f1 = moproblem.getFitness(inferior); > + Fitness f2 = moproblem.getFitness(oneFitness); > > assertTrue(f1.compareTo(f2) < 0); > assertTrue(f2.compareTo(f1) > 0); > @@ -80,14 +80,10 @@ public class MOFitnessTest { > } > > @Override > - public Fitness getFitness(Type solution, boolean count) { > + public Fitness getFitness(Type solution) { > return (Fitness) solution; > } > > - public Fitness getFitness(Type[] solution, boolean count) { > - return (Fitness) solution[i]; > - } > - > @Override > public int getFitnessEvaluations() { > return 0; |
From: Gary P. <gpa...@gm...> - 2009-08-04 07:32:20
|
Seems like there are two scenarios for this: 1. The fitness evaluations need to be counted 2. The number of fitness updates need to be maintained. As a result of the above, (2) will need to be implemented. (1) seems valid though. Thoughts? On Friday 31 July 2009 10:31:27 Gary Pampara wrote: > Chatted to Leo. > > There are exceptions when it comes to dynamic environments. Positions that > have not changed that need to be re-evaluated based on an environment > change should not count as a fitness evaluation. > > Will adjust the patch to cater for such situations. |