Class DoubleSMSEMOA
- All Implemented Interfaces:
BaseLevelAlgorithm<org.uma.jmetal.solution.doublesolution.DoubleSolution>
This class provides a highly customizable version of SMS-EMOA, supporting:
- Various selection strategies (e.g., tournament, random)
- Multiple crossover operators (e.g., SBX, BLX-Alpha, whole arithmetic)
- Different mutation approaches (e.g., uniform, polynomial, non-uniform)
- Optional external archive integration
- Hypervolume-based selection for maintaining diversity
Usage example:
DoubleSMSEMOA algorithm = new DoubleSMSEMOA(problem, 100, 25000);
algorithm.parse(args);
EvolutionaryAlgorithm<DoubleSolution> smsemoa = algorithm.build();
smsemoa.run();
Non-configurable parameters such as the number of problem variables and, depending on the mutation operator, the maximum number of iterations or perturbation value, are set automatically based on the problem and algorithm configuration.
- See Also:
-
Field Summary
Fields inherited from class org.uma.evolver.algorithm.base.smsemoa.BaseSMSEMOA
maximumNumberOfEvaluations, parameterSpace, populationSize, problem, ranking -
Constructor Summary
ConstructorsConstructorDescriptionDoubleSMSEMOA(int populationSize, ParameterSpace parameterSpace) Constructs a DoubleSMSEMOA instance with the given population size and parameter space.DoubleSMSEMOA(org.uma.jmetal.problem.Problem<org.uma.jmetal.solution.doublesolution.DoubleSolution> problem, int populationSize, int maximumNumberOfEvaluations, ParameterSpace parameterSpace) Constructs a DoubleSMSEMOA instance with the given problem, population size, maximum number of evaluations, and parameter space. -
Method Summary
Modifier and TypeMethodDescriptionBaseLevelAlgorithm<org.uma.jmetal.solution.doublesolution.DoubleSolution> createInstance(org.uma.jmetal.problem.Problem<org.uma.jmetal.solution.doublesolution.DoubleSolution> problem, int maximumNumberOfEvaluations) Creates a new instance of DoubleSMSEMOA for the given problem and maximum number of evaluations.protected voidConfigures non-configurable parameters that depend on the problem or algorithm configuration.Methods inherited from class org.uma.evolver.algorithm.base.smsemoa.BaseSMSEMOA
build, createEvaluation, createExternalArchive, createInitialSolutions, createReplacement, createSelection, createTermination, createVariation, parameterSpaceMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.uma.evolver.algorithm.base.BaseLevelAlgorithm
parse
-
Constructor Details
-
DoubleSMSEMOA
Constructs a DoubleSMSEMOA instance with the given population size and parameter space.This constructor is typically used when the problem and maximum number of evaluations will be set later via the createInstance method.
- Parameters:
populationSize- the population size to use (must be > 0)parameterSpace- the parameter space containing the algorithm configuration- Throws:
IllegalArgumentException- if populationSize is less than or equal to 0
-
DoubleSMSEMOA
public DoubleSMSEMOA(org.uma.jmetal.problem.Problem<org.uma.jmetal.solution.doublesolution.DoubleSolution> problem, int populationSize, int maximumNumberOfEvaluations, ParameterSpace parameterSpace) Constructs a DoubleSMSEMOA instance with the given problem, population size, maximum number of evaluations, and parameter space.- Parameters:
problem- the problem to solve (must not be null)populationSize- the population size to use (must be > 0)maximumNumberOfEvaluations- the maximum number of evaluations (must be > 0)parameterSpace- the parameter space containing the algorithm configuration- Throws:
IllegalArgumentException- if populationSize or maximumNumberOfEvaluations is less than or equal to 0NullPointerException- if problem or parameterSpace is null
-
-
Method Details
-
createInstance
public BaseLevelAlgorithm<org.uma.jmetal.solution.doublesolution.DoubleSolution> createInstance(org.uma.jmetal.problem.Problem<org.uma.jmetal.solution.doublesolution.DoubleSolution> problem, int maximumNumberOfEvaluations) Creates a new instance of DoubleSMSEMOA for the given problem and maximum number of evaluations.This method creates a new instance using the current configuration but with the specified problem and evaluation budget. The parameter space is cloned to ensure independent instances.
- Parameters:
problem- the problem to solve (must not be null)maximumNumberOfEvaluations- the evaluation budget (must be > 0)- Returns:
- a new configured instance of DoubleSMSEMOA
- Throws:
IllegalArgumentException- if maximumNumberOfEvaluations is less than or equal to 0NullPointerException- if problem is null
-
setNonConfigurableParameters
protected void setNonConfigurableParameters()Configures non-configurable parameters that depend on the problem or algorithm configuration.This method is automatically called during the build process and sets up various parameters that cannot be directly configured through the parameter space, including:
- The number of problem variables for the mutation operator
- The maximum number of iterations for non-uniform mutation (if used)
- The perturbation value for uniform mutation (if used)
- The offspring population size for variation operators
- Specified by:
setNonConfigurableParametersin classBaseSMSEMOA<org.uma.jmetal.solution.doublesolution.DoubleSolution>- Throws:
IllegalStateException- if the required parameters are not properly configuredNullPointerException- if the problem or required parameters are not set
-