From: Gary P. <gpa...@gm...> - 2009-07-20 06:35:28
|
Functions provide a relationship for an input to an output. These changes define that the input and output types are parameterized. This removed the need to have: public Object getMinimum() { return new Double(0.0); } and simply allows: public Double getMinimum() { return 0.0; } where the function is defined to be a Function<F, Double> where F is any input type. Additionally, this makes the API simpler to use and adds more type safety to the functions. The most notable is that DiscreteFunctions now work with Integer objects and not Double objects, was was the case previously. Signed-off-by: Gary Pampara <gpa...@gm...> --- .../cilib/functions/ContinuousFunction.java | 37 ++----- .../cilib/functions/DiscreteFunction.java | 32 +----- .../net/sourceforge/cilib/functions/Function.java | 109 ++++--------------- .../functions/activation/ActivationFunction.java | 12 +-- .../cilib/functions/activation/Sigmoid.java | 17 +-- .../clustering/ClusteringFitnessFunction.java | 2 +- .../cilib/functions/continuous/ContinuousStep.java | 13 +- .../functions/continuous/ExpressionFunction.java | 4 +- .../cilib/functions/continuous/Foxholes.java | 9 +- .../continuous/FunctionDimensionMapping.java | 4 +- .../cilib/functions/continuous/GoldsteinPrice.java | 10 +- .../cilib/functions/continuous/Himmelblau.java | 16 +-- .../cilib/functions/continuous/HyperEllipsoid.java | 9 +- .../continuous/MaximumDeratingFunction1.java | 12 +- .../cilib/functions/continuous/Michalewicz12.java | 120 -------------------- .../functions/continuous/MultimodalFunction1.java | 9 +- .../functions/continuous/MultimodalFunction2.java | 11 +- .../functions/continuous/MultimodalFunction3.java | 9 +- .../functions/continuous/MultimodalFunction4.java | 11 +- .../functions/continuous/MultimodalFunction5.java | 7 +- .../cilib/functions/continuous/NastyBenchmark.java | 9 +- .../cilib/functions/continuous/Neumaier3.java | 10 +- .../cilib/functions/continuous/Quadric.java | 14 +- .../cilib/functions/continuous/Quartic.java | 15 ++- .../cilib/functions/continuous/Ripple.java | 7 +- .../cilib/functions/continuous/Salomon.java | 10 +- .../cilib/functions/continuous/Schaffer2.java | 9 +- .../cilib/functions/continuous/Schaffer6.java | 7 +- .../cilib/functions/continuous/Schwefel.java | 11 +- .../functions/continuous/SchwefelProblem1_2.java | 8 +- .../functions/continuous/SchwefelProblem2_21.java | 12 +- .../functions/continuous/SchwefelProblem2_22.java | 13 +- .../functions/continuous/SchwefelProblem2_26.java | 9 +- .../cilib/functions/continuous/ShekelN.java | 13 +- .../functions/continuous/ShekelsFoxholes.java | 9 +- .../cilib/functions/continuous/Shir.java | 11 +- .../cilib/functions/continuous/Shubert.java | 9 +- .../functions/continuous/SixHumpCamelBack.java | 11 +- .../cilib/functions/continuous/Step.java | 6 +- .../cilib/functions/continuous/UrsemF1.java | 7 +- .../cilib/functions/continuous/UrsemF3.java | 7 +- .../cilib/functions/continuous/UrsemF4.java | 7 +- .../continuous/decorators/AngleModulation.java | 24 ++-- .../decorators/InvertedFunctionDecorator.java | 12 +- .../decorators/NoisyFunctionDecorator.java | 4 +- .../decorators/ReflectedFunctionDecorator.java | 12 +- .../decorators/RotatedFunctionDecorator.java | 10 +- .../decorators/ScaledFunctionDecorator.java | 12 +- .../decorators/ShiftedFunctionDecorator.java | 10 +- .../functions/continuous/dynamic/MovingPeaks.java | 13 +- .../continuous/dynamic/moo/fda1/FDA1_f1.java | 5 +- .../continuous/dynamic/moo/fda1/FDA1_f2.java | 11 +- .../continuous/dynamic/moo/fda1/FDA1_g.java | 7 +- .../continuous/dynamic/moo/fda1/FDA1_h.java | 9 +- .../continuous/dynamic/moo/fda2/FDA2_f1.java | 5 +- .../continuous/dynamic/moo/fda2/FDA2_f2.java | 10 +- .../continuous/dynamic/moo/fda2/FDA2_g.java | 7 +- .../continuous/dynamic/moo/fda2/FDA2_h.java | 19 ++-- .../continuous/unconstrained/AbsoluteValue.java | 8 +- .../functions/continuous/unconstrained/Ackley.java | 10 +- .../functions/continuous/unconstrained/Beale.java | 10 +- .../functions/continuous/unconstrained/Bird.java | 10 +- .../continuous/unconstrained/Bohachevsky1.java | 8 +- .../continuous/unconstrained/Bohachevsky2.java | 4 +- .../continuous/unconstrained/Bohachevsky3.java | 4 +- .../functions/continuous/unconstrained/Booth.java | 10 +- .../functions/continuous/unconstrained/Branin.java | 11 +- .../functions/continuous/unconstrained/Bukin4.java | 10 +- .../functions/continuous/unconstrained/Bukin6.java | 10 +- .../continuous/unconstrained/Colville.java | 15 ++- .../continuous/unconstrained/Damavandi.java | 12 +- .../functions/continuous/unconstrained/Easom.java | 13 +- .../continuous/unconstrained/EggHolder.java | 16 ++-- .../continuous/unconstrained/Griewank.java | 13 +- .../continuous/unconstrained/Michalewicz.java | 12 +- .../continuous/unconstrained/Rastrigin.java | 9 +- .../continuous/unconstrained/Rosenbrock.java | 12 +- .../continuous/unconstrained/Spherical.java | 11 +- .../cilib/functions/discrete/BinaryAdapter.java | 27 ++--- .../cilib/functions/discrete/BitStringMatcher.java | 15 +-- .../cilib/functions/discrete/KnapSack.java | 20 ++-- .../cilib/functions/discrete/KnightsCoverage.java | 2 +- .../cilib/functions/discrete/KnightsTour.java | 22 ++-- .../discrete/LongestCommonSubsequence.java | 16 ++-- .../cilib/functions/discrete/Queens.java | 8 +- .../single/GenericFunctionMeasurement.java | 8 +- .../foundation/NeuralNetworkRetrievalVisitor.java | 4 +- .../neuralnetwork/testarea/NNFunctionAdapter.java | 8 +- .../DeratingFunctionMaximisationProblem.java | 13 +- .../cilib/problem/FunctionLearningProblem.java | 15 ++- .../cilib/problem/FunctionMaximisationProblem.java | 5 +- .../cilib/problem/FunctionMinimisationProblem.java | 5 +- .../cilib/problem/FunctionOptimisationProblem.java | 12 +- .../NaturalOrderFitnessComparatorTest.java | 78 +++++++++++++ .../cilib/functions/continuous/QuarticTest.java | 9 +- .../unconstrained/AbsoluteValueTest.java | 3 +- .../continuous/unconstrained/AckleyTest.java | 3 +- .../continuous/unconstrained/BealeTest.java | 3 +- .../continuous/unconstrained/BirdTest.java | 3 +- .../continuous/unconstrained/Bohachevsky1Test.java | 3 +- .../continuous/unconstrained/BoothTest.java | 3 +- .../continuous/unconstrained/BraninTest.java | 4 +- .../continuous/unconstrained/Bukin4Test.java | 2 +- .../continuous/unconstrained/Bukin6Test.java | 3 +- .../continuous/unconstrained/ColvilleTest.java | 3 +- .../continuous/unconstrained/DamavandiTest.java | 3 +- .../continuous/unconstrained/EasomTest.java | 2 +- .../continuous/unconstrained/GriewankTest.java | 2 +- .../continuous/unconstrained/RastriginTest.java | 3 +- .../continuous/unconstrained/SphericalTest.java | 3 +- .../problem/FunctionMinimisationProblemTest.java | 6 +- 111 files changed, 623 insertions(+), 738 deletions(-) delete mode 100644 src/main/java/net/sourceforge/cilib/functions/continuous/Michalewicz12.java create mode 100644 src/test/java/net/sourceforge/cilib/entity/comparator/NaturalOrderFitnessComparatorTest.java diff --git a/src/main/java/net/sourceforge/cilib/functions/ContinuousFunction.java b/src/main/java/net/sourceforge/cilib/functions/ContinuousFunction.java index 59397a3..7453a8d 100644 --- a/src/main/java/net/sourceforge/cilib/functions/ContinuousFunction.java +++ b/src/main/java/net/sourceforge/cilib/functions/ContinuousFunction.java @@ -21,15 +21,13 @@ */ package net.sourceforge.cilib.functions; -import net.sourceforge.cilib.type.types.Type; import net.sourceforge.cilib.type.types.container.Vector; /** * @author Edwin Peer * @author Olusegun Olorunda */ -public abstract class ContinuousFunction extends Function { - +public abstract class ContinuousFunction extends AbstractFunction<Vector, Double> { private static final long serialVersionUID = -2483529496289508896L; /** @@ -50,42 +48,23 @@ public abstract class ContinuousFunction extends Function { /** * {@inheritDoc} */ + @Override public abstract ContinuousFunction getClone(); /** * {@inheritDoc} */ - public Object getMinimum() { - return new Double(-Double.MAX_VALUE); - } - - /** - * {@inheritDoc} - */ - public Object getMaximum() { - return new Double(Double.MAX_VALUE); + @Override + public Double getMinimum() { + return -Double.MAX_VALUE; } /** * {@inheritDoc} */ - public Double evaluate(Type x) { - Double d = null; - try { - d = new Double(evaluate((Vector) x)); - } - catch (ClassCastException c) { - c.printStackTrace(); - } - - return d; + @Override + public Double getMaximum() { + return Double.MAX_VALUE; } - /** - * Evaluate the function with the given {@link net.sourceforge.cilib.type.types.container.Vector} as input. - * @param x The input {@link net.sourceforge.cilib.type.types.container.Vector}. - * @return The value of the evaluation. - */ - public abstract double evaluate(Vector x); - } diff --git a/src/main/java/net/sourceforge/cilib/functions/DiscreteFunction.java b/src/main/java/net/sourceforge/cilib/functions/DiscreteFunction.java index 407b8f9..5485622 100644 --- a/src/main/java/net/sourceforge/cilib/functions/DiscreteFunction.java +++ b/src/main/java/net/sourceforge/cilib/functions/DiscreteFunction.java @@ -21,13 +21,12 @@ */ package net.sourceforge.cilib.functions; -import net.sourceforge.cilib.type.types.Type; import net.sourceforge.cilib.type.types.container.Vector; /** * @author Gary Pampara */ -public abstract class DiscreteFunction extends Function { +public abstract class DiscreteFunction extends AbstractFunction<Vector, Integer> { private static final long serialVersionUID = -1966158048234228064L; /** @@ -39,36 +38,15 @@ public abstract class DiscreteFunction extends Function { /** * {@inheritDoc} */ - public Object getMinimum() { - return new Double(-Double.MAX_VALUE); + public Integer getMinimum() { + return -Integer.MAX_VALUE; } /** * {@inheritDoc} */ - public Object getMaximum() { - return new Double(Double.MAX_VALUE); + public Integer getMaximum() { + return Integer.MAX_VALUE; } - /** - * {@inheritDoc} - */ - public Double evaluate(Type x) { - Double d = null; - try { - d = new Double(evaluate((Vector) x)); - } - catch (ClassCastException c) { - c.printStackTrace(); - } - - return d; - } - - /** - * Evaluate the function output, given the function input, {@code x}. - * @param x The {@linkplain Vector} representing the function input. - * @return The result of the evaluation. - */ - public abstract double evaluate(Vector x); } diff --git a/src/main/java/net/sourceforge/cilib/functions/Function.java b/src/main/java/net/sourceforge/cilib/functions/Function.java index d883fcf..75079fb 100644 --- a/src/main/java/net/sourceforge/cilib/functions/Function.java +++ b/src/main/java/net/sourceforge/cilib/functions/Function.java @@ -21,113 +21,44 @@ */ package net.sourceforge.cilib.functions; -import java.io.Serializable; - -import net.sourceforge.cilib.type.DomainRegistry; -import net.sourceforge.cilib.type.StringBasedDomainRegistry; -import net.sourceforge.cilib.type.types.Type; import net.sourceforge.cilib.util.Cloneable; /** - * All functions should inherit from <code>Function</code>. - * @author Edwin Peer - * @author Gary Pampara + * Function difinition. All functions apply some or other transformation + * on a set of input variables and create an output that is representative of + * the input. + * @param <F> The "from" type. + * @param <T> The "to" type. */ -public abstract class Function implements Cloneable, Serializable { - private static final long serialVersionUID = -4843291761555348251L; - - private DomainRegistry domainRegistry; - private DomainRegistry behavioralDomainRegistry; - - /** - * Create a new instance of {@linkplain Function}. - */ - public Function() { - domainRegistry = new StringBasedDomainRegistry(); - behavioralDomainRegistry = new StringBasedDomainRegistry(); - } - - /** - * Create a copy of the provided instance. - * @param copy The instance to copy. - */ - public Function(Function copy) { - domainRegistry = copy.domainRegistry.getClone(); - behavioralDomainRegistry = copy.behavioralDomainRegistry.getClone(); - } +public interface Function<F, T> extends Cloneable { /** - * @return The dimension of the function. + * Perfrom the evaluation of the input and return the result. + * @param input The input for the function. + * @return The result of the evaluation. */ - public int getDimension() { - return this.getDomainRegistry().getDimension(); - } + public T evaluate(F input); /** - * Accessor for the domain of the function. See {@link net.sourceforge.cilib.Domain.Component}. - * @return The function domain. + * The maximum of the function. + * @return The function maximum. */ - public DomainRegistry getDomainRegistry() { - return domainRegistry; - } + public T getMaximum(); /** - * @return Returns the behaviouralDomainRegistry. + * The minimum of the function. + * @return The function minimum. */ - public DomainRegistry getBehavioralDomainRegistry() { - return behavioralDomainRegistry; - } + public T getMinimum(); /** - * @param behavioralDomainRegistry The behaviouralDomainRegistry to set. + * @return The dimension of the function. */ - public void setBehaviouralDomainRegistry(StringBasedDomainRegistry behavioralDomainRegistry) { - throw new UnsupportedOperationException("You are not allowed to set the BehaviroalDomainRegistry!"); - } + public int getDimension(); /** * @return The domain {@linkplain String}. */ - public String getDomain() { - return domainRegistry.getDomainString(); - } - - /** - * Sets the domain of the function. - * @param representation the string representation for the function domain. - */ - public void setDomain(String representation) { - this.domainRegistry.setDomainString(representation); - } - - /** - * Set the behavioural domain of the {@linkplain Function}. - * @param behavioralDomain The value to set. - */ - public void setBehavioralDomain(String behavioralDomain) { - this.behavioralDomainRegistry.setDomainString(behavioralDomain); - } - - /** - * Accessor for the function minimum. This is the minimum value of the function in the given - * domain. - * @return The minimum function value. - */ - public abstract Object getMinimum(); - - /** - * Accessor for the function maximum. This is the maximum value of the function in the given - * domain. - * @return The maximum of the function. - */ - public abstract Object getMaximum(); - - /** - * Each function must provide an implementation which returns the function value at the given - * position. The length of the position array should be the same as the function dimension. - * @param x the position - * @return The result of the evaluation. - */ - public abstract Double evaluate(Type x); - + public String getDomain(); + } diff --git a/src/main/java/net/sourceforge/cilib/functions/activation/ActivationFunction.java b/src/main/java/net/sourceforge/cilib/functions/activation/ActivationFunction.java index bd4a632..ad8b2e5 100644 --- a/src/main/java/net/sourceforge/cilib/functions/activation/ActivationFunction.java +++ b/src/main/java/net/sourceforge/cilib/functions/activation/ActivationFunction.java @@ -22,23 +22,17 @@ package net.sourceforge.cilib.functions.activation; import net.sourceforge.cilib.functions.Differentiable; -import net.sourceforge.cilib.functions.Function; -import net.sourceforge.cilib.type.types.Type; +import net.sourceforge.cilib.functions.AbstractFunction; +import net.sourceforge.cilib.type.types.container.Vector; /** * Activation functions are functions that are typically used within Neurons. This class provides * an abstraction for all functions that can be used in this manner. */ -public abstract class ActivationFunction extends Function implements Differentiable { +public abstract class ActivationFunction extends AbstractFunction<Vector, Double> implements Differentiable { private static final long serialVersionUID = 4692200308338537909L; /** - * {@inheritDoc} - */ - @Override - public abstract Double evaluate(Type x); - - /** * Determine the value of the {@link ActivationFunction} at the provided <code>point</code>. * The provided <code>point</code> is simply a {@linkplain Number} that is provided as input. * @param number The input value. diff --git a/src/main/java/net/sourceforge/cilib/functions/activation/Sigmoid.java b/src/main/java/net/sourceforge/cilib/functions/activation/Sigmoid.java index eaa62c3..2e749e4 100644 --- a/src/main/java/net/sourceforge/cilib/functions/activation/Sigmoid.java +++ b/src/main/java/net/sourceforge/cilib/functions/activation/Sigmoid.java @@ -24,7 +24,6 @@ package net.sourceforge.cilib.functions.activation; import net.sourceforge.cilib.controlparameter.ConstantControlParameter; import net.sourceforge.cilib.controlparameter.ControlParameter; import net.sourceforge.cilib.type.types.Real; -import net.sourceforge.cilib.type.types.Type; import net.sourceforge.cilib.type.types.container.Vector; import net.sourceforge.cilib.util.Vectors; @@ -61,16 +60,14 @@ public class Sigmoid extends ActivationFunction { * {@inheritDoc} */ @Override - public Double evaluate(Type x) { - Vector vector = (Vector) x; - - if (vector.getDimension() != 1) + public Double evaluate(Vector input) { + if (input.getDimension() != 1) throw new UnsupportedOperationException("Cannot determine the actvation of more than a single value"); if (steepness.getParameter() < 0.0) throw new UnsupportedOperationException("Steepness value for sigmoid function must be >= 0"); - return (1.0 / (1.0+Math.pow(Math.E, -1.0*steepness.getParameter()*(vector.getReal(0)-offset.getParameter())))); + return (1.0 / (1.0+Math.pow(Math.E, -1.0*steepness.getParameter()*(input.getReal(0)-offset.getParameter())))); } /** @@ -87,16 +84,16 @@ public class Sigmoid extends ActivationFunction { * {@inheritDoc} */ @Override - public Object getMaximum() { - return new Double(1.0); + public Double getMaximum() { + return 1.0; } /** * {@inheritDoc} */ @Override - public Object getMinimum() { - return new Double(0.0); + public Double getMinimum() { + return 0.0; } /** diff --git a/src/main/java/net/sourceforge/cilib/functions/clustering/ClusteringFitnessFunction.java b/src/main/java/net/sourceforge/cilib/functions/clustering/ClusteringFitnessFunction.java index bab0e7f..8b034f2 100644 --- a/src/main/java/net/sourceforge/cilib/functions/clustering/ClusteringFitnessFunction.java +++ b/src/main/java/net/sourceforge/cilib/functions/clustering/ClusteringFitnessFunction.java @@ -93,7 +93,7 @@ public abstract class ClusteringFitnessFunction extends ContinuousFunction { * @return the fitness that has been calculated */ @Override - public double evaluate(Vector centroids) { + public Double evaluate(Vector centroids) { helper = ClusteringUtils.get(); //this statement should not be in a constructor helper.arrangeClustersAndCentroids(centroids); arrangedClusters = helper.getArrangedClusters(); diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/ContinuousStep.java b/src/main/java/net/sourceforge/cilib/functions/continuous/ContinuousStep.java index 6475011..bd2174b 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/ContinuousStep.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/ContinuousStep.java @@ -55,8 +55,8 @@ public class ContinuousStep extends ContinuousFunction { * be the value of 0.0. * @return An {@code Object} containing the value 0.0. */ - public Object getMinimum() { - return new Double(0); + public Double getMinimum() { + return 0.0; } /** @@ -64,17 +64,18 @@ public class ContinuousStep extends ContinuousFunction { * be the value of 55.0. * @return An {@code Object} containing the value 55.0. */ - public Object getMaximum() { - return new Double(55.0); + public Double getMaximum() { + return 55.0; } /** * {@inheritDoc} */ - public double evaluate(Vector x) { + @Override + public Double evaluate(Vector input) { double sum = 0.0; for (int i = 0; i < getDimension(); ++i) { - sum += (x.getReal(i) + 0.5) * (x.getReal(i) + 0.5); + sum += (input.getReal(i) + 0.5) * (input.getReal(i) + 0.5); } return sum; } diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/ExpressionFunction.java b/src/main/java/net/sourceforge/cilib/functions/continuous/ExpressionFunction.java index ca644d7..87993b5 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/ExpressionFunction.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/ExpressionFunction.java @@ -74,9 +74,9 @@ public class ExpressionFunction extends ContinuousFunction { * {@inheritDoc} */ @Override - public double evaluate(Vector x) { + public Double evaluate(Vector input) { for (int i = 0; i < getDimension(); i++) { - this.parser.addVariable("x" + Integer.toString(i + 1), x.getReal(i)); + this.parser.addVariable("x" + Integer.toString(i + 1), input.getReal(i)); } return this.parser.getValue(); } diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/Foxholes.java b/src/main/java/net/sourceforge/cilib/functions/continuous/Foxholes.java index ff6266f..7085350 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/Foxholes.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/Foxholes.java @@ -56,15 +56,16 @@ public class Foxholes extends ContinuousFunction { /** * {@inheritDoc} */ - public Object getMinimum() { - return new Double(1.0); + public Double getMinimum() { + return 1.0; } /** * {@inheritDoc} */ // This impl is according to the function defined by Xin Yao in the FastEP and by the DE guys - public double evaluate(Vector x) { + @Override + public Double evaluate(Vector input) { double result = 0.002; double sum = 0.0; @@ -78,7 +79,7 @@ public class Foxholes extends ContinuousFunction { else tmp_a = a[1][j/5]; - tmp += Math.pow((x.getReal(i) - tmp_a), 6); + tmp += Math.pow((input.getReal(i) - tmp_a), 6); } sum += 1.0 / (j + tmp); diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/FunctionDimensionMapping.java b/src/main/java/net/sourceforge/cilib/functions/continuous/FunctionDimensionMapping.java index 2623650..7ff2707 100755 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/FunctionDimensionMapping.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/FunctionDimensionMapping.java @@ -68,10 +68,10 @@ public class FunctionDimensionMapping extends ContinuousFunction { * {@inheritDoc} */ @Override - public double evaluate(Vector x) { + public Double evaluate(Vector input) { // The vector x is an entities information vector which represents the seed to // a random number generator. - long seed = convert(x); + long seed = convert(input); Random generator = new MersenneTwister(); generator.setSeed(seed); diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/GoldsteinPrice.java b/src/main/java/net/sourceforge/cilib/functions/continuous/GoldsteinPrice.java index b57edbe..22bddde 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/GoldsteinPrice.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/GoldsteinPrice.java @@ -56,17 +56,17 @@ public class GoldsteinPrice extends ContinuousFunction { /** * Get the minimum of the function. The value of the minimum of 3.0. */ - public Object getMinimum() { - return new Double(3.0); + public Double getMinimum() { + return 3.0; } /** * {@inheritDoc} */ @Override - public double evaluate(Vector x) { - double part1 = 1 + (x.getReal(0) + x.getReal(1) + 1.0) * (x.getReal(0) + x.getReal(1) + 1.0) * (19.0 - 14.0 * x.getReal(0) + 3 * x.getReal(0) * x.getReal(0) - 14 * x.getReal(1) + 6 * x.getReal(0) * x.getReal(1) + 3 * x.getReal(1) * x.getReal(1)); - double part2 = 30 + (2 * x.getReal(0) - 3 * x.getReal(1)) * (2 * x.getReal(0) - 3 * x.getReal(1)) * (18 - 32 * x.getReal(0) + 12 * x.getReal(0) * x.getReal(0) + 48 * x.getReal(1) - 36 * x.getReal(0) * x.getReal(1) + 27 * x.getReal(1) * x.getReal(1)); + public Double evaluate(Vector input) { + double part1 = 1 + (input.getReal(0) + input.getReal(1) + 1.0) * (input.getReal(0) + input.getReal(1) + 1.0) * (19.0 - 14.0 * input.getReal(0) + 3 * input.getReal(0) * input.getReal(0) - 14 * input.getReal(1) + 6 * input.getReal(0) * input.getReal(1) + 3 * input.getReal(1) * input.getReal(1)); + double part2 = 30 + (2 * input.getReal(0) - 3 * input.getReal(1)) * (2 * input.getReal(0) - 3 * input.getReal(1)) * (18 - 32 * input.getReal(0) + 12 * input.getReal(0) * input.getReal(0) + 48 * input.getReal(1) - 36 * input.getReal(0) * input.getReal(1) + 27 * input.getReal(1) * input.getReal(1)); return part1 * part2; } } diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/Himmelblau.java b/src/main/java/net/sourceforge/cilib/functions/continuous/Himmelblau.java index 8ea96d5..4dc09b8 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/Himmelblau.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/Himmelblau.java @@ -63,20 +63,16 @@ public class Himmelblau extends ContinuousFunction { /** * {@inheritDoc} */ - public Object getMinimum() { - return new Double(0); + public Double getMinimum() { + return 0.0; } /** - * Evaluate the function and return the result of the evaluation. - * - * @param vector The {@linkplain Vector} containing the two dimensional data. - * @return The value of the Himmalblau function with {@code vector} containing the - * function input. + * {@inheritDoc} */ - public double evaluate(Vector vector) { - double x = vector.getReal(0); - double y = vector.getReal(1); + public Double evaluate(Vector input) { + double x = input.getReal(0); + double y = input.getReal(1); return -Math.pow((x*x + y -11), 2) + Math.pow((x + y*y -7), 2); } diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/HyperEllipsoid.java b/src/main/java/net/sourceforge/cilib/functions/continuous/HyperEllipsoid.java index 1e4a92b..4fdeecc 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/HyperEllipsoid.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/HyperEllipsoid.java @@ -59,17 +59,18 @@ public class HyperEllipsoid extends ContinuousFunction { /** * {@inheritDoc} */ - public Object getMinimum() { - return new Double(0); + public Double getMinimum() { + return 0.0; } /** * {@inheritDoc} */ - public double evaluate(Vector x) { + @Override + public Double evaluate(Vector input) { double tmp = 0; for (int i = 0; i < getDimension(); ++i) { - tmp += (i + 1) * x.getReal(i) * x.getReal(i); + tmp += (i + 1) * input.getReal(i) * input.getReal(i); } return tmp; } diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/MaximumDeratingFunction1.java b/src/main/java/net/sourceforge/cilib/functions/continuous/MaximumDeratingFunction1.java index aa864e2..e4639d4 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/MaximumDeratingFunction1.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/MaximumDeratingFunction1.java @@ -53,8 +53,8 @@ public class MaximumDeratingFunction1 extends ContinuousFunction { /** * {@inheritDoc} */ - public Object getMinimum() { - return new Double(0); + public Double getMinimum() { + return 0.0; } /** @@ -92,17 +92,17 @@ public class MaximumDeratingFunction1 extends ContinuousFunction { /** * {@inheritDoc} */ - public double evaluate(Vector parm1) { + public Double evaluate(Vector input) { // the derating function is only to be used with Derating Function Problem // if the this class is misused, then prcocess will exit inorder to prevent // errorneous results. //if (parm1.length > 1) { - if (parm1.getDimension() > 1) + if (input.getDimension() > 1) throw new RuntimeException("derating function may only be used in one dimension"); - if (parm1.getReal(0) >= radius) + if (input.getReal(0) >= radius) return 1.0; - return Math.pow(parm1.getReal(0) / radius, alpha); + return Math.pow(input.getReal(0) / radius, alpha); } } diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/Michalewicz12.java b/src/main/java/net/sourceforge/cilib/functions/continuous/Michalewicz12.java deleted file mode 100644 index 55bb6e3..0000000 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/Michalewicz12.java +++ /dev/null @@ -1,120 +0,0 @@ -/** - * Copyright (C) 2003 - 2009 - * Computational Intelligence Research Group (CIRG@UP) - * Department of Computer Science - * University of Pretoria - * South Africa - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package net.sourceforge.cilib.functions.continuous; - -import net.sourceforge.cilib.functions.ContinuousFunction; -import net.sourceforge.cilib.type.types.container.Vector; - -/** - * Michalewicz function. - * - * <p>Title: CILib</p> - * <p>Description: CILib (Computational Intelligence Library)</p> - * <p>Copyright: Copyright (c) 2004</p> - * <p>Company: </p> - * - * Characteristics: - * <ul> - * <li>Multimodal</li> - * <li>Continuous</li> - * <li>Separable</li> - * </ul> - * - * f(x) = -4.687 if n = 5 - * f(x) = -9.66 if n = 10 - * - * @author Clive Naicker - * @version 1.0 - */ -public class Michalewicz12 extends ContinuousFunction { - private static final long serialVersionUID = -2885728189740122807L; - - private int m; - - /** - * Create an instance of {@linkplain Michalewicz12}. Domain is set to R(0, PI)^30 - */ - public Michalewicz12() { - //constraint.add(new DimensionValidator(2)); - setDomain("R(0, 3.141592653589793)^30"); - - m = 10; - } - - /** - * {@inheritDoc} - */ - @Override - public Michalewicz12 getClone() { - return new Michalewicz12(); - } - - /** - * {@inheritDoc} - */ - public Object getMinimum() { - if (this.getDimension() == 5) - return new Double(-4.687); - else if (this.getDimension() == 10) - return new Double(-9.66); - - return new Double(-Double.MAX_VALUE); - } - - /** - * {@inheritDoc} - */ - public double evaluate(Vector input) { - /*double x = X.getReal(0); - double y = X.getReal(1); - - double result = Math.sin(x)*Math.pow(Math.sin(x*x/Math.PI), 20); - result += Math.sin(y)*Math.pow(Math.sin(y*y/Math.PI), 20); - return result;*/ - - double sumsq = 0.0; - - for (int i = 0; i < getDimension(); i++) { - double x = input.getReal(i); - sumsq += Math.sin(x) * Math.pow(Math.sin(((i+1) * x * x)/Math.PI), 2*m); - } - - return -sumsq; - } - - /** - * Get the value for <code>M</code>. - * @return The value for <code>M</code>. - */ - public int getM() { - return m; - } - - /** - * Set the value for <code>M</code>. - * @param m The value to set. - */ - public void setM(int m) { - this.m = m; - } - -} diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction1.java b/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction1.java index 0803383..26c6224 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction1.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction1.java @@ -48,17 +48,18 @@ public class MultimodalFunction1 extends ContinuousFunction { /** * Get the minimum value of the function. The minimum is defined to be <code>0.0</code>. */ - public Object getMinimum() { - return new Double(0); + public Double getMinimum() { + return 0.0; } /** * {@inheritDoc} */ - public double evaluate(Vector parm1) { + @Override + public Double evaluate(Vector input) { double dResult = 0.0; for (int i = 0; i < getDimension(); ++i) { - double x = Math.pow(Math.sin(5.0 * Math.PI * parm1.getReal(i)), 6.0); + double x = Math.pow(Math.sin(5.0 * Math.PI * input.getReal(i)), 6.0); dResult += x; } return dResult; diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction2.java b/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction2.java index 8089162..2449114 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction2.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction2.java @@ -51,19 +51,20 @@ public class MultimodalFunction2 extends ContinuousFunction { * Get the minimum of the function. It is defined to be a value of <code>0.0</code>. * @return The function minimum value. */ - public Object getMinimum() { - return new Double(0); + public Double getMinimum() { + return 0.0; } /** * {@inheritDoc} */ - public double evaluate(Vector parm1) { + @Override + public Double evaluate(Vector input) { double dResult = 0.0; for (int i = 0; i < getDimension(); i++) { - double x = Math.pow(Math.sin(5.0 * Math.PI * parm1.getReal(i)), 6.0); + double x = Math.pow(Math.sin(5.0 * Math.PI * input.getReal(i)), 6.0); double exp1 = -2.0 * Math.log(2); - double exp2 = Math.pow((parm1.getReal(i) - 0.1) / 0.8, 2.0); + double exp2 = Math.pow((input.getReal(i) - 0.1) / 0.8, 2.0); double y = Math.exp(exp1 * exp2); dResult += x * y; } diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction3.java b/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction3.java index 30e9299..d917b38 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction3.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction3.java @@ -49,17 +49,18 @@ public class MultimodalFunction3 extends ContinuousFunction { * Get the minimum of the function. It is defined to be a value of <code>0.0</code>. * @return The function minimum value. */ - public Object getMinimum() { - return new Double(0); + public Double getMinimum() { + return 0.0; } /** * {@inheritDoc} */ - public double evaluate(Vector parm1) { + @Override + public Double evaluate(Vector input) { double dResult = 0.0; for (int i = 0; i < getDimension(); ++i) { - double x = Math.pow(Math.sin(5.0 * Math.PI * (Math.pow(parm1.getReal(i), 0.75) - 0.05)), 6.0); + double x = Math.pow(Math.sin(5.0 * Math.PI * (Math.pow(input.getReal(i), 0.75) - 0.05)), 6.0); dResult += x; } return dResult; diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction4.java b/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction4.java index 5f10cf3..180b528 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction4.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction4.java @@ -49,19 +49,20 @@ public class MultimodalFunction4 extends ContinuousFunction { * Get the minimum of the function. It is defined to be a value of <code>0.0</code>. * @return The function minimum value. */ - public Object getMinimum() { - return new Double(0); + public Double getMinimum() { + return 0.0; } /** * {@inheritDoc} */ - public double evaluate(Vector parm1) { + @Override + public Double evaluate(Vector input) { double dResult = 0.0; for (int i = 0; i < getDimension(); i++) { - double x = Math.pow(Math.sin(5.0 * Math.PI * (Math.pow(parm1.getReal(i), 0.75) - 0.05)), 6.0); + double x = Math.pow(Math.sin(5.0 * Math.PI * (Math.pow(input.getReal(i), 0.75) - 0.05)), 6.0); double exp1 = -2.0 * Math.log(2); - double exp2 = Math.pow((parm1.getReal(i) - 0.08) / 0.854, 2.0); + double exp2 = Math.pow((input.getReal(i) - 0.08) / 0.854, 2.0); double y = Math.exp(exp1 * exp2); dResult += x * y; } diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction5.java b/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction5.java index 6b126dc..e83f066 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction5.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/MultimodalFunction5.java @@ -49,14 +49,15 @@ public class MultimodalFunction5 extends ContinuousFunction { * Get the minimum of the function. It is defined to be a value of <code>0.0</code>. * @return The function minimum value. */ - public Object getMinimum() { - return new Double(0); + public Double getMinimum() { + return 0.0; } /** * {@inheritDoc} */ - public double evaluate(Vector input) { + @Override + public Double evaluate(Vector input) { double x = input.getReal(0); double y = input.getReal(1); double result; diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/NastyBenchmark.java b/src/main/java/net/sourceforge/cilib/functions/continuous/NastyBenchmark.java index ecf5891..7a7882e 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/NastyBenchmark.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/NastyBenchmark.java @@ -51,17 +51,18 @@ public class NastyBenchmark extends ContinuousFunction { * Get the minimum of the function. It is defined to be a value of <code>0.0</code>. * @return The function minimum value. */ - public Object getMinimum() { - return new Double(0); + public Double getMinimum() { + return 0.0; } /** * {@inheritDoc} */ - public double evaluate(Vector x) { + @Override + public Double evaluate(Vector input) { double tmp = 0; for (int i = 0; i < getDimension(); ++i) { - double factor = (x.getReal(i) - (i + 1)); + double factor = (input.getReal(i) - (i + 1)); tmp += factor * factor; } return tmp; diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/Neumaier3.java b/src/main/java/net/sourceforge/cilib/functions/continuous/Neumaier3.java index 198d904..7040d46 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/Neumaier3.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/Neumaier3.java @@ -51,22 +51,22 @@ public class Neumaier3 extends ContinuousFunction { /** * {@inheritDoc} */ - public Object getMinimum() { + public Double getMinimum() { double dimension = getDimension(); - return new Double((dimension * (dimension + 4) * (dimension - 1)) / 6); + return (dimension * (dimension + 4.0) * (dimension - 1.0)) / 6.0; } /** * {@inheritDoc} */ - public double evaluate(Vector x) { + public Double evaluate(Vector input) { double tmp1 = 0; double tmp2 = 0; for (int i = 0; i < getDimension(); ++i) { - tmp1 += (x.getReal(i) - 1) * (x.getReal(i) - 1); + tmp1 += (input.getReal(i) - 1) * (input.getReal(i) - 1); } for (int i = 1; i < getDimension(); ++i) { - tmp2 += x.getReal(i) * x.getReal(i - 1); + tmp2 += input.getReal(i) * input.getReal(i - 1); } return tmp1 - tmp2; } diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/Quadric.java b/src/main/java/net/sourceforge/cilib/functions/continuous/Quadric.java index b143aa4..085a309 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/Quadric.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/Quadric.java @@ -47,25 +47,25 @@ public class Quadric extends ContinuousFunction { * Get the minimum of the function. It is defined to be a value of <code>0.0</code>. * @return The function minimum value. */ - public Object getMinimum() { - return new Double(0); + public Double getMinimum() { + return 0.0; } - public Object getMaximum() { - return new Double(1248.2); + public Double getMaximum() { + return 1248.2; } /** * {@inheritDoc} */ - public double evaluate(Vector x) { + public Double evaluate(Vector input) { double sumsq = 0; for (int i = 0; i < getDimension(); ++i) { double sum = 0; for (int j = 0; j <= i; ++j) { - sum += x.getReal(j); + sum += input.getReal(j); } - sumsq += (sum) * (sum); + sumsq += sum * sum; } return sumsq; } diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/Quartic.java b/src/main/java/net/sourceforge/cilib/functions/continuous/Quartic.java index f3e4c85..3512e90 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/Quartic.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/Quartic.java @@ -52,25 +52,26 @@ public class Quartic extends ContinuousFunction { * * This is extra stuff i hope is added. */ - public Object getMinimum() { - return new Double(0); + public Double getMinimum() { + return 0.0; } /** * {@inheritDoc} */ - public Object getMaximum() { - return new Double(1248.2); + public Double getMaximum() { + return 1248.2; } /** * {@inheritDoc} */ - public double evaluate(Vector x) { + @Override + public Double evaluate(Vector input) { double result = 0.0; - for (int i = 0; i < x.getDimension(); i++) { - double square = x.getReal(i) * x.getReal(i); + for (int i = 0; i < input.getDimension(); i++) { + double square = input.getReal(i) * input.getReal(i); double square2 = square * square; result += i * square2; diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/Ripple.java b/src/main/java/net/sourceforge/cilib/functions/continuous/Ripple.java index 6c17711..4c7f212 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/Ripple.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/Ripple.java @@ -57,14 +57,15 @@ public class Ripple extends ContinuousFunction { /** * {@inheritDoc} */ - public Object getMinimum() { - return new Double(2.2); + public Double getMinimum() { + return 2.2; } /** * {@inheritDoc} */ - public double evaluate(Vector input) { + @Override + public Double evaluate(Vector input) { double x = input.getReal(0); double y = input.getReal(1); diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/Salomon.java b/src/main/java/net/sourceforge/cilib/functions/continuous/Salomon.java index ebe79e7..1efcc51 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/Salomon.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/Salomon.java @@ -56,20 +56,20 @@ public class Salomon extends ContinuousFunction { /** * {@inheritDoc} */ - public Object getMinimum() { - return new Double(0); + public Double getMinimum() { + return 0.0; } /** * {@inheritDoc} */ @Override - public double evaluate(Vector x) { + public Double evaluate(Vector input) { double functionValue = 0.0; double sumSquares = 0.0; - for (int i = 0; i < x.getDimension(); i++) { - sumSquares += x.getReal(i) * x.getReal(i); + for (int i = 0; i < input.getDimension(); i++) { + sumSquares += input.getReal(i) * input.getReal(i); } functionValue = -(Math.cos(2 * Math.PI * Math.sqrt(sumSquares))) + (0.1 * Math.sqrt(sumSquares)) + 1; diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/Schaffer2.java b/src/main/java/net/sourceforge/cilib/functions/continuous/Schaffer2.java index ed0118f..7ed48eb 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/Schaffer2.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/Schaffer2.java @@ -48,15 +48,16 @@ public class Schaffer2 extends ContinuousFunction { /** * {@inheritDoc} */ - public Object getMinimum() { - return new Double(0); + public Double getMinimum() { + return 0.0; } /** * {@inheritDoc} */ - public double evaluate(Vector x) { - double sum_squares = x.getReal(0) * x.getReal(0) + x.getReal(1) * x.getReal(1); + @Override + public Double evaluate(Vector input) { + double sum_squares = input.getReal(0) * input.getReal(0) + input.getReal(1) * input.getReal(1); double term1 = Math.pow(sum_squares, 0.25); double term2 = Math.pow(50 * Math.pow(sum_squares, 0.1), 2) + 1; return term1 * term2; diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/Schaffer6.java b/src/main/java/net/sourceforge/cilib/functions/continuous/Schaffer6.java index e39106a..f22e9e7 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/Schaffer6.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/Schaffer6.java @@ -66,8 +66,8 @@ public class Schaffer6 extends ContinuousFunction { * Initialise the function minimum value. * @return The minimum value as a <tt>Double</tt> object with value of 0.0 */ - public Object getMinimum() { - return new Double(-1.0); + public Double getMinimum() { + return -1.0; } @@ -77,7 +77,8 @@ public class Schaffer6 extends ContinuousFunction { * @param x The input vector to the function * @return A double value representing the function evaluation */ - public double evaluate(Vector input) { + @Override + public Double evaluate(Vector input) { double x = input.getReal(0); double y = input.getReal(1); diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/Schwefel.java b/src/main/java/net/sourceforge/cilib/functions/continuous/Schwefel.java index f2b5ea8..15b9b25 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/Schwefel.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/Schwefel.java @@ -65,17 +65,18 @@ public class Schwefel extends ContinuousFunction { // ? * Get the minimum of the function. It is defined to be a value of <code>0.0</code>. * @return The function minimum value. */ - public Object getMinimum() { - return new Double(0); + public Double getMinimum() { + return 0.0; } /** * {@inheritDoc} */ - public double evaluate(Vector x) { + @Override + public Double evaluate(Vector input) { double sum = 0; - for (int i = 0; i < x.getDimension(); ++i) { - sum += x.getReal(i) * Math.sin(Math.sqrt(Math.abs(x.getReal(i)))); + for (int i = 0; i < input.getDimension(); ++i) { + sum += input.getReal(i) * Math.sin(Math.sqrt(Math.abs(input.getReal(i)))); } sum += getDimension() * 4.18982887272434686131e+02; return sum; diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/SchwefelProblem1_2.java b/src/main/java/net/sourceforge/cilib/functions/continuous/SchwefelProblem1_2.java index 7f58749..acf4323 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/SchwefelProblem1_2.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/SchwefelProblem1_2.java @@ -57,15 +57,15 @@ public class SchwefelProblem1_2 extends ContinuousFunction { * Get the minimum of the function. It is defined to be a value of <code>0.0</code>. * @return The function minimum value. */ - public Object getMinimum() { - return new Double(0.0); + public Double getMinimum() { + return 0.0; } /** * {@inheritDoc} */ @Override - public double evaluate(Vector x) { + public Double evaluate(Vector input) { double sumsq = 0.0; double sum = 0.0; @@ -73,7 +73,7 @@ public class SchwefelProblem1_2 extends ContinuousFunction { sum = 0.0; for (int j = 0; j < i; j++) { - sum += x.getReal(j); + sum += input.getReal(j); } sumsq += sum * sum; diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/SchwefelProblem2_21.java b/src/main/java/net/sourceforge/cilib/functions/continuous/SchwefelProblem2_21.java index 3cb5b7b..3664a16 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/SchwefelProblem2_21.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/SchwefelProblem2_21.java @@ -58,19 +58,19 @@ public class SchwefelProblem2_21 extends ContinuousFunction { * Get the minimum of the function. It is defined to be a value of <code>0.0</code>. * @return The function minimum value. */ - public Object getMinimum() { - return new Double(0); + public Double getMinimum() { + return 0.0; } /** * {@inheritDoc} */ - public double evaluate(Vector x) { - double max = Math.abs(x.getReal(0)); + public Double evaluate(Vector input) { + double max = Math.abs(input.getReal(0)); double value; - for (int i = 1; i < x.getDimension(); ++i) { - value = Math.abs(x.getReal(i)); + for (int i = 1; i < input.getDimension(); ++i) { + value = Math.abs(input.getReal(i)); if (value > max) max = value; } diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/SchwefelProblem2_22.java b/src/main/java/net/sourceforge/cilib/functions/continuous/SchwefelProblem2_22.java index c19051c..260beec 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/SchwefelProblem2_22.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/SchwefelProblem2_22.java @@ -58,22 +58,23 @@ public class SchwefelProblem2_22 extends ContinuousFunction { /** * {@inheritDoc} */ - public Object getMinimum() { - return new Double(0); + public Double getMinimum() { + return 0.0; } /** * {@inheritDoc} */ - public double evaluate(Vector x) { + @Override + public Double evaluate(Vector input) { double sum = 0; double product = 0; for (int i = 0; i < getDimension(); ++i) { - sum += Math.abs(x.getReal(i)); + sum += Math.abs(input.getReal(i)); if (i == 0) - product = Math.abs(x.getReal(i)); + product = Math.abs(input.getReal(i)); else - product *= Math.abs(x.getReal(i)); + product *= Math.abs(input.getReal(i)); } return sum + product; diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/SchwefelProblem2_26.java b/src/main/java/net/sourceforge/cilib/functions/continuous/SchwefelProblem2_26.java index 6c4eca4..31aba5c 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/SchwefelProblem2_26.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/SchwefelProblem2_26.java @@ -53,18 +53,19 @@ public class SchwefelProblem2_26 extends ContinuousFunction { return new SchwefelProblem2_26(); } - public Object getMinimum() { - return new Double(-12569.5); + public Double getMinimum() { + return -12569.5; } /** * {@inheritDoc} */ - public double evaluate(Vector x) { + @Override + public Double evaluate(Vector input) { double sum = 0.0; for (int i = 0; i < getDimension(); i++) { - sum += x.getReal(i)*Math.sin(Math.sqrt(Math.abs(x.getReal(i)))); + sum += input.getReal(i)*Math.sin(Math.sqrt(Math.abs(input.getReal(i)))); } return -sum; } diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/ShekelN.java b/src/main/java/net/sourceforge/cilib/functions/continuous/ShekelN.java index 7f42eb4..131e2d6 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/ShekelN.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/ShekelN.java @@ -52,11 +52,11 @@ public class ShekelN extends ContinuousFunction { /** * {@inheritDoc} */ - public Object getMinimum() { + public Double getMinimum() { switch (n) { - case 5: return new Double(-10.15320); - case 7: return new Double(-10.40294); - case 10: return new Double(-10.53641); + case 5: return -10.15320; + case 7: return -10.40294; + case 10: return -10.53641; default: return super.getMinimum(); } } @@ -64,12 +64,13 @@ public class ShekelN extends ContinuousFunction { /** * {@inheritDoc} */ - public double evaluate(Vector x) { + @Override + public Double evaluate(Vector input) { double sum = 0; for (int i = 0; i < n; ++i) { double innerSum = 0; for (int j = 0; j < 4; ++j) { - innerSum += (x.getReal(j) - A[i][j]) * (x.getReal(j) - A[i][j]); + innerSum += (input.getReal(j) - A[i][j]) * (input.getReal(j) - A[i][j]); } sum += 1 / (innerSum + C[i]); } diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/ShekelsFoxholes.java b/src/main/java/net/sourceforge/cilib/functions/continuous/ShekelsFoxholes.java index 00f069e..4c24aa8 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/ShekelsFoxholes.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/ShekelsFoxholes.java @@ -62,20 +62,21 @@ public class ShekelsFoxholes extends ContinuousFunction { return new ShekelsFoxholes(); } - public Object getMinimum() { - return new Double(0.9980038); + public Double getMinimum() { + return 0.9980038; } /** * {@inheritDoc} */ - public double evaluate(Vector x) { + @Override + public Double evaluate(Vector input) { double result = 0.002; double resultI = 0.0; for (int i=1; i<=25; i++) { double resultJ = 0.0; for (int j=0; j<2; j++) { - resultJ += Math.pow(x.getReal(j) - a[j][i-1], 6); + resultJ += Math.pow(input.getReal(j) - a[j][i-1], 6); } resultJ = i + resultJ; resultI += 1/resultJ; diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/Shir.java b/src/main/java/net/sourceforge/cilib/functions/continuous/Shir.java index 228123b..ad42f0e 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/Shir.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/Shir.java @@ -67,14 +67,15 @@ public class Shir extends ContinuousFunction { /** * {@inheritDoc} */ - public Object getMaximum() { - return new Double(1); + public Double getMaximum() { + return 1.0; } /** * {@inheritDoc} */ - public double evaluate(Vector x) { + @Override + public Double evaluate(Vector input) { double sinTerm; double expTerm; double product = 1.0; @@ -82,8 +83,8 @@ public class Shir extends ContinuousFunction { for (int i = 0; i < getDimension(); i++) { sinTerm = 1.0; for (int k = 1; k <= sharpness; k++) - sinTerm *= Math.sin(l1*Math.PI*x.getReal(i) + l2); - expTerm = Math.exp(-l3*((x.getReal(i)-l4)/l5)*((x.getReal(i)-l4)/l5)); + sinTerm *= Math.sin(l1*Math.PI*input.getReal(i) + l2); + expTerm = Math.exp(-l3*((input.getReal(i)-l4)/l5)*((input.getReal(i)-l4)/l5)); product *= (sinTerm * expTerm); } diff --git a/src/main/java/net/sourceforge/cilib/functions/continuous/Shubert.java b/src/main/java/net/sourceforge/cilib/functions/continuous/Shubert.java index da4d7f6..0b411ec 100644 --- a/src/main/java/net/sourceforge/cilib/functions/continuous/Shubert.java +++ b/src/main/java/net/sourceforge/cilib/functions/continuous/Shubert.java @@ -56,19 +56,20 @@ public class Shubert extends ContinuousFunction { /** * {@inheritDoc} */ - public Object getMinimum() { - return new Double(-186.7309088); + public Double getMinimum() { + return -186.7309088; } /** * {@inheritDoc} */ - public double evaluate(Vector x) { + @Override + public Double evaluate(Vector input) { double result = 1.0; for (int i... [truncated message content] |