diff --git a/src/eva2/cli/OptimizationBuilder.java b/src/eva2/cli/OptimizationBuilder.java index c33b502d..f3975b71 100644 --- a/src/eva2/cli/OptimizationBuilder.java +++ b/src/eva2/cli/OptimizationBuilder.java @@ -155,8 +155,14 @@ public final class OptimizationBuilder { } else { // The subtree has the name of the class String className = (String)((ArgumentTree)tree.get(name)).getValue(); - // Try to get the actual class from its name - Class subType = getClassFromName(className, type); + + Class subType; + if (className != null) { + // Try to get the actual class from its name + subType = getClassFromName(className, type); + } else { + subType = type; + } // Here the recursion starts obj = constructFromArgumentTree(subType, (ArgumentTree) tree.get(name)); diff --git a/src/eva2/problems/AbstractOptimizationProblem.java b/src/eva2/problems/AbstractOptimizationProblem.java index 28749526..7b23d762 100644 --- a/src/eva2/problems/AbstractOptimizationProblem.java +++ b/src/eva2/problems/AbstractOptimizationProblem.java @@ -87,13 +87,11 @@ public abstract class AbstractOptimizationProblem implements InterfaceOptimizati return parallelThreads; } + @Parameter(name = "parallel", description = "Set the number of threaded parallel function evaluations - interesting for slow functions and generational optimizers.") public void setParallelThreads(int parallelThreads) { this.parallelThreads = parallelThreads; } - public String parallelThreadsTipText() { - return "Set the number of threaded parallel function evaluations - interesting for slow functions and generational optimizers."; - } /** * This method initializes the problem instance. @@ -406,10 +404,6 @@ public abstract class AbstractOptimizationProblem implements InterfaceOptimizati return template; } - public String individualTemplateTipText() { - return "Choose the individual representation to use."; - } - /** * This method extracts the individuals from a given population that are assumed to correspond to local or global optima. * Similar individuals are clustered together with a density based clustering method diff --git a/src/eva2/problems/AbstractProblemDouble.java b/src/eva2/problems/AbstractProblemDouble.java index 74cf3d59..6bca47d6 100644 --- a/src/eva2/problems/AbstractProblemDouble.java +++ b/src/eva2/problems/AbstractProblemDouble.java @@ -22,6 +22,7 @@ import eva2.tools.diagram.ColorBarCalculator; import eva2.tools.math.Jama.Matrix; import eva2.tools.math.Mathematics; import eva2.tools.math.RNG; +import eva2.util.annotation.Parameter; /** * For a double valued problem, there are two main methods to implement: @@ -285,6 +286,7 @@ public abstract class AbstractProblemDouble extends AbstractOptimizationProblem * * @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; @@ -301,15 +303,12 @@ public abstract class AbstractProblemDouble extends AbstractOptimizationProblem return this.noise; } - public String noiseTipText() { - return "Gaussian noise level on the fitness value."; - } - /** * This method allows you to choose the EA individual used by the problem. * * @param indy The EAIndividual type */ + @Parameter(name = "individual", description = "Base individual type defining the data representation and mutation/crossover operators") public void setEAIndividual(InterfaceDataTypeDouble indy) { this.template = (AbstractEAIndividual) indy; } @@ -324,10 +323,6 @@ public abstract class AbstractProblemDouble extends AbstractOptimizationProblem return (InterfaceDataTypeDouble) this.template; } - public String EAIndividualTipText() { - return "Set the base individual type defining the data representation and mutation/crossover operators"; - } - /** * A (symmetric) absolute range limit. * @@ -351,6 +346,7 @@ public abstract class AbstractProblemDouble extends AbstractOptimizationProblem return "Absolute limit for the symmetric range in any dimension"; } + @Parameter(name = "rotate", description = "If marked, the function is rotated by 22.5 degrees along every axis.") public void setDoRotation(boolean doRotation) { this.doRotation = doRotation; if (!doRotation) { @@ -362,10 +358,6 @@ public abstract class AbstractProblemDouble extends AbstractOptimizationProblem return doRotation; } - public String doRotationTipText() { - return "If marked, the function is rotated by 22.5 degrees along every axis."; - } - /** * ******************************************************************************************************************* * These are for InterfaceParamControllable