From d8a169eb10550f60ee6551e58ae39e78ead8d6bd Mon Sep 17 00:00:00 2001 From: Fabian Becker Date: Tue, 21 Jan 2014 20:47:18 +0100 Subject: [PATCH] Added @Description annotations to all optimization strategies. refs #9 --- .../strategies/BinaryScatterSearch.java | 7 +-- src/eva2/optimization/strategies/CBNPSO.java | 6 +- .../CHCAdaptiveSearchAlgorithm.java | 22 +------ .../strategies/ClusterBasedNichingEA.java | 57 +++++++------------ .../strategies/ClusteringHillClimbing.java | 9 +-- .../DynamicParticleSwarmOptimization.java | 19 +------ .../optimization/strategies/EsDpiNiching.java | 12 ++-- .../strategies/EsDpiNichingCma.java | 8 +-- .../strategies/EvolutionStrategyIPOP.java | 10 +--- .../strategies/EvolutionaryProgramming.java | 22 +------ .../strategies/FloodAlgorithm.java | 19 +------ .../strategies/GradientDescentAlgorithm.java | 7 +-- .../strategies/IslandModelEA.java | 17 +----- src/eva2/optimization/strategies/LTGA.java | 20 +++---- .../strategies/MemeticAlgorithm.java | 24 ++------ .../strategies/MultiObjectiveCMAES.java | 8 +-- .../strategies/MultiObjectiveEA.java | 19 +------ .../strategies/NelderMeadSimplex.java | 8 +-- .../ParticleFilterOptimization.java | 23 +------- .../strategies/ParticleSwarmOptimization.java | 15 +---- .../ParticleSwarmOptimizationGCPSO.java | 12 +--- .../PopulationBasedIncrementalLearning.java | 22 +------ .../strategies/SimulatedAnnealing.java | 18 +----- .../strategies/SteadyStateGA.java | 19 +------ .../strategies/ThresholdAlgorithm.java | 18 +----- src/eva2/optimization/strategies/Tribes.java | 8 +-- .../strategies/WingedMultiObjectiveEA.java | 18 +----- 27 files changed, 96 insertions(+), 351 deletions(-) diff --git a/src/eva2/optimization/strategies/BinaryScatterSearch.java b/src/eva2/optimization/strategies/BinaryScatterSearch.java index fed45030..07f4c06f 100644 --- a/src/eva2/optimization/strategies/BinaryScatterSearch.java +++ b/src/eva2/optimization/strategies/BinaryScatterSearch.java @@ -15,6 +15,7 @@ import eva2.optimization.problems.B1Problem; import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.tools.Pair; import eva2.tools.math.RNG; +import eva2.util.annotation.Description; import java.util.ArrayList; import java.util.BitSet; @@ -22,12 +23,12 @@ import java.util.BitSet; /** * A BinaryScatterSearch implementation taken mainly from [i]. * - * @author Alex *

* F. Gortazar, A. Duarte, M. Laguna and R. Marti: Black Box Scatter Search for * General Classes of Binary Optimization Problems Computers and Operations * research, vol. 37, no. 11, pp. 1977-1986 (2010) */ +@Description("A basic implementation of a Binary ScatterSearch") public class BinaryScatterSearch implements InterfaceOptimizer, java.io.Serializable, InterfacePopulationChangedEventListener { private static boolean TRACE = false; @@ -910,8 +911,4 @@ public class BinaryScatterSearch implements InterfaceOptimizer, java.io.Serializ public String perCentSecondGenMethodTipText() { return "The number of individuals generated with the second Generation Method. The percentage, that is not covered with the first and the second method will be covered with a third method"; } - - public static String globalInfo() { - return "A basic implementation of a Binary ScatterSearch"; - } } diff --git a/src/eva2/optimization/strategies/CBNPSO.java b/src/eva2/optimization/strategies/CBNPSO.java index 8354a052..f3a06a42 100644 --- a/src/eva2/optimization/strategies/CBNPSO.java +++ b/src/eva2/optimization/strategies/CBNPSO.java @@ -16,9 +16,11 @@ import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.InterfaceProblemDouble; import eva2.tools.EVAERROR; import eva2.tools.ToolBox; +import eva2.util.annotation.Description; import java.io.Serializable; +@Description("A CBN-EA variant employing PSO and dynamic variation of the clustering parameter by default.") public class CBNPSO extends ClusterBasedNichingEA implements Serializable { private boolean forceUpperClustDist = true; @@ -158,10 +160,6 @@ public class CBNPSO extends ClusterBasedNichingEA implements Serializable { } } - public static String globalInfo() { - return "A CBN-EA variant employing PSO and dynamic variation of the clustering parameter by default."; - } - public void setForceUpperClustDist(boolean forceUpperClustDist) { this.forceUpperClustDist = forceUpperClustDist; } diff --git a/src/eva2/optimization/strategies/CHCAdaptiveSearchAlgorithm.java b/src/eva2/optimization/strategies/CHCAdaptiveSearchAlgorithm.java index dcb5152f..403275fd 100644 --- a/src/eva2/optimization/strategies/CHCAdaptiveSearchAlgorithm.java +++ b/src/eva2/optimization/strategies/CHCAdaptiveSearchAlgorithm.java @@ -22,15 +22,10 @@ import java.util.BitSet; * able to make it competitive to a standard GA.. *sigh* This is a * implementation of the CHC Adaptive Search Algorithm (Cross generational * elitist selection, Heterogeneous recombination and Cataclysmic mutation). - * Citation: - *

- * Copyright: Copyright (c) 2003 Company: University of Tuebingen, Computer - * Architecture * - * @author Felix Streichert - * @version: $Revision: 307 $ $Date: 2007-12-04 14:31:47 +0100 (Tue, 04 Dec - * 2007) $ $Author: mkron $ + * ToDo: Check implementation for correctness. */ +@eva2.util.annotation.Description("This is an implementation of the CHC Adaptive Search Algorithm by Eselman.") public class CHCAdaptiveSearchAlgorithm implements InterfaceOptimizer, java.io.Serializable { private double initialDifferenceThreshold = 0.25; @@ -310,19 +305,6 @@ public class CHCAdaptiveSearchAlgorithm implements InterfaceOptimizer, java.io.S return this.identifier; } - /** - * ******************************************************************************************************************** - * These are for GUI - */ - /** - * This method returns a global info string - * - * @return description - */ - public static String globalInfo() { - return "This is an implementation of the CHC Adaptive Search Algorithm by Eselman."; - } - /** * This method will return a naming String * diff --git a/src/eva2/optimization/strategies/ClusterBasedNichingEA.java b/src/eva2/optimization/strategies/ClusterBasedNichingEA.java index 6bbdb31d..32ecf965 100644 --- a/src/eva2/optimization/strategies/ClusterBasedNichingEA.java +++ b/src/eva2/optimization/strategies/ClusterBasedNichingEA.java @@ -26,6 +26,7 @@ import eva2.optimization.problems.*; import eva2.tools.EVAERROR; import eva2.tools.chart2d.*; import eva2.tools.math.Mathematics; +import eva2.util.annotation.Description; import java.util.*; @@ -41,17 +42,13 @@ import java.util.*; * For the CBN-PSO remember to use the IndividualDataMetric so that the * remembered positions are used for clustering (which are rel. stable - so that * species clustering actually makes sense). - *

- * Copyright: Copyright (c) 2010 Company: University of Tuebingen, Computer - * Architecture - * - * @author Felix Streichert, Marcel Kronfeld */ +@Description("This is a versatile species based niching EA method.") public class ClusterBasedNichingEA implements InterfacePopulationChangedEventListener, InterfaceAdditionalPopulationInformer, InterfaceOptimizer, java.io.Serializable { private static final long serialVersionUID = -3143069327594708609L; private Population population = new Population(); - private transient Population poulationArchive = new Population(); + private transient Population populationArchive = new Population(); private ArrayList species = new ArrayList(); private Population undifferentiatedPopulation = new Population(); private transient Population doomedPopulation = new Population(); @@ -127,7 +124,7 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis public ClusterBasedNichingEA(ClusterBasedNichingEA a) { this.epsilonBound = a.epsilonBound; this.population = (Population) a.population.clone(); - this.poulationArchive = (Population) a.poulationArchive.clone(); + this.populationArchive = (Population) a.populationArchive.clone(); this.doomedPopulation = (Population) a.doomedPopulation.clone(); this.optimizationProblem = (InterfaceOptimizationProblem) a.optimizationProblem.clone(); this.optimizer = (InterfaceOptimizer) a.optimizer.clone(); @@ -199,7 +196,7 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis this.optimizer.addPopulationChangedEventListener(this); this.undifferentiatedPopulation.setTargetSize(this.populationSize); this.species = new ArrayList(); - this.poulationArchive = undifferentiatedPopulation.cloneWithoutInds(); + this.populationArchive = undifferentiatedPopulation.cloneWithoutInds(); // if (useDistraction) distraction = new Distraction(distrDefaultStrength, Distraction.METH_BEST); convergedCnt = 0; collisions = 0; @@ -296,8 +293,8 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis plotPopConnected(topologyPlot, pop); } if (!useDistraction) { - for (int i = 0; i < this.poulationArchive.size(); i++) { - plotIndy(topologyPlot, 'x', (InterfaceDataTypeDouble) poulationArchive.get(i)); + for (int i = 0; i < this.populationArchive.size(); i++) { + plotIndy(topologyPlot, 'x', (InterfaceDataTypeDouble) populationArchive.get(i)); } } else { // for (int i = 0; i < this.distraction.getDistractorSetSize(); i++) { @@ -606,7 +603,7 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis // } int toReinit = 0; if (true) { //if (m_UseArchive) { - poulationArchive.add(best); + populationArchive.add(best); // System.out.println((""+ population.getFunctionCalls() + " " + (BeanInspector.toString(best.getDoublePosition())).replaceAll(";|\\[|\\]", ""))); species.remove(i); // remove the converged Species toReinit = curSpecies.size(); @@ -757,11 +754,11 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis } Population spec1, spec2; // test if species are close to already archived solutions - deactivate them if so - assocSpec = caForSpeciesMerging.associateLoners(poulationArchive, species.toArray(new Population[species.size()]), population); + assocSpec = caForSpeciesMerging.associateLoners(populationArchive, species.toArray(new Population[species.size()]), population); PriorityQueue specToRemove = new PriorityQueue(5, Collections.reverseOrder()); // backwards sorted or DIE! - for (int i = poulationArchive.size() - 1; i >= 0; i--) { + for (int i = populationArchive.size() - 1; i >= 0; i--) { if (assocSpec[i] >= 0) { - AbstractEAIndividual aIndy = poulationArchive.getEAIndividual(i); + AbstractEAIndividual aIndy = populationArchive.getEAIndividual(i); spec1 = (Population) this.species.get(assocSpec[i]); // archived solution corresponds to an existing species if (!specToRemove.contains(assocSpec[i])) { @@ -773,7 +770,7 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis } if (spec1.getBestEAIndividual().isDominating(aIndy)) { // update the archived one with the better one? No rather not - it may happen that a large species is assoctiated which is quite large and spans over several optima - in that case an earlier found may get lost -// poulationArchive.set(i, spec1.getBestEAIndividual()); +// populationArchive.set(i, spec1.getBestEAIndividual()); } if (TRACE_EVTS) { System.out.println("!!! Reinit Spec " + assocSpec[i] + ", fit " + spec1.getBestEAIndividual()); @@ -872,7 +869,7 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis } if (TRACE_STATE) { printState("---- EoCBN", doomedPopulation); - System.out.println("Archive: " + poulationArchive.getStringRepresentation()); + System.out.println("Archive: " + populationArchive.getStringRepresentation()); } } // if (TRACE) { @@ -1111,18 +1108,6 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis return this.identifier; } - /** - * ******************************************************************************************************************** - * These are for GUI - */ - /** - * This method returns a global info string - * - * @return description - */ - public static String globalInfo() { - return "This is a versatile species based niching EA method."; - } /** * This method will return a naming String @@ -1145,10 +1130,10 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis @Override public void setPopulation(Population pop) { this.undifferentiatedPopulation = pop; - if (poulationArchive == null) { - poulationArchive = new Population(); + if (populationArchive == null) { + populationArchive = new Population(); } - poulationArchive.setPopMetric(pop.getPopMetric()); + populationArchive.setPopMetric(pop.getPopMetric()); population.setPopMetric(pop.getPopMetric()); doomedPopulation.setPopMetric(pop.getPopMetric()); @@ -1166,7 +1151,7 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis } public Population getArchivedSolutions() { - return (Population) poulationArchive.clone(); + return (Population) populationArchive.clone(); } @Override @@ -1469,12 +1454,12 @@ public class ClusterBasedNichingEA implements InterfacePopulationChangedEventLis undifferentiatedPopulation.size(), species.size(), getAvgSpeciesMeasures()[0], - poulationArchive.size(), - poulationArchive.getCorrelations()[3], - poulationArchive.getPopulationMeasures()[0], + populationArchive.size(), + populationArchive.getCorrelations()[3], + populationArchive.getPopulationMeasures()[0], collisions, getClusterDiffDist()}; -// return undifferentiatedPopulation.size() + " \t " + species.size() + " \t " + BeanInspector.toString(getAvgSpeciesMeasures()[0]) + " \t " + (poulationArchive.size()); +// return undifferentiatedPopulation.size() + " \t " + species.size() + " \t " + BeanInspector.toString(getAvgSpeciesMeasures()[0]) + " \t " + (populationArchive.size()); } /** diff --git a/src/eva2/optimization/strategies/ClusteringHillClimbing.java b/src/eva2/optimization/strategies/ClusteringHillClimbing.java index 22204101..7528f5d2 100644 --- a/src/eva2/optimization/strategies/ClusteringHillClimbing.java +++ b/src/eva2/optimization/strategies/ClusteringHillClimbing.java @@ -14,6 +14,7 @@ import eva2.optimization.problems.F1Problem; import eva2.optimization.problems.InterfaceAdditionalPopulationInformer; import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.tools.Pair; +import eva2.util.annotation.Description; import java.io.Serializable; @@ -32,8 +33,9 @@ import java.io.Serializable; * number of optima that may be found and returned by getAllSolutions is higher * than the population size. * - * @author mkron */ +@Description("Similar to multi-start HC, but clusters the population during optimization to remove redundant individuals for efficiency." + + "If the local search step does not achieve a minimum improvement, the population may be reinitialized.") public class ClusteringHillClimbing implements InterfacePopulationChangedEventListener, InterfaceOptimizer, Serializable, InterfaceAdditionalPopulationInformer { @@ -331,11 +333,6 @@ public class ClusteringHillClimbing implements InterfacePopulationChangedEventLi return "ClustHC-" + initialPopSize + "-" + localSearchMethod; } - public static String globalInfo() { - return "Similar to multi-start HC, but clusters the population during optimization to remove redundant individuals for efficiency." - + "If the local search step does not achieve a minimum improvement, the population may be reinitialized."; - } - /** * @return the hcEvalCycle */ diff --git a/src/eva2/optimization/strategies/DynamicParticleSwarmOptimization.java b/src/eva2/optimization/strategies/DynamicParticleSwarmOptimization.java index 831eb83b..908bfe75 100644 --- a/src/eva2/optimization/strategies/DynamicParticleSwarmOptimization.java +++ b/src/eva2/optimization/strategies/DynamicParticleSwarmOptimization.java @@ -10,14 +10,12 @@ import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.tools.SelectedTag; import eva2.tools.math.Mathematics; import eva2.tools.math.RNG; +import eva2.util.annotation.Description; /** * This extends our particle swarm implementation to dynamic optimization problems. - *

- * User: marcekro - * Date: 2007 - * Time: 11:23:21 */ +@Description("Particle Swarm Optimization tuned for tracking a dynamic target") public class DynamicParticleSwarmOptimization extends ParticleSwarmOptimization { private boolean envHasChanged = false; @@ -507,19 +505,6 @@ public class DynamicParticleSwarmOptimization extends ParticleSwarmOptimization return strB.toString(); } - -/********************************************************************************************************************** - * These are for GUI - */ - /** - * This method returns a global info string - * - * @return description - */ - public static String globalInfo() { - return "Particle Swarm Optimization tuned for tracking a dynamic target"; - } - /** * This method will return a naming String * diff --git a/src/eva2/optimization/strategies/EsDpiNiching.java b/src/eva2/optimization/strategies/EsDpiNiching.java index 9ad7169e..16210411 100644 --- a/src/eva2/optimization/strategies/EsDpiNiching.java +++ b/src/eva2/optimization/strategies/EsDpiNiching.java @@ -24,6 +24,7 @@ import eva2.optimization.problems.InterfaceAdditionalPopulationInformer; import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.tools.math.Mathematics; import eva2.tools.math.RNG; +import eva2.util.annotation.Description; import java.io.Serializable; import java.util.Arrays; @@ -84,9 +85,10 @@ import java.util.Formatter; *

* TODO Add adaptive niche radius. Add parameter to every indy which is adapted * after all new peaks have been found. - * - * @author mkron */ +@Description("A niching ES with dynamic peak identification, after Shir and Bäck: Niching in Evolution Strategies, " + + "GECCO 2005. Basically, there are several variants of a (mu,lambda)-ES performed " + + "in parallel, which are reclustered in each iteration based on the dynamic peak set.") public class EsDpiNiching implements InterfaceOptimizer, Serializable, InterfaceAdditionalPopulationInformer, InterfacePopulationChangedEventListener { private static final boolean TRACE = false, TRACE_DEMES = false; @@ -1019,12 +1021,6 @@ public class EsDpiNiching implements InterfaceOptimizer, Serializable, Interface return identifier + "_" + getExpectedPeaks() + "_" + getNicheRadius(); } - public static String globalInfo() { - return "A niching ES with dynamic peak identification, after Shir and Bäck: Niching in Evolution Strategies, " - + "GECCO 2005. Basically, there are several variants of a (mu,lambda)-ES performed " - + "in parallel, which are reclustered in each iteration based on the dynamic peak set."; - } - @Override public void addPopulationChangedEventListener( InterfacePopulationChangedEventListener ea) { diff --git a/src/eva2/optimization/strategies/EsDpiNichingCma.java b/src/eva2/optimization/strategies/EsDpiNichingCma.java index aaf4306b..59023c50 100644 --- a/src/eva2/optimization/strategies/EsDpiNichingCma.java +++ b/src/eva2/optimization/strategies/EsDpiNichingCma.java @@ -1,7 +1,10 @@ package eva2.optimization.strategies; import eva2.optimization.operator.selection.SelectBestSingle; +import eva2.util.annotation.Description; +@Description("A variant of the DPI Niching ES to be usable with CMA-Mutation (Shir&Bäck, CEC'05). " + + "Remember to turn off crossover for lambda=1, and to set CMA as mutation in the individual template.") public class EsDpiNichingCma extends EsDpiNiching { /** @@ -39,9 +42,4 @@ public class EsDpiNichingCma extends EsDpiNiching { public String getName() { return "CMA-" + super.getName(); } - - public static String globalInfo() { - return "A variant of the DPI Niching ES to be usable with CMA-Mutation (Shir&Bäck, CEC'05). " + - "Remember to turn off crossover for lambda=1, and to set CMA as mutation in the individual template."; - } } diff --git a/src/eva2/optimization/strategies/EvolutionStrategyIPOP.java b/src/eva2/optimization/strategies/EvolutionStrategyIPOP.java index 9fdfda76..5d51b205 100644 --- a/src/eva2/optimization/strategies/EvolutionStrategyIPOP.java +++ b/src/eva2/optimization/strategies/EvolutionStrategyIPOP.java @@ -13,6 +13,7 @@ import eva2.optimization.population.Population; import eva2.optimization.population.PopulationInterface; import eva2.optimization.population.SolutionSet; import eva2.optimization.problems.InterfaceAdditionalPopulationInformer; +import eva2.util.annotation.Description; import java.util.Arrays; import java.util.LinkedList; @@ -32,9 +33,8 @@ import java.util.LinkedList; * Refer to Auger&Hansen 05 for more details. *

* A.Auger & N.Hansen. A Restart CMA Evolution Strategy With Increasing Population Size. CEC 2005. - * - * @author mkron */ +@Description("An ES with increasing population size.") public class EvolutionStrategyIPOP extends EvolutionStrategies implements InterfacePopulationChangedEventListener, InterfaceAdditionalPopulationInformer { private static final long serialVersionUID = 4102736881931867818L; int dim = -1; @@ -270,11 +270,7 @@ public class EvolutionStrategyIPOP extends EvolutionStrategies implements Interf public String getName() { return getIncPopSizeFact() + "-IPOP-ES"; } - - public static String globalInfo() { - return "An ES with increasing population size."; - } -// +// // protected void checkPopulationConstraints() { // if (getLambda()!=initialLambda) setLambda(initialLambda); // if (getMu()>getLambda()) System.err.println("Invalid mu/lambda ratio!"); diff --git a/src/eva2/optimization/strategies/EvolutionaryProgramming.java b/src/eva2/optimization/strategies/EvolutionaryProgramming.java index 85cfedff..55f2a839 100644 --- a/src/eva2/optimization/strategies/EvolutionaryProgramming.java +++ b/src/eva2/optimization/strategies/EvolutionaryProgramming.java @@ -9,20 +9,15 @@ import eva2.optimization.population.Population; import eva2.optimization.population.SolutionSet; import eva2.optimization.problems.F1Problem; import eva2.optimization.problems.InterfaceOptimizationProblem; +import eva2.util.annotation.Description; /** * Evolutionary programming by Fogel. Works fine but is actually a quite greedy * local search strategy solely based on mutation. To prevent any confusion, the * mutation rate is temporaily set to 1.0. Potential citation: the PhD thesis of * David B. Fogel (1992). - *

- * Copyright: Copyright (c) 2003 Company: University of Tuebingen, Computer - * Architecture - * - * @author Felix Streichert - * @version: $Revision: 307 $ $Date: 2007-12-04 14:31:47 +0100 (Tue, 04 Dec - * 2007) $ $Author: mkron $ */ +@Description("This is a basic Evolutionary Programming scheme.") public class EvolutionaryProgramming implements InterfaceOptimizer, java.io.Serializable { private int m_PopulationSize = 0; @@ -192,19 +187,6 @@ public class EvolutionaryProgramming implements InterfaceOptimizer, java.io.Seri return this.m_Identifier; } - /** - * ******************************************************************************************************************** - * These are for GUI - */ - /** - * This method returns a global info string - * - * @return description - */ - public static String globalInfo() { - return "This is a basic Evolutionary Programming scheme."; - } - /** * This method will return a naming String * diff --git a/src/eva2/optimization/strategies/FloodAlgorithm.java b/src/eva2/optimization/strategies/FloodAlgorithm.java index 8bfaa5fb..fb22526b 100644 --- a/src/eva2/optimization/strategies/FloodAlgorithm.java +++ b/src/eva2/optimization/strategies/FloodAlgorithm.java @@ -8,6 +8,7 @@ import eva2.optimization.population.Population; import eva2.optimization.population.SolutionSet; import eva2.optimization.problems.B1Problem; import eva2.optimization.problems.InterfaceOptimizationProblem; +import eva2.util.annotation.Description; /** * The flood algorithm, and alternative to the threshold algorithms. No really @@ -16,10 +17,9 @@ import eva2.optimization.problems.InterfaceOptimizationProblem; * current optimization problem. But again this is a greedy local search * strategy. Similar to the evolutionary programming strategy this strategy sets * the mutation rate temporarily to 1.0. The algorithm regards only - * one-dimensional fitness. Created by IntelliJ IDEA. User: streiche Date: - * 01.10.2004 Time: 13:46:02 To change this template use File | Settings | File - * Templates. + * one-dimensional fitness. */ +@Description("The flood algorithm uses an declining flood peak to accpect new solutions (*shudder* check inital flood peak and drain very carefully!).") public class FloodAlgorithm implements InterfaceOptimizer, java.io.Serializable { // These variables are necessary for the simple testcase @@ -250,19 +250,6 @@ public class FloodAlgorithm implements InterfaceOptimizer, java.io.Serializable return this.m_Identifier; } - /** - * ******************************************************************************************************************** - * These are for GUI - */ - /** - * This method returns a global info string - * - * @return description - */ - public static String globalInfo() { - return "The flood algorithm uses an declining flood peak to accpect new solutions (*shudder* check inital flood peak and drain very carefully!)."; - } - /** * This method will return a naming String * diff --git a/src/eva2/optimization/strategies/GradientDescentAlgorithm.java b/src/eva2/optimization/strategies/GradientDescentAlgorithm.java index 3f5941ed..73076d48 100644 --- a/src/eva2/optimization/strategies/GradientDescentAlgorithm.java +++ b/src/eva2/optimization/strategies/GradientDescentAlgorithm.java @@ -12,6 +12,7 @@ import eva2.optimization.problems.InterfaceFirstOrderDerivableProblem; import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.tools.EVAERROR; import eva2.tools.ReflectPackage; +import eva2.util.annotation.Description; /** * A gradient descent algorithm by hannes planatscher don't expect any @@ -19,9 +20,8 @@ import eva2.tools.ReflectPackage; *

* mkron added some! * - * @author not attributable - * @version 1.0 */ +@Description("Gradient Descent can be applied to derivable functions (InterfaceFirstOrderDerivableProblem).") public class GradientDescentAlgorithm implements InterfaceOptimizer, java.io.Serializable { private InterfaceOptimizationProblem m_Problem; @@ -399,9 +399,6 @@ public class GradientDescentAlgorithm implements InterfaceOptimizer, java.io.Ser } } - public static String globalInfo() { - return "Gradient Descent can be applied to derivable functions (" + InterfaceFirstOrderDerivableProblem.class.getSimpleName() + ")."; - } //////////////// for global adaption public boolean isAdaptStepSizeGlobally() { diff --git a/src/eva2/optimization/strategies/IslandModelEA.java b/src/eva2/optimization/strategies/IslandModelEA.java index 10ef7b34..dd74751a 100644 --- a/src/eva2/optimization/strategies/IslandModelEA.java +++ b/src/eva2/optimization/strategies/IslandModelEA.java @@ -12,6 +12,7 @@ import eva2.optimization.problems.F1Problem; import eva2.optimization.problems.F8Problem; import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.optimization.problems.TF1Problem; +import eva2.util.annotation.Description; /** * The one and only island model for parallelization. Since parallelization @@ -29,10 +30,8 @@ import eva2.optimization.problems.TF1Problem; * after which a communication step is performed according to the migration * model. Only after migration is a main cycle complete, the statistics updated * etc. - *

- * Created by IntelliJ IDEA. User: streiche Date: 12.09.2004 Time: 14:48:20 To - * change this template use File | Settings | File Templates. */ +@Description("This is an island model EA distributing the individuals across several (remote) CPUs for optimization.") public class IslandModelEA implements InterfacePopulationChangedEventListener, InterfaceOptimizer, java.io.Serializable { private Population m_Population = new Population(); @@ -475,18 +474,6 @@ public class IslandModelEA implements InterfacePopulationChangedEventListener, I //System.out.println(sourceID + " is at generation "+ opt.getPopulation().getGeneration() +" i'm at " +this.m_Generation); } - /** - * ******************************************************************************************************************** - * These are for GUI - */ - /** - * This method returns a global info string - * - * @return description - */ - public static String globalInfo() { - return "This is an island model EA distributing the individuals across several (remote) CPUs for optimization."; - } /** * This method will return a naming String diff --git a/src/eva2/optimization/strategies/LTGA.java b/src/eva2/optimization/strategies/LTGA.java index 6f29ad1e..b688c031 100644 --- a/src/eva2/optimization/strategies/LTGA.java +++ b/src/eva2/optimization/strategies/LTGA.java @@ -13,6 +13,7 @@ import eva2.optimization.problems.BKnapsackProblem; import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.tools.Pair; import eva2.tools.math.SpecialFunction; +import eva2.util.annotation.Description; import java.util.BitSet; import java.util.HashSet; @@ -21,10 +22,11 @@ import java.util.Stack; import java.util.logging.Level; import java.util.logging.Logger; +@Description("Basic implementation of the Linkage Tree Genetic Algorithm based on the works by Dirk Thierens.") public class LTGA implements InterfaceOptimizer, java.io.Serializable, InterfacePopulationChangedEventListener { private static final Logger LOGGER = Logger.getLogger(LTGA.class.getName()); - transient private InterfacePopulationChangedEventListener m_Listener = null; + transient private InterfacePopulationChangedEventListener populationChangedEventListener = null; private String m_Identifier = "LTGA"; private int probDim = 8; private int fitCrit = -1; @@ -39,7 +41,7 @@ public class LTGA implements InterfaceOptimizer, java.io.Serializable, Interface } public LTGA(LTGA l) { - this.m_Listener = l.m_Listener; + this.populationChangedEventListener = l.populationChangedEventListener; this.m_Identifier = l.m_Identifier; this.probDim = l.probDim; this.popSize = l.popSize; @@ -58,22 +60,18 @@ public class LTGA implements InterfaceOptimizer, java.io.Serializable, Interface return "Linkage Tree Genetic Algorithm"; } - public static String globalInfo() { - return "Basic implementation of the Linkage Tree Genetic Algorithm based on the works by Dirk Thierens."; - } - @Override public void addPopulationChangedEventListener( InterfacePopulationChangedEventListener ea) { - this.m_Listener = ea; + this.populationChangedEventListener = ea; } @Override public boolean removePopulationChangedEventListener( InterfacePopulationChangedEventListener ea) { - if (m_Listener == ea) { - m_Listener = null; + if (populationChangedEventListener == ea) { + populationChangedEventListener = null; return true; } else { return false; @@ -308,8 +306,8 @@ public class LTGA implements InterfaceOptimizer, java.io.Serializable, Interface * Something has changed */ protected void firePropertyChangedEvent(String name) { - if (this.m_Listener != null) { - this.m_Listener.registerPopulationStateChanged(this, name); + if (this.populationChangedEventListener != null) { + this.populationChangedEventListener.registerPopulationStateChanged(this, name); } } diff --git a/src/eva2/optimization/strategies/MemeticAlgorithm.java b/src/eva2/optimization/strategies/MemeticAlgorithm.java index 17a68442..397c2afa 100644 --- a/src/eva2/optimization/strategies/MemeticAlgorithm.java +++ b/src/eva2/optimization/strategies/MemeticAlgorithm.java @@ -10,18 +10,20 @@ import eva2.optimization.population.SolutionSet; import eva2.optimization.problems.F1Problem; import eva2.optimization.problems.InterfaceLocalSearchable; import eva2.optimization.problems.InterfaceOptimizationProblem; +import eva2.util.annotation.Description; import java.util.Hashtable; /** * A memetic algorithm by hannes planatscher. The local search strategy can only * be applied to problems which implement the InterfaceLocalSearchable else the - * local search will not be activated at all.

Title: EvA2

- * Description:

Copyright: Copyright (c) 2003

Company:

+ * local search will not be activated at all. * - * @author not attributable * @version 1.0 */ +@Description("This is a basic generational Memetic Algorithm. Local search steps are performed on a selected subset " + + "of individuals after certain numbers of global search iterations. Note " + + "that the problem class must implement InterfaceLocalSearchable.") public class MemeticAlgorithm implements InterfaceOptimizer, java.io.Serializable { @@ -259,22 +261,6 @@ public class MemeticAlgorithm implements InterfaceOptimizer, } - /* - * ======================================================================================== - * These are for GUI - */ - - /** - * This method returns a global info string - * - * @return description - */ - public static String globalInfo() { - return "This is a basic generational Memetic Algorithm. Local search steps are performed on a selected subset " - + "of individuals after certain numbers of global search iterations. Note " - + "that the problem class must implement InterfaceLocalSearchable."; - } - /** * This method will return a naming String * diff --git a/src/eva2/optimization/strategies/MultiObjectiveCMAES.java b/src/eva2/optimization/strategies/MultiObjectiveCMAES.java index 0d58a1ad..32e1f372 100644 --- a/src/eva2/optimization/strategies/MultiObjectiveCMAES.java +++ b/src/eva2/optimization/strategies/MultiObjectiveCMAES.java @@ -11,13 +11,15 @@ import eva2.optimization.population.Population; import eva2.optimization.population.SolutionSet; import eva2.optimization.problems.AbstractOptimizationProblem; import eva2.optimization.problems.InterfaceOptimizationProblem; +import eva2.util.annotation.Description; import java.io.Serializable; import java.util.HashMap; /** - * @author mkron + * ToDo: Document */ +@Description("A multi-objective CMA-ES variant after Igel, Hansen and Roth 2007 (EC 15(1),1-28).") public class MultiObjectiveCMAES implements InterfaceOptimizer, Serializable { /** @@ -131,10 +133,6 @@ public class MultiObjectiveCMAES implements InterfaceOptimizer, Serializable { return "(1+" + m_lambda + ") MO-CMA-ES"; } - public static String globalInfo() { - return "A multi-objective CMA-ES variant after Igel, Hansen and Roth 2007 (EC 15(1),1-28)."; - } - /* * (non-Javadoc) * diff --git a/src/eva2/optimization/strategies/MultiObjectiveEA.java b/src/eva2/optimization/strategies/MultiObjectiveEA.java index 85ac6051..e42a7c4f 100644 --- a/src/eva2/optimization/strategies/MultiObjectiveEA.java +++ b/src/eva2/optimization/strategies/MultiObjectiveEA.java @@ -14,6 +14,7 @@ import eva2.optimization.population.SolutionSet; import eva2.optimization.problems.AbstractOptimizationProblem; import eva2.optimization.problems.FM0Problem; import eva2.optimization.problems.InterfaceOptimizationProblem; +import eva2.util.annotation.Description; /** * A generic framework for multi-objecitve optimization, you need to specify an @@ -24,10 +25,9 @@ import eva2.optimization.problems.InterfaceOptimizationProblem; * optimizer instead of this MOEA, such an optimizer would randomly toggle * between the objective for each selection and thus explore at least the * extreme points of the objective space, but simpler methods like random search - * or hill-climbing might even fail on that. Created by IntelliJ IDEA. User: - * streiche Date: 05.06.2003 Time: 11:03:50 To change this template use Options - * | File Templates. + * or hill-climbing might even fail on that. */ +@Description("This is a general Multi-objective Evolutionary Optimization Framework.") public class MultiObjectiveEA implements InterfaceOptimizer, java.io.Serializable { private InterfaceOptimizer m_Optimizer = new GeneticAlgorithm(); @@ -230,19 +230,6 @@ public class MultiObjectiveEA implements InterfaceOptimizer, java.io.Serializabl return this.m_Identifier; } - /** - * ******************************************************************************************************************** - * These are for GUI - */ - /** - * This method returns a global info string - * - * @return description - */ - public static String globalInfo() { - return "This is a general Multi-objective Evolutionary Optimization Framework."; - } - /** * This method will return a naming String * diff --git a/src/eva2/optimization/strategies/NelderMeadSimplex.java b/src/eva2/optimization/strategies/NelderMeadSimplex.java index 48f28461..3ae77d9a 100644 --- a/src/eva2/optimization/strategies/NelderMeadSimplex.java +++ b/src/eva2/optimization/strategies/NelderMeadSimplex.java @@ -11,6 +11,7 @@ import eva2.optimization.problems.AbstractOptimizationProblem; import eva2.optimization.problems.AbstractProblemDouble; import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.tools.math.Mathematics; +import eva2.util.annotation.Description; import java.io.Serializable; import java.util.Vector; @@ -19,9 +20,8 @@ import java.util.Vector; * Nelder-Mead-Simplex does not guarantee an equal number of evaluations within * each optimize call because of the different step types. Range check is now * available by projection at the bounds. - * - * @author mkron */ +@Description("The Nelder-Mead simplex search algorithm for local search. Reflection on bounds may be used for constraint handling.") public class NelderMeadSimplex implements InterfaceOptimizer, Serializable, InterfacePopulationChangedEventListener { private int populationSize = 100; @@ -231,10 +231,6 @@ public class NelderMeadSimplex implements InterfaceOptimizer, Serializable, Inte return m_Identifier; } - public static String globalInfo() { - return "The Nelder-Mead simplex search algorithm for local search. Reflection on bounds may be used for constraint handling."; - } - @Override public Population getPopulation() { return m_Population; diff --git a/src/eva2/optimization/strategies/ParticleFilterOptimization.java b/src/eva2/optimization/strategies/ParticleFilterOptimization.java index 9eebc8a6..eb12b1fc 100644 --- a/src/eva2/optimization/strategies/ParticleFilterOptimization.java +++ b/src/eva2/optimization/strategies/ParticleFilterOptimization.java @@ -17,20 +17,15 @@ import eva2.optimization.population.SolutionSet; import eva2.optimization.problems.AbstractOptimizationProblem; import eva2.optimization.problems.F1Problem; import eva2.optimization.problems.InterfaceOptimizationProblem; +import eva2.util.annotation.Description; /** * This is a Particle Filter implemented by Frank Senke, only some documentation * here and not completely checked whether this works on arbitrary problem * instances. MK did some adaptations, this should work on real valued problems * now. - *

- * This is a implementation of Genetic Algorithms. Copyright: Copyright (c) 2003 - * Company: University of Tuebingen, Computer Architecture - * - * @author Felix Streichert - * @version: $Revision: 307 $ $Date: 2007-12-04 14:31:47 +0100 (Tue, 04 Dec - * 2007) $ $Author: mkron $ */ +@Description("This is a Particle Filter Algorithm.") public class ParticleFilterOptimization implements InterfaceOptimizer, java.io.Serializable { /** @@ -41,7 +36,6 @@ public class ParticleFilterOptimization implements InterfaceOptimizer, java.io.S private Population m_Population = new Population(); private InterfaceOptimizationProblem m_Problem = new F1Problem(); private InterfaceSelection m_ParentSelection = new SelectParticleWheel(0.5); - //private boolean m_UseElitism = true; private String m_Identifier = ""; private boolean withShow = false; private double mutationSigma = 0.01; @@ -341,19 +335,6 @@ public class ParticleFilterOptimization implements InterfaceOptimizer, java.io.S return this.m_Identifier; } - /** - * ******************************************************************************************************************** - * These are for GUI - */ - /** - * This method returns a global info string - * - * @return description - */ - public static String globalInfo() { - return "This is a Particle Filter Algorithm."; - } - /** * This method will return a naming String * diff --git a/src/eva2/optimization/strategies/ParticleSwarmOptimization.java b/src/eva2/optimization/strategies/ParticleSwarmOptimization.java index b080522f..deb3c9c5 100644 --- a/src/eva2/optimization/strategies/ParticleSwarmOptimization.java +++ b/src/eva2/optimization/strategies/ParticleSwarmOptimization.java @@ -23,6 +23,7 @@ import eva2.tools.chart2d.DPointSet; import eva2.tools.math.Jama.Matrix; import eva2.tools.math.Mathematics; import eva2.tools.math.RNG; +import eva2.util.annotation.Description; import java.util.ArrayList; import java.util.Arrays; @@ -38,6 +39,7 @@ import java.util.Vector; * Possible topologies are: "Linear", "Grid", "Star", "Multi-Swarm", "Tree", * "HPSO", "Random" in that order starting by 0. */ +@Description("Particle Swarm Optimization by Kennedy and Eberhart.") public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Serializable, InterfaceAdditionalPopulationInformer { /** @@ -1725,19 +1727,6 @@ public class ParticleSwarmOptimization implements InterfaceOptimizer, java.io.Se return this.m_Identifier; } - /** - * ******************************************************************************************************************** - * These are for GUI - */ - /** - * This method returns a global info string - * - * @return description - */ - public static String globalInfo() { - return "Particle Swarm Optimization by Kennedy and Eberhart."; - } - /** * This method will return a naming String * diff --git a/src/eva2/optimization/strategies/ParticleSwarmOptimizationGCPSO.java b/src/eva2/optimization/strategies/ParticleSwarmOptimizationGCPSO.java index 667d9239..b435a63c 100644 --- a/src/eva2/optimization/strategies/ParticleSwarmOptimizationGCPSO.java +++ b/src/eva2/optimization/strategies/ParticleSwarmOptimizationGCPSO.java @@ -2,6 +2,7 @@ package eva2.optimization.strategies; import eva2.optimization.individuals.AbstractEAIndividual; import eva2.tools.math.RNG; +import eva2.util.annotation.Description; /** * This extends the particle swarm optimization implementation @@ -9,6 +10,7 @@ import eva2.tools.math.RNG; * Franz van den Bergh in "An Analysis of Particle Swarm Optimizers". * In this modification the velocity of the global best particle is updated differently. */ +@Description("Guaranteed Convergence Particle Swarm Optimiser (GCPSO) as proposed by F. van den Bergh.") public class ParticleSwarmOptimizationGCPSO extends ParticleSwarmOptimization { // choosable parameters: protected boolean gcpso; @@ -71,16 +73,6 @@ public class ParticleSwarmOptimizationGCPSO extends ParticleSwarmOptimization { this.SetRhoDecreaseFactor(a.getRhoDecreaseFactor()); } - /** - * This method returns a global info string - * - * @return description - */ - public static String globalInfo() { - return "Guaranteed Convergence Particle Swarm Optimiser (GCPSO) " + - "as proposed by F. van den Bergh."; - } - /********************************************************************************************************************** * overwritten */ diff --git a/src/eva2/optimization/strategies/PopulationBasedIncrementalLearning.java b/src/eva2/optimization/strategies/PopulationBasedIncrementalLearning.java index 0a077d5a..ec83f752 100644 --- a/src/eva2/optimization/strategies/PopulationBasedIncrementalLearning.java +++ b/src/eva2/optimization/strategies/PopulationBasedIncrementalLearning.java @@ -12,6 +12,7 @@ import eva2.optimization.population.SolutionSet; import eva2.optimization.problems.AbstractOptimizationProblem; import eva2.optimization.problems.B1Problem; import eva2.optimization.problems.InterfaceOptimizationProblem; +import eva2.util.annotation.Description; /** * Population based incremental learning in the PSM by Monmarche version with @@ -22,14 +23,8 @@ import eva2.optimization.problems.InterfaceOptimizationProblem; * Nicolas Monmarché , Eric Ramat , Guillaume Dromel , Mohamed Slimane , Gilles * Venturini: On the similarities between AS, BSC and PBIL: toward the birth of * a new meta-heuristic. TecReport 215. Univ. de Tours, 1999. - *

- * Copyright: Copyright (c) 2003 Company: University of Tuebingen, Computer - * Architecture - * - * @author Felix Streichert - * @version: $Revision: 307 $ $Date: 2007-12-04 14:31:47 +0100 (Tue, 04 Dec - * 2007) $ $Author: mkron $ */ +@Description("The Population based incremental learning is based on a statistical distribution of bit positions. Please note: This optimizer requires a binary genotype!") public class PopulationBasedIncrementalLearning implements InterfaceOptimizer, java.io.Serializable { // These variables are necessary for the simple testcase @@ -221,19 +216,6 @@ public class PopulationBasedIncrementalLearning implements InterfaceOptimizer, j return this.m_Identifier; } - /** - * ******************************************************************************************************************** - * These are for GUI - */ - /** - * This method returns a global info string - * - * @return description - */ - public static String globalInfo() { - return "The Population based incremental learning is based on a statistical distribution of bit positions. Please note: This optimizer requires a binary genotype!"; - } - /** * This method will return a naming String * diff --git a/src/eva2/optimization/strategies/SimulatedAnnealing.java b/src/eva2/optimization/strategies/SimulatedAnnealing.java index 2d0f6de3..57397166 100644 --- a/src/eva2/optimization/strategies/SimulatedAnnealing.java +++ b/src/eva2/optimization/strategies/SimulatedAnnealing.java @@ -9,15 +9,15 @@ import eva2.optimization.population.SolutionSet; import eva2.optimization.problems.B1Problem; import eva2.optimization.problems.InterfaceOptimizationProblem; import eva2.tools.math.RNG; +import eva2.util.annotation.Description; /** * Simulated Annealing by Nelder and Mead, a simple yet efficient local search * method. But to become less prone to premature convergence the cooling rate * has to be tuned to the optimization problem at hand. Again the population - * size gives the number of multi-starts. Created by IntelliJ IDEA. User: - * streiche Date: 13.05.2004 Time: 10:30:26 To change this template use File | - * Settings | File Templates. + * size gives the number of multi-starts. */ +@Description("The simulated annealing uses an additional cooling rate instead of a simple dominate criteria to accept worse solutions by chance.") public class SimulatedAnnealing implements InterfaceOptimizer, java.io.Serializable { // These variables are necessary for the simple testcase @@ -248,18 +248,6 @@ public class SimulatedAnnealing implements InterfaceOptimizer, java.io.Serializa return this.m_Identifier; } - /** - * ******************************************************************************************************************** - * These are for GUI - */ - /** - * This method returns a global info string - * - * @return description - */ - public static String globalInfo() { - return "The simulated annealing uses an additional cooling rate instead of a simple dominate criteria to accpect worse solutions by chance."; - } /** * This method will return a naming String diff --git a/src/eva2/optimization/strategies/SteadyStateGA.java b/src/eva2/optimization/strategies/SteadyStateGA.java index 6d4aacd0..f115af05 100644 --- a/src/eva2/optimization/strategies/SteadyStateGA.java +++ b/src/eva2/optimization/strategies/SteadyStateGA.java @@ -12,14 +12,14 @@ import eva2.optimization.population.Population; import eva2.optimization.population.SolutionSet; import eva2.optimization.problems.B1Problem; import eva2.optimization.problems.InterfaceOptimizationProblem; +import eva2.util.annotation.Description; /** * A simple implementation of the steady-state GA with variable replacement * schemes. To reduce the logging effort population.size() optimization steps - * are performed each time optimize() is called. Created by IntelliJ IDEA. User: - * streiche Date: 19.07.2005 Time: 14:30:20 To change this template use File | - * Settings | File Templates. + * are performed each time optimize() is called. */ +@Description("This is a Steady-State Genetic Algorithm.") public class SteadyStateGA implements InterfaceOptimizer, java.io.Serializable { private Population population = new Population(); @@ -191,19 +191,6 @@ public class SteadyStateGA implements InterfaceOptimizer, java.io.Serializable { return this.identifier; } - /** - * ******************************************************************************************************************** - * These are for GUI - */ - /** - * This method returns a global info string - * - * @return description - */ - public static String globalInfo() { - return "This is a Steady-State Genetic Algorithm."; - } - /** * This method will return a naming String * diff --git a/src/eva2/optimization/strategies/ThresholdAlgorithm.java b/src/eva2/optimization/strategies/ThresholdAlgorithm.java index 87e0d641..745fdd4d 100644 --- a/src/eva2/optimization/strategies/ThresholdAlgorithm.java +++ b/src/eva2/optimization/strategies/ThresholdAlgorithm.java @@ -8,12 +8,13 @@ import eva2.optimization.population.Population; import eva2.optimization.population.SolutionSet; import eva2.optimization.problems.B1Problem; import eva2.optimization.problems.InterfaceOptimizationProblem; +import eva2.util.annotation.Description; /** * Threshold accepting algorithm simliar strategy as the flood algorithm, - * similar problems. Created by IntelliJ IDEA. User: streiche Date: 01.10.2004 - * Time: 13:35:49 To change this template use File | Settings | File Templates. + * similar problems. */ +@Description("The threshold algorithm uses an declining threshold to accpect new solutions.") public class ThresholdAlgorithm implements InterfaceOptimizer, java.io.Serializable { // These variables are necessary for the simple testcase @@ -238,19 +239,6 @@ public class ThresholdAlgorithm implements InterfaceOptimizer, java.io.Serializa return this.m_Identifier; } - /** - * ******************************************************************************************************************** - * These are for GUI - */ - /** - * This method returns a global info string - * - * @return description - */ - public static String globalInfo() { - return "The threshold algorithm uses an declining threshold to accpect new solutions."; - } - /** * This method will return a naming String * diff --git a/src/eva2/optimization/strategies/Tribes.java b/src/eva2/optimization/strategies/Tribes.java index e82a5f52..b932e960 100644 --- a/src/eva2/optimization/strategies/Tribes.java +++ b/src/eva2/optimization/strategies/Tribes.java @@ -15,6 +15,7 @@ import eva2.optimization.strategies.tribes.TribesExplorer; import eva2.optimization.strategies.tribes.TribesParam; import eva2.optimization.strategies.tribes.TribesPosition; import eva2.optimization.strategies.tribes.TribesSwarm; +import eva2.util.annotation.Description; import java.util.Iterator; import java.util.List; @@ -130,6 +131,7 @@ import java.util.List; 2005-11-21. Check if it is possible to easily find just the _value_ of the global minimum (not the position). "Chinese shadow" method? */ +@Description("TRIBES: a parameter free PSO implementation by Maurice Clerc.") public class Tribes implements InterfaceOptimizer, java.io.Serializable { public static final boolean TRACE = false; @@ -667,12 +669,10 @@ public class Tribes implements InterfaceOptimizer, java.io.Serializable { @Override public String getStringRepresentation() { - return globalInfo(); + // ToDo: Implement properly (was globalInfo) + return "Not implemented"; } - public static String globalInfo() { - return "TRIBES: a parameter free PSO implementation by Maurice Clerc."; - } public void incEvalCnt() { population.incrFunctionCalls(); diff --git a/src/eva2/optimization/strategies/WingedMultiObjectiveEA.java b/src/eva2/optimization/strategies/WingedMultiObjectiveEA.java index d94750e8..607659d7 100644 --- a/src/eva2/optimization/strategies/WingedMultiObjectiveEA.java +++ b/src/eva2/optimization/strategies/WingedMultiObjectiveEA.java @@ -10,6 +10,7 @@ import eva2.optimization.population.SolutionSet; import eva2.optimization.problems.AbstractMultiObjectiveOptimizationProblem; import eva2.optimization.problems.FM0Problem; import eva2.optimization.problems.InterfaceOptimizationProblem; +import eva2.util.annotation.Description; /** * The winged MOEA was a nice idea, which didn't really work out. Here a @@ -17,9 +18,8 @@ import eva2.optimization.problems.InterfaceOptimizationProblem; * just one objective. The idea was that these local optimizers would span the * search space and would allow the MOEA to converge faster. But in the end the * performance of this algorithm strongly depends on the optimization problem. - * Created by IntelliJ IDEA. User: streiche Date: 16.02.2005 Time: 16:34:22 To - * change this template use File | Settings | File Templates. */ +@Description("This is Evolutionary Multi-Criteria Optimization Algorithm hybridized with Local Searchers to span the Pareto-Front.") public class WingedMultiObjectiveEA implements InterfaceOptimizer, java.io.Serializable { private InterfaceOptimizer m_MOOptimizer = new MultiObjectiveEA(); @@ -28,7 +28,6 @@ public class WingedMultiObjectiveEA implements InterfaceOptimizer, java.io.Seria private Population m_Population = new Population(); private int m_MigrationRate = 5; private int m_OutputDimension = 2; - private int m_NumberOfLocalOptimizers = 2; private InterfaceOptimizationProblem m_Problem = new FM0Problem(); private String m_Identifier = ""; transient private InterfacePopulationChangedEventListener m_Listener; @@ -285,19 +284,6 @@ public class WingedMultiObjectiveEA implements InterfaceOptimizer, java.io.Seria return this.m_Identifier; } - /** - * ******************************************************************************************************************** - * These are for GUI - */ - /** - * This method returns a global info string - * - * @return description - */ - public static String globalInfo() { - return "This is Evolutionary Multi-Criteria Optimization Algorithm hybridized with Local Searchers to span the Pareto-Front."; - } - /** * This method will return a naming String *