From 89402e0b05d17bec2e64c6e0d123e8729d7ae7ee Mon Sep 17 00:00:00 2001 From: Fabian Becker Date: Sun, 2 Nov 2014 13:40:31 +0100 Subject: [PATCH] Hide several elements from the UI --- .../individuals/AbstractEAIndividual.java | 2 +- .../individuals/ESIndividualDoubleData.java | 13 ++-------- .../GAESIndividualBinaryDoubleData.java | 10 +++---- .../individuals/GAIndividualDoubleData.java | 15 +++-------- .../individuals/GAPIndividualProgramData.java | 10 +++---- ...IOBGAIndividualIntegerPermutationData.java | 10 +++---- .../operator/crossover/TestESCrossover.java | 4 +-- .../optimization/population/Population.java | 9 ++++--- src/eva2/optimization/strategies/ANPSO.java | 2 +- .../strategies/ArtificialBeeColony.java | 2 +- .../strategies/MultiObjectiveCMAES.java | 2 +- .../ParticleFilterOptimization.java | 2 +- .../ParticleSubSwarmOptimization.java | 2 +- .../strategies/tribes/TribesExplorer.java | 4 +-- .../tools/ImpactOfDimensionOnMOEAs.java | 2 +- .../AbstractMultiModalProblemKnown.java | 2 +- .../problems/AbstractOptimizationProblem.java | 2 +- src/eva2/problems/BKnapsackProblem.java | 2 +- src/eva2/problems/SimpleProblemWrapper.java | 26 ++++--------------- 19 files changed, 44 insertions(+), 77 deletions(-) diff --git a/src/eva2/optimization/individuals/AbstractEAIndividual.java b/src/eva2/optimization/individuals/AbstractEAIndividual.java index b7ad9005..5adea385 100644 --- a/src/eva2/optimization/individuals/AbstractEAIndividual.java +++ b/src/eva2/optimization/individuals/AbstractEAIndividual.java @@ -275,7 +275,7 @@ public abstract class AbstractEAIndividual implements IndividualInterface, java. * * @param opt The optimization problem that is to be solved. */ - public void init(InterfaceOptimizationProblem opt) { + public void initialize(InterfaceOptimizationProblem opt) { initializationOperator.initialize(this, opt); this.mutationOperator.initialize(this, opt); this.crossoverOperator.init(this, opt); diff --git a/src/eva2/optimization/individuals/ESIndividualDoubleData.java b/src/eva2/optimization/individuals/ESIndividualDoubleData.java index 56caa43c..c1d7aa3e 100644 --- a/src/eva2/optimization/individuals/ESIndividualDoubleData.java +++ b/src/eva2/optimization/individuals/ESIndividualDoubleData.java @@ -105,9 +105,6 @@ public class ESIndividualDoubleData extends AbstractEAIndividual implements Inte } } -/************************************************************************************ - * InterfaceDataTypeDouble methods - */ /** * This method allows you to request a certain amount of double data * @@ -235,17 +232,14 @@ public class ESIndividualDoubleData extends AbstractEAIndividual implements Inte System.arraycopy(doubleData, 0, this.genotype, 0, doubleData.length); } -/************************************************************************************ - * AbstractEAIndividual methods - */ /** * This method will allow a default initialisation of the individual * * @param opt The optimization problem that is to be solved. */ @Override - public void init(InterfaceOptimizationProblem opt) { - super.init(opt); + public void initialize(InterfaceOptimizationProblem opt) { + super.initialize(opt); // evil operators may not respect the range, so at least give some hint if (!Mathematics.isInRange(genotype, range)) { EVAERROR.errorMsgOnce("Warning: Individual out of range after initialization (and potential initial crossover/mutation)!"); @@ -304,9 +298,6 @@ public class ESIndividualDoubleData extends AbstractEAIndividual implements Inte return strB.toString(); } -/************************************************************************************ - * InterfaceESIndividual methods - */ /** * This method will allow the user to read the ES 'genotype' * diff --git a/src/eva2/optimization/individuals/GAESIndividualBinaryDoubleData.java b/src/eva2/optimization/individuals/GAESIndividualBinaryDoubleData.java index 721d6e50..37bcc469 100644 --- a/src/eva2/optimization/individuals/GAESIndividualBinaryDoubleData.java +++ b/src/eva2/optimization/individuals/GAESIndividualBinaryDoubleData.java @@ -76,9 +76,9 @@ public class GAESIndividualBinaryDoubleData extends AbstractEAIndividual impleme * @param opt The optimization problem that is to be solved. */ @Override - public void init(InterfaceOptimizationProblem opt) { - ((AbstractEAIndividual) this.doubleIndividual).init(opt); - ((AbstractEAIndividual) this.binaryIndividual).init(opt); + public void initialize(InterfaceOptimizationProblem opt) { + ((AbstractEAIndividual) this.doubleIndividual).initialize(opt); + ((AbstractEAIndividual) this.binaryIndividual).initialize(opt); } @Override @@ -105,8 +105,8 @@ public class GAESIndividualBinaryDoubleData extends AbstractEAIndividual impleme ((AbstractEAIndividual) this.binaryIndividual).initByValue(((Object[]) obj)[0], opt); } } else { - ((AbstractEAIndividual) this.doubleIndividual).init(opt); - ((AbstractEAIndividual) this.binaryIndividual).init(opt); + ((AbstractEAIndividual) this.doubleIndividual).initialize(opt); + ((AbstractEAIndividual) this.binaryIndividual).initialize(opt); System.out.println("Initial value for GAESIndividualDoubleData is not suitable!"); } } diff --git a/src/eva2/optimization/individuals/GAIndividualDoubleData.java b/src/eva2/optimization/individuals/GAIndividualDoubleData.java index 21770a5d..20682a31 100644 --- a/src/eva2/optimization/individuals/GAIndividualDoubleData.java +++ b/src/eva2/optimization/individuals/GAIndividualDoubleData.java @@ -10,6 +10,7 @@ import eva2.optimization.operator.mutation.MutateGAUniform; import eva2.problems.InterfaceOptimizationProblem; import eva2.tools.math.RNG; import eva2.util.annotation.Description; +import eva2.util.annotation.Parameter; import java.util.BitSet; @@ -229,10 +230,6 @@ public class GAIndividualDoubleData extends AbstractEAIndividual implements Inte } } -/************************************************************************************ - * AbstractEAIndividual methods - */ - /** * This method will initialize the individual with a given value for the * phenotype. @@ -373,6 +370,7 @@ public class GAIndividualDoubleData extends AbstractEAIndividual implements Inte * * @param coding The used genotype coding method */ + @Parameter(name = "coding", description = "Choose the coding to use.") public void setGACoding(InterfaceGADoubleCoding coding) { this.doubleCoding = coding; } @@ -381,16 +379,13 @@ public class GAIndividualDoubleData extends AbstractEAIndividual implements Inte return this.doubleCoding; } - public String gADoubleCodingTipText() { - return "Choose the coding to use."; - } - /** * This method allows you to set the number of mulitruns that are to be performed, * necessary for stochastic optimizers to ensure reliable results. * * @param precision The number of multiruns that are to be performed */ + @Parameter(description = "Gives the number of bits to be used to code a double.") public void setPrecision(int precision) { this.precision = precision; } @@ -398,8 +393,4 @@ public class GAIndividualDoubleData extends AbstractEAIndividual implements Inte public int getPrecision() { return this.precision; } - - public String precisionTipText() { - return "Gives the number of bits to be used to code a double."; - } } diff --git a/src/eva2/optimization/individuals/GAPIndividualProgramData.java b/src/eva2/optimization/individuals/GAPIndividualProgramData.java index c924e35d..72a47d5c 100644 --- a/src/eva2/optimization/individuals/GAPIndividualProgramData.java +++ b/src/eva2/optimization/individuals/GAPIndividualProgramData.java @@ -72,9 +72,9 @@ public class GAPIndividualProgramData extends AbstractEAIndividual implements In * @param opt The optimization problem that is to be solved. */ @Override - public void init(InterfaceOptimizationProblem opt) { - ((AbstractEAIndividual) this.numberData).init(opt); - ((AbstractEAIndividual) this.programData).init(opt); + public void initialize(InterfaceOptimizationProblem opt) { + ((AbstractEAIndividual) this.numberData).initialize(opt); + ((AbstractEAIndividual) this.programData).initialize(opt); } @Override @@ -101,8 +101,8 @@ public class GAPIndividualProgramData extends AbstractEAIndividual implements In ((AbstractEAIndividual) this.programData).initByValue(((Object[]) obj)[0], opt); } } else { - ((AbstractEAIndividual) this.numberData).init(opt); - ((AbstractEAIndividual) this.programData).init(opt); + ((AbstractEAIndividual) this.numberData).initialize(opt); + ((AbstractEAIndividual) this.programData).initialize(opt); System.out.println("Initial value for GAPIndividualDoubleData is not suitable!"); } } diff --git a/src/eva2/optimization/individuals/GIOBGAIndividualIntegerPermutationData.java b/src/eva2/optimization/individuals/GIOBGAIndividualIntegerPermutationData.java index 2dc12cdd..084fe372 100644 --- a/src/eva2/optimization/individuals/GIOBGAIndividualIntegerPermutationData.java +++ b/src/eva2/optimization/individuals/GIOBGAIndividualIntegerPermutationData.java @@ -72,9 +72,9 @@ public class GIOBGAIndividualIntegerPermutationData extends AbstractEAIndividual * @param opt The optimization problem that is to be solved. */ @Override - public void init(InterfaceOptimizationProblem opt) { - ((AbstractEAIndividual) this.integerData).init(opt); - ((AbstractEAIndividual) this.permutationData).init(opt); + public void initialize(InterfaceOptimizationProblem opt) { + ((AbstractEAIndividual) this.integerData).initialize(opt); + ((AbstractEAIndividual) this.permutationData).initialize(opt); } @Override @@ -101,8 +101,8 @@ public class GIOBGAIndividualIntegerPermutationData extends AbstractEAIndividual ((AbstractEAIndividual) this.permutationData).initByValue(((Object[]) obj)[0], opt); } } else { - ((AbstractEAIndividual) this.integerData).init(opt); - ((AbstractEAIndividual) this.permutationData).init(opt); + ((AbstractEAIndividual) this.integerData).initialize(opt); + ((AbstractEAIndividual) this.permutationData).initialize(opt); System.out.println("Initial value for GIOBGAIndividualIntegerPermutationData is not suitable!"); } } diff --git a/src/eva2/optimization/operator/crossover/TestESCrossover.java b/src/eva2/optimization/operator/crossover/TestESCrossover.java index b4ec62c8..65adef3a 100644 --- a/src/eva2/optimization/operator/crossover/TestESCrossover.java +++ b/src/eva2/optimization/operator/crossover/TestESCrossover.java @@ -110,12 +110,12 @@ public class TestESCrossover implements java.io.Serializable { tmpIndyD.setDoubleRange(newRange); for (int i = 0; i < partners.getTargetSize(); i++) { tmpIndyEA = (AbstractEAIndividual) ((AbstractEAIndividual) tmpIndyD).clone(); - tmpIndyEA.init(optimizationProblem); + tmpIndyEA.initialize(optimizationProblem); partners.add(tmpIndyEA); } partners.init(); daddy = (AbstractEAIndividual) ((AbstractEAIndividual) tmpIndyD).clone(); - daddy.init(optimizationProblem); + daddy.initialize(optimizationProblem); plot.clearAll(); plot.setUnconnectedPoint(-2, -2, 0); plot.setUnconnectedPoint(2, 2, 0); diff --git a/src/eva2/optimization/population/Population.java b/src/eva2/optimization/population/Population.java index 32f537ec..97462e20 100644 --- a/src/eva2/optimization/population/Population.java +++ b/src/eva2/optimization/population/Population.java @@ -15,6 +15,7 @@ import eva2.tools.math.Mathematics; import eva2.tools.math.RNG; import eva2.tools.math.StatisticUtils; import eva2.util.annotation.Description; +import eva2.util.annotation.Hidden; import eva2.util.annotation.Parameter; import java.util.*; @@ -602,6 +603,7 @@ public class Population extends ArrayList implements PopulationInterface, Clonea return historyList; } + @Hidden public void setHistory(LinkedList theHist) { historyList = theHist; } @@ -684,6 +686,7 @@ public class Population extends ArrayList implements PopulationInterface, Clonea * * @param d The new number of functioncalls. */ + @Hidden public void setFunctionCalls(int d) { this.functionCallCount = d; } @@ -738,6 +741,7 @@ public class Population extends ArrayList implements PopulationInterface, Clonea * * @param gen the value to set as new generation index */ + @Hidden public void setGeneration(int gen) { this.generationCount = gen; } @@ -2519,11 +2523,8 @@ public class Population extends ArrayList implements PopulationInterface, Clonea return seedCardinality; } + @Parameter(description = "The initial cardinality for binary genotype individuals, given as pair of mean and std.dev.") public void setSeedCardinality(Pair seedCardinality) { this.seedCardinality = seedCardinality; } - - public String seedCardinalityTipText() { - return "The initial cardinality for binary genotype individuals, given as pair of mean and std.dev."; - } } diff --git a/src/eva2/optimization/strategies/ANPSO.java b/src/eva2/optimization/strategies/ANPSO.java index 215ea2e6..9df2c4b7 100644 --- a/src/eva2/optimization/strategies/ANPSO.java +++ b/src/eva2/optimization/strategies/ANPSO.java @@ -541,7 +541,7 @@ public class ANPSO extends NichePSO implements InterfaceAdditionalPopulationInfo if (reinitSuperfl) { for (int i = 0; i < tmpPop.size(); i++) { AbstractEAIndividual indy = tmpPop.getEAIndividual(i); - indy.init(optimizationProblem); + indy.initialize(optimizationProblem); indy.resetFitness(Double.MAX_VALUE); // TODO this is not so nice... they should be collected in a reinit-list and inserted at the beginning of the next optimize step ParticleSwarmOptimization.initIndividualDefaults(indy, 0.2); ParticleSwarmOptimization.initIndividualMemory(indy); diff --git a/src/eva2/optimization/strategies/ArtificialBeeColony.java b/src/eva2/optimization/strategies/ArtificialBeeColony.java index 8191b8bd..beacd1d5 100644 --- a/src/eva2/optimization/strategies/ArtificialBeeColony.java +++ b/src/eva2/optimization/strategies/ArtificialBeeColony.java @@ -194,7 +194,7 @@ public class ArtificialBeeColony extends AbstractOptimizer implements Serializab */ AbstractEAIndividual oldestIndy = getOldestIndividual(); if (oldestIndy.getAge() > this.maxTrials) { - oldestIndy.init(this.optimizationProblem); + oldestIndy.initialize(this.optimizationProblem); this.optimizationProblem.evaluate(oldestIndy); this.population.incrFunctionCalls(); } diff --git a/src/eva2/optimization/strategies/MultiObjectiveCMAES.java b/src/eva2/optimization/strategies/MultiObjectiveCMAES.java index b5ab0ad2..38a42de8 100644 --- a/src/eva2/optimization/strategies/MultiObjectiveCMAES.java +++ b/src/eva2/optimization/strategies/MultiObjectiveCMAES.java @@ -100,7 +100,7 @@ public class MultiObjectiveCMAES extends AbstractOptimizer implements Serializab /* * (non-Javadoc) * - * @see eva2.optimization.strategies.InterfaceOptimizer#init() + * @see eva2.optimization.strategies.InterfaceOptimizer#initialize() */ @Override public void initialize() { diff --git a/src/eva2/optimization/strategies/ParticleFilterOptimization.java b/src/eva2/optimization/strategies/ParticleFilterOptimization.java index 379a536a..e780edf9 100644 --- a/src/eva2/optimization/strategies/ParticleFilterOptimization.java +++ b/src/eva2/optimization/strategies/ParticleFilterOptimization.java @@ -146,7 +146,7 @@ public class ParticleFilterOptimization extends AbstractOptimizer implements jav int i; for (i = 0; (i + parents.getTargetSize()) < pop.getTargetSize(); i++) { immi = (AbstractEAIndividual) pop.getEAIndividual(0).clone(); - immi.init(getProblem()); + immi.initialize(getProblem()); parents.add(immi); } parents.synchSize(); diff --git a/src/eva2/optimization/strategies/ParticleSubSwarmOptimization.java b/src/eva2/optimization/strategies/ParticleSubSwarmOptimization.java index b2996da3..2f7183c0 100644 --- a/src/eva2/optimization/strategies/ParticleSubSwarmOptimization.java +++ b/src/eva2/optimization/strategies/ParticleSubSwarmOptimization.java @@ -481,7 +481,7 @@ public class ParticleSubSwarmOptimization extends ParticleSwarmOptimizationGCPSO for (int i = 0; i < tmp.getTargetSize(); i++) { tmpIndy = (AbstractEAIndividual) template.clone(); - tmpIndy.init(prob); + tmpIndy.initialize(prob); tmp.add(tmpIndy); } tmp.init(); diff --git a/src/eva2/optimization/strategies/tribes/TribesExplorer.java b/src/eva2/optimization/strategies/tribes/TribesExplorer.java index 9be3c417..da6f85c8 100644 --- a/src/eva2/optimization/strategies/tribes/TribesExplorer.java +++ b/src/eva2/optimization/strategies/tribes/TribesExplorer.java @@ -954,7 +954,7 @@ v[d] = cmin * v[d]; } @Override - public void init(InterfaceOptimizationProblem opt) { + public void initialize(InterfaceOptimizationProblem opt) { // TODO whats this for? for (int i = 0; i < this.position.x.length; i++) { this.position.x[0] = 0.; @@ -983,7 +983,7 @@ v[d] = cmin * v[d]; } this.setDoubleGenotype(x); } else { - this.init(opt); + this.initialize(opt); System.err.println("Initial value for ESIndividualDoubleData is not double[]!"); } } diff --git a/src/eva2/optimization/tools/ImpactOfDimensionOnMOEAs.java b/src/eva2/optimization/tools/ImpactOfDimensionOnMOEAs.java index 9ee4b7d4..0fe0f795 100644 --- a/src/eva2/optimization/tools/ImpactOfDimensionOnMOEAs.java +++ b/src/eva2/optimization/tools/ImpactOfDimensionOnMOEAs.java @@ -104,7 +104,7 @@ public class ImpactOfDimensionOnMOEAs { ((InterfaceDataTypeDouble) template).setDoubleDataLength(numberOfVariables); for (int i = 0; i < popSize; i++) { tmpIndy = (AbstractEAIndividual) template.clone(); - tmpIndy.init(null); + tmpIndy.initialize(null); pop.add(tmpIndy); } } diff --git a/src/eva2/problems/AbstractMultiModalProblemKnown.java b/src/eva2/problems/AbstractMultiModalProblemKnown.java index c05714d1..26b092f8 100644 --- a/src/eva2/problems/AbstractMultiModalProblemKnown.java +++ b/src/eva2/problems/AbstractMultiModalProblemKnown.java @@ -57,7 +57,7 @@ public abstract class AbstractMultiModalProblemKnown extends AbstractProblemDoub ((InterfaceDataTypeDouble) this.template).setDoubleRange(makeRange()); for (int i = 0; i < population.getTargetSize(); i++) { tmpIndy = (AbstractEAIndividual) this.template.clone(); - tmpIndy.init(this); + tmpIndy.initialize(this); population.add(tmpIndy); } // population initialize must be last diff --git a/src/eva2/problems/AbstractOptimizationProblem.java b/src/eva2/problems/AbstractOptimizationProblem.java index 7b23d762..bf1052d6 100644 --- a/src/eva2/problems/AbstractOptimizationProblem.java +++ b/src/eva2/problems/AbstractOptimizationProblem.java @@ -189,7 +189,7 @@ public abstract class AbstractOptimizationProblem implements InterfaceOptimizati for (int i = 0; i < population.getTargetSize(); i++) { tmpIndy = (AbstractEAIndividual) template.clone(); - tmpIndy.init(prob); + tmpIndy.initialize(prob); population.add(tmpIndy); } // population initialize must be last diff --git a/src/eva2/problems/BKnapsackProblem.java b/src/eva2/problems/BKnapsackProblem.java index bea94ccc..43674ac3 100644 --- a/src/eva2/problems/BKnapsackProblem.java +++ b/src/eva2/problems/BKnapsackProblem.java @@ -160,7 +160,7 @@ public class BKnapsackProblem extends AbstractProblemBinary implements java.io.S } protected void initIndy(int k, AbstractEAIndividual indy) { - indy.init(this); + indy.initialize(this); if (RNG.flipCoin(this.problemSpecificInit)) { BitSet tmpSet = new BitSet(); tmpSet.clear(); diff --git a/src/eva2/problems/SimpleProblemWrapper.java b/src/eva2/problems/SimpleProblemWrapper.java index dc0623ab..494f65d9 100644 --- a/src/eva2/problems/SimpleProblemWrapper.java +++ b/src/eva2/problems/SimpleProblemWrapper.java @@ -12,6 +12,7 @@ import eva2.problems.simple.InterfaceSimpleProblem; import eva2.problems.simple.SimpleF1; import eva2.problems.simple.SimpleProblemBinary; import eva2.problems.simple.SimpleProblemDouble; +import eva2.util.annotation.Parameter; import java.util.BitSet; @@ -164,6 +165,7 @@ public class SimpleProblemWrapper extends AbstractOptimizationProblem { /** * @param simProb the simProb to set */ + @Parameter(description = "Set the simple problem class which is to be optimized") public void setSimpleProblem(InterfaceSimpleProblem simProb) { this.simProb = simProb; initTemplate(); @@ -186,19 +188,13 @@ public class SimpleProblemWrapper extends AbstractOptimizationProblem { } } - /** - * - */ - public String simpleProblemTipText() { - return "Set the simple problem class which is to be optimized"; - } - /** * This method allows you to choose how much noise is to be added to the * fitness. This can be used to make the optimization problem more difficult. * * @param noise The sigma for a gaussian random number. */ + @Parameter(description = "Gaussian noise level on the fitness value.") public void setNoise(double noise) { if (noise < 0) { noise = 0; @@ -210,11 +206,6 @@ public class SimpleProblemWrapper extends AbstractOptimizationProblem { return this.noise; } - public String noiseTipText() { - return "Gaussian noise level on the fitness value."; - } - - /** * A (symmetric) absolute range limit. * @@ -229,15 +220,12 @@ public class SimpleProblemWrapper extends AbstractOptimizationProblem { * * @param defaultRange */ + @Parameter(name = "range", description = "Absolute limit for the symmetric range in any dimension") public void setDefaultRange(double defaultRange) { this.defaultRange = defaultRange; initTemplate(); } - public String defaultRangeTipText() { - return "Absolute limit for the symmetric range in any dimension"; - } - /** * Take care that all properties which may be hidden (and currently are) send a "hide" message to the Java Bean properties. * This is called by PropertySheetPanel in use with the GenericObjectEditor. @@ -246,16 +234,12 @@ public class SimpleProblemWrapper extends AbstractOptimizationProblem { setSimpleProblem(getSimpleProblem()); } + @Parameter(name = "individual", description = "Set the individual properties for the optimization") public void setIndividualTemplate(AbstractEAIndividual indy) { resetTemplate = false; template = indy; } - @Override - public String individualTemplateTipText() { - return "Set the individual properties for the optimization"; - } - /** * This method returns a string describing the optimization problem. *