From adc0d74bf7a90b2349e44b0f2d659f0e2b444311 Mon Sep 17 00:00:00 2001 From: Fabian Becker Date: Sun, 26 Oct 2014 19:40:55 +0100 Subject: [PATCH] Rename AbstractEAIndividualComparator to EAIndividualComparator as it is not abstract. --- ...rator.java => EAIndividualComparator.java} | 31 +++++++++---------- .../archiving/ArchivingNSGAIISMeasure.java | 4 +-- .../cluster/ClusteringDynPeakIdent.java | 4 +-- .../cluster/ClusteringNearestBetter.java | 8 ++--- .../operator/mutation/MutateESRankMuCMA.java | 4 +-- .../HistoryConvergenceTerminator.java | 4 +-- .../optimization/population/Population.java | 12 +++---- .../strategies/ClusterBasedNichingEA.java | 12 +++---- .../strategies/MultiObjectiveEA.java | 4 +-- .../strategies/ParticleSwarmOptimization.java | 8 ++--- 10 files changed, 45 insertions(+), 46 deletions(-) rename src/eva2/optimization/individuals/{AbstractEAIndividualComparator.java => EAIndividualComparator.java} (88%) diff --git a/src/eva2/optimization/individuals/AbstractEAIndividualComparator.java b/src/eva2/optimization/individuals/EAIndividualComparator.java similarity index 88% rename from src/eva2/optimization/individuals/AbstractEAIndividualComparator.java rename to src/eva2/optimization/individuals/EAIndividualComparator.java index 88ae47b6..b85592e9 100644 --- a/src/eva2/optimization/individuals/AbstractEAIndividualComparator.java +++ b/src/eva2/optimization/individuals/EAIndividualComparator.java @@ -16,11 +16,10 @@ import java.util.Comparator; * the comparison is based on those. This may be used to access alternative (e.g. older or * best-so-far fitness values) for individual comparison. * - * @author mkron - * @see #AbstractEAIndividual().isDominatingFitness(double[], double[]) + * @see AbstractEAIndividual#isDominatingFitness(double[], double[]) */ @eva2.util.annotation.Description(value = "A comparator class for general EA individuals. Compares individuals based on their fitness in context of minimization.") -public class AbstractEAIndividualComparator implements Comparator, Serializable { +public class EAIndividualComparator implements Comparator, Serializable { // flag whether a data field should be used. private String indyDataKey = ""; private int fitCriterion = -1; @@ -31,7 +30,7 @@ public class AbstractEAIndividualComparator implements Comparator, Seria * The default version calls compares based on dominance with priority of feasibility if there are constraints. * It assigns -1 if first is better, 1 if second is better, 0 if the two ind.s are not comparable. */ - public AbstractEAIndividualComparator() { + public EAIndividualComparator() { this("", -1, true); } @@ -42,9 +41,9 @@ public class AbstractEAIndividualComparator implements Comparator, Seria * also regarded by default. * If indyDataKey is null, the default comparison is used. * - * @param indyDataKey + * @param indyDataKey Field of the individual to use for comparison */ - public AbstractEAIndividualComparator(String indyDataKey) { + public EAIndividualComparator(String indyDataKey) { this(indyDataKey, -1, true); } @@ -54,7 +53,7 @@ public class AbstractEAIndividualComparator implements Comparator, Seria * * @param fitnessCriterion */ - public AbstractEAIndividualComparator(int fitnessCriterion) { + public EAIndividualComparator(int fitnessCriterion) { this("", fitnessCriterion, true); } @@ -66,14 +65,14 @@ public class AbstractEAIndividualComparator implements Comparator, Seria * @param fitIndex * @param preferFeasible */ - public AbstractEAIndividualComparator(int fitIndex, boolean preferFeasible) { + public EAIndividualComparator(int fitIndex, boolean preferFeasible) { this("", fitIndex, preferFeasible); } @Override public boolean equals(Object other) { - if (other instanceof AbstractEAIndividualComparator) { - AbstractEAIndividualComparator o = (AbstractEAIndividualComparator) other; + if (other instanceof EAIndividualComparator) { + EAIndividualComparator o = (EAIndividualComparator) other; if ((indyDataKey == o.indyDataKey) || (indyDataKey != null && (indyDataKey.equals(o.indyDataKey)))) { if ((fitCriterion == o.fitCriterion) && (preferFeasible == o.preferFeasible)) { return true; @@ -91,19 +90,19 @@ public class AbstractEAIndividualComparator implements Comparator, Seria /** * Generic constructor. * - * @param indyDataKey + * @param indyDataKey Field of the individual to use for comparison * @param fitnessCriterion * @param preferFeasible - * @see #AbstractEAIndividualComparator(int) - * @see #AbstractEAIndividualComparator(String) + * @see #EAIndividualComparator(int) + * @see #EAIndividualComparator(String) */ - public AbstractEAIndividualComparator(String indyDataKey, int fitnessCriterion, boolean preferFeasible) { + public EAIndividualComparator(String indyDataKey, int fitnessCriterion, boolean preferFeasible) { this.indyDataKey = indyDataKey; this.fitCriterion = fitnessCriterion; this.preferFeasible = preferFeasible; } - public AbstractEAIndividualComparator(AbstractEAIndividualComparator other) { + public EAIndividualComparator(EAIndividualComparator other) { indyDataKey = other.indyDataKey; fitCriterion = other.fitCriterion; preferFeasible = other.preferFeasible; @@ -111,7 +110,7 @@ public class AbstractEAIndividualComparator implements Comparator, Seria @Override public Object clone() { - return new AbstractEAIndividualComparator(this); + return new EAIndividualComparator(this); } /** diff --git a/src/eva2/optimization/operator/archiving/ArchivingNSGAIISMeasure.java b/src/eva2/optimization/operator/archiving/ArchivingNSGAIISMeasure.java index f4694dc4..8bfc4eb2 100644 --- a/src/eva2/optimization/operator/archiving/ArchivingNSGAIISMeasure.java +++ b/src/eva2/optimization/operator/archiving/ArchivingNSGAIISMeasure.java @@ -1,7 +1,7 @@ package eva2.optimization.operator.archiving; import eva2.optimization.individuals.AbstractEAIndividual; -import eva2.optimization.individuals.AbstractEAIndividualComparator; +import eva2.optimization.individuals.EAIndividualComparator; import eva2.optimization.population.Population; import java.util.Arrays; @@ -65,7 +65,7 @@ public class ArchivingNSGAIISMeasure extends ArchivingNSGAII { } - Arrays.sort(frontArray, new AbstractEAIndividualComparator(0)); + Arrays.sort(frontArray, new EAIndividualComparator(0)); ((AbstractEAIndividual) frontArray[0]).putData("HyperCube", Double.MAX_VALUE); //die beiden aussen bekommen maximal wert als smeasure diff --git a/src/eva2/optimization/operator/cluster/ClusteringDynPeakIdent.java b/src/eva2/optimization/operator/cluster/ClusteringDynPeakIdent.java index 3899b97a..cb68f13e 100644 --- a/src/eva2/optimization/operator/cluster/ClusteringDynPeakIdent.java +++ b/src/eva2/optimization/operator/cluster/ClusteringDynPeakIdent.java @@ -1,7 +1,7 @@ package eva2.optimization.operator.cluster; import eva2.optimization.individuals.AbstractEAIndividual; -import eva2.optimization.individuals.AbstractEAIndividualComparator; +import eva2.optimization.individuals.EAIndividualComparator; import eva2.optimization.individuals.IndividualDistanceComparator; import eva2.optimization.operator.distancemetric.EuclideanMetric; import eva2.optimization.operator.distancemetric.InterfaceDistanceMetric; @@ -99,7 +99,7 @@ public class ClusteringDynPeakIdent implements InterfaceClustering, java.io.Seri @Override public Population[] cluster(Population pop, Population referenceSet) { - AbstractEAIndividualComparator eaComparator = new AbstractEAIndividualComparator(-1); + EAIndividualComparator eaComparator = new EAIndividualComparator(-1); Population sorted = pop.getSortedBestFirst(eaComparator); Population peaks = performDynPeakIdent(metric, sorted, numNiches, nicheRadius); Population[] clusters = new Population[peaks.size() + 1]; diff --git a/src/eva2/optimization/operator/cluster/ClusteringNearestBetter.java b/src/eva2/optimization/operator/cluster/ClusteringNearestBetter.java index 51d712ef..a974e00e 100644 --- a/src/eva2/optimization/operator/cluster/ClusteringNearestBetter.java +++ b/src/eva2/optimization/operator/cluster/ClusteringNearestBetter.java @@ -2,7 +2,7 @@ package eva2.optimization.operator.cluster; import eva2.gui.editor.GenericObjectEditor; import eva2.optimization.individuals.AbstractEAIndividual; -import eva2.optimization.individuals.AbstractEAIndividualComparator; +import eva2.optimization.individuals.EAIndividualComparator; import eva2.optimization.operator.distancemetric.InterfaceDistanceMetric; import eva2.optimization.operator.distancemetric.PhenotypeMetric; import eva2.optimization.operator.paramcontrol.ParamAdaption; @@ -37,7 +37,7 @@ public class ClusteringNearestBetter implements InterfaceClustering, Serializabl private int[] uplink; private double[] uplinkDist; - private AbstractEAIndividualComparator comparator = new AbstractEAIndividualComparator(); + private EAIndividualComparator comparator = new EAIndividualComparator(); private Vector[] children; private static final String initializedForKey = "initializedClustNearestBetterOnHash"; private static final String initializedRefData = "initializedClustNearestBetterData"; @@ -52,7 +52,7 @@ public class ClusteringNearestBetter implements InterfaceClustering, Serializabl this.meanDistFactor = o.meanDistFactor; this.currentMeanDistance = o.currentMeanDistance; this.minimumGroupSize = o.minimumGroupSize; - this.comparator = (AbstractEAIndividualComparator) o.comparator.clone(); + this.comparator = (EAIndividualComparator) o.comparator.clone(); this.testConvergingSpeciesOnBestOnly = o.testConvergingSpeciesOnBestOnly; } @@ -435,7 +435,7 @@ public class ClusteringNearestBetter implements InterfaceClustering, Serializabl return "Define the comparator by which the population is sorted before clustering."; } - public AbstractEAIndividualComparator getComparator() { + public EAIndividualComparator getComparator() { return comparator; } // public void setComparator(AbstractEAIndividualComparator comparator) { diff --git a/src/eva2/optimization/operator/mutation/MutateESRankMuCMA.java b/src/eva2/optimization/operator/mutation/MutateESRankMuCMA.java index 298db5fb..228ba7ad 100644 --- a/src/eva2/optimization/operator/mutation/MutateESRankMuCMA.java +++ b/src/eva2/optimization/operator/mutation/MutateESRankMuCMA.java @@ -3,7 +3,7 @@ package eva2.optimization.operator.mutation; import eva2.gui.editor.GenericObjectEditor; import eva2.optimization.enums.ESMutationInitialSigma; import eva2.optimization.individuals.AbstractEAIndividual; -import eva2.optimization.individuals.AbstractEAIndividualComparator; +import eva2.optimization.individuals.EAIndividualComparator; import eva2.optimization.individuals.InterfaceDataTypeDouble; import eva2.optimization.operator.distancemetric.EuclideanMetric; import eva2.optimization.population.Population; @@ -112,7 +112,7 @@ public class MutateESRankMuCMA implements InterfaceAdaptOperatorGenerational, In */ @Override public void adaptAfterSelection(Population oldGen, Population selectedP) { - Population selectedSorted = selectedP.getSortedBestFirst(new AbstractEAIndividualComparator(-1)); + Population selectedSorted = selectedP.getSortedBestFirst(new EAIndividualComparator(-1)); int mu, lambda; mu = selectedP.size(); diff --git a/src/eva2/optimization/operator/terminators/HistoryConvergenceTerminator.java b/src/eva2/optimization/operator/terminators/HistoryConvergenceTerminator.java index 8a6149b4..6541bc4b 100644 --- a/src/eva2/optimization/operator/terminators/HistoryConvergenceTerminator.java +++ b/src/eva2/optimization/operator/terminators/HistoryConvergenceTerminator.java @@ -1,7 +1,7 @@ package eva2.optimization.operator.terminators; import eva2.optimization.individuals.AbstractEAIndividual; -import eva2.optimization.individuals.AbstractEAIndividualComparator; +import eva2.optimization.individuals.EAIndividualComparator; import eva2.optimization.operator.distancemetric.ObjectiveSpaceMetric; import eva2.optimization.population.InterfaceSolutionSet; import eva2.optimization.population.Population; @@ -22,7 +22,7 @@ public class HistoryConvergenceTerminator implements InterfaceTerminator, Serial int fitCrit = 0; double convergenceThreshold; boolean stdDevInsteadOfImprovement; - AbstractEAIndividualComparator indyImprovementComparator = new AbstractEAIndividualComparator("", -1, true); + EAIndividualComparator indyImprovementComparator = new EAIndividualComparator("", -1, true); String msg; public static final boolean hideFromGOE = true; // hide from GUI diff --git a/src/eva2/optimization/population/Population.java b/src/eva2/optimization/population/Population.java index ac55d766..a05e9ef5 100644 --- a/src/eva2/optimization/population/Population.java +++ b/src/eva2/optimization/population/Population.java @@ -1039,7 +1039,7 @@ public class Population extends ArrayList implements PopulationInterface, Clonea } } - public int getIndexOfBestEAIndividual(AbstractEAIndividualComparator comparator) { + public int getIndexOfBestEAIndividual(EAIndividualComparator comparator) { return getIndexOfBestOrWorstIndividual(true, comparator); } @@ -1059,10 +1059,10 @@ public class Population extends ArrayList implements PopulationInterface, Clonea * @param fitIndex * @return * @see #getIndexOfBestOrWorstIndividual(boolean, Comparator) - * @see AbstractEAIndividualComparator + * @see eva2.optimization.individuals.EAIndividualComparator */ public int getIndexOfBestOrWorstIndy(boolean bBest, boolean checkConstraints, int fitIndex) { - return getIndexOfBestOrWorstIndividual(bBest, new AbstractEAIndividualComparator(fitIndex, checkConstraints)); + return getIndexOfBestOrWorstIndividual(bBest, new EAIndividualComparator(fitIndex, checkConstraints)); } /** @@ -1162,7 +1162,7 @@ public class Population extends ArrayList implements PopulationInterface, Clonea n = super.size(); } Population pop = new Population(n); - getSortedNIndividuals(n, true, pop, new AbstractEAIndividualComparator(fitIndex)); + getSortedNIndividuals(n, true, pop, new EAIndividualComparator(fitIndex)); return pop; } @@ -1179,7 +1179,7 @@ public class Population extends ArrayList implements PopulationInterface, Clonea */ public Population getWorstNIndividuals(int n, int fitIndex) { Population pop = new Population(n); - getSortedNIndividuals(n, false, pop, new AbstractEAIndividualComparator(fitIndex)); + getSortedNIndividuals(n, false, pop, new EAIndividualComparator(fitIndex)); return pop; } @@ -1272,7 +1272,7 @@ public class Population extends ArrayList implements PopulationInterface, Clonea * @param fitIndex */ public void setSortingFitnessCriterion(int fitIndex) { - getSorted(new AbstractEAIndividualComparator(fitIndex)); + getSorted(new EAIndividualComparator(fitIndex)); } /** diff --git a/src/eva2/optimization/strategies/ClusterBasedNichingEA.java b/src/eva2/optimization/strategies/ClusterBasedNichingEA.java index a7711268..9818388d 100644 --- a/src/eva2/optimization/strategies/ClusterBasedNichingEA.java +++ b/src/eva2/optimization/strategies/ClusterBasedNichingEA.java @@ -7,7 +7,7 @@ import eva2.gui.plot.Plot; import eva2.gui.plot.TopoPlot; import eva2.optimization.go.InterfacePopulationChangedEventListener; import eva2.optimization.individuals.AbstractEAIndividual; -import eva2.optimization.individuals.AbstractEAIndividualComparator; +import eva2.optimization.individuals.EAIndividualComparator; import eva2.optimization.individuals.InterfaceDataTypeDouble; import eva2.optimization.operator.cluster.ClusteringDensityBased; import eva2.optimization.operator.cluster.InterfaceClustering; @@ -72,8 +72,8 @@ public class ClusterBasedNichingEA extends AbstractOptimizer implements Interfac private double muLambdaRatio = 0.5; private int sleepTime = 0; private int maxSpeciesSize = 15; - private AbstractEAIndividualComparator reduceSizeComparator = new AbstractEAIndividualComparator(); - private AbstractEAIndividualComparator histComparator = new AbstractEAIndividualComparator("", -1, true); + private EAIndividualComparator reduceSizeComparator = new EAIndividualComparator(); + private EAIndividualComparator histComparator = new EAIndividualComparator("", -1, true); protected ParameterControlManager paramControl = new ParameterControlManager(); private double avgDistForConvergence = 0.1; // Upper bound for average indy distance in a species in the test for convergence @@ -1137,12 +1137,12 @@ public class ClusterBasedNichingEA extends AbstractOptimizer implements Interfac return "Set the comparator used to define the 'worst' individuals when reducing species size."; } - public AbstractEAIndividualComparator getReduceSizeComparator() { + public EAIndividualComparator getReduceSizeComparator() { return reduceSizeComparator; } public void setReduceSizeComparator( - AbstractEAIndividualComparator reduceSizeComparator) { + EAIndividualComparator reduceSizeComparator) { this.reduceSizeComparator = reduceSizeComparator; } @@ -1153,7 +1153,7 @@ public class ClusterBasedNichingEA extends AbstractOptimizer implements Interfac // public void setHistComparator(AbstractEAIndividualComparator histComparator) { // this.histComparator = histComparator; // } - public AbstractEAIndividualComparator getHistComparator() { + public EAIndividualComparator getHistComparator() { return histComparator; } // public String histComparatorTipText() { diff --git a/src/eva2/optimization/strategies/MultiObjectiveEA.java b/src/eva2/optimization/strategies/MultiObjectiveEA.java index 81d176f2..7c9442e0 100644 --- a/src/eva2/optimization/strategies/MultiObjectiveEA.java +++ b/src/eva2/optimization/strategies/MultiObjectiveEA.java @@ -2,7 +2,7 @@ package eva2.optimization.strategies; import eva2.optimization.go.InterfacePopulationChangedEventListener; import eva2.optimization.individuals.AbstractEAIndividual; -import eva2.optimization.individuals.AbstractEAIndividualComparator; +import eva2.optimization.individuals.EAIndividualComparator; import eva2.optimization.operator.archiving.ArchivingNSGAII; import eva2.optimization.operator.archiving.InformationRetrievalInserting; import eva2.optimization.operator.archiving.InterfaceArchiving; @@ -248,7 +248,7 @@ public class MultiObjectiveEA implements InterfaceOptimizer, java.io.Serializabl @Override public InterfaceSolutionSet getAllSolutions() { - return new SolutionSet(getPopulation(), ArchivingNSGAII.getNonDominatedSortedFront(getPopulation().getArchive()).getSortedPop(new AbstractEAIndividualComparator(0))); + return new SolutionSet(getPopulation(), ArchivingNSGAII.getNonDominatedSortedFront(getPopulation().getArchive()).getSortedPop(new EAIndividualComparator(0))); } /** diff --git a/src/eva2/optimization/strategies/ParticleSwarmOptimization.java b/src/eva2/optimization/strategies/ParticleSwarmOptimization.java index f4c62a96..b3dc47b5 100644 --- a/src/eva2/optimization/strategies/ParticleSwarmOptimization.java +++ b/src/eva2/optimization/strategies/ParticleSwarmOptimization.java @@ -7,7 +7,7 @@ import eva2.gui.plot.TopoPlot; import eva2.optimization.enums.PSOTopology; import eva2.optimization.go.InterfacePopulationChangedEventListener; import eva2.optimization.individuals.AbstractEAIndividual; -import eva2.optimization.individuals.AbstractEAIndividualComparator; +import eva2.optimization.individuals.EAIndividualComparator; import eva2.optimization.individuals.InterfaceDataTypeDouble; import eva2.optimization.operator.distancemetric.PhenotypeMetric; import eva2.optimization.operator.paramcontrol.ParamAdaption; @@ -1316,9 +1316,9 @@ public class ParticleSwarmOptimization extends AbstractOptimizer implements java if ((topology == PSOTopology.multiSwarm) || (topology == PSOTopology.tree)) { sortedPop = pop.toArray(); if ((topology == PSOTopology.multiSwarm) || (treeStruct >= 2)) { - Arrays.sort(sortedPop, new AbstractEAIndividualComparator()); + Arrays.sort(sortedPop, new EAIndividualComparator()); } else { - Arrays.sort(sortedPop, new AbstractEAIndividualComparator(partBestFitKey)); + Arrays.sort(sortedPop, new EAIndividualComparator(partBestFitKey)); } addSortedIndicesTo(sortedPop, pop); } @@ -1379,7 +1379,7 @@ public class ParticleSwarmOptimization extends AbstractOptimizer implements java if (topology == PSOTopology.hpso) { // HPSO sorting the population int parentIndex; AbstractEAIndividual indy; - AbstractEAIndividualComparator comp = new AbstractEAIndividualComparator(partBestFitKey); + EAIndividualComparator comp = new EAIndividualComparator(partBestFitKey); for (int i = 0; i < pop.size(); i++) { // loop over the part of the tree which is complete (full degree in each level) parentIndex = getParentIndex(topologyRange, i, pop.size());