Class MetaOptimizationProblem<S extends org.uma.jmetal.solution.Solution<?>>
java.lang.Object
org.uma.jmetal.problem.doubleproblem.impl.AbstractDoubleProblem
org.uma.evolver.metaoptimizationproblem.MetaOptimizationProblem<S>
- Type Parameters:
S- The type of solutions used by the base algorithm being optimized
- All Implemented Interfaces:
Serializable,org.uma.jmetal.problem.doubleproblem.DoubleProblem,org.uma.jmetal.problem.Problem<org.uma.jmetal.solution.doublesolution.DoubleSolution>
public class MetaOptimizationProblem<S extends org.uma.jmetal.solution.Solution<?>>
extends org.uma.jmetal.problem.doubleproblem.impl.AbstractDoubleProblem
A meta-optimization problem that optimizes the parameters of an optimization algorithm
by evaluating its performance across multiple problem instances using quality indicators.
This class implements a meta-optimization approach where the parameters of a base algorithm are automatically tuned by evaluating its performance on multiple problem instances using various quality indicators. The optimization objective is to find parameter settings that work well across all problem instances in the training set.
Key features:
- Supports optimization of any configurable algorithm that implements
BaseLevelAlgorithm - Allows evaluation on multiple problem instances with different characteristics
- Uses quality indicators to assess algorithm performance
- Supports multiple independent runs to account for stochasticity
- Provides flexible evaluation budget control through
EvaluationBudgetStrategy
Typical usage involves:
- Define the base algorithm with its parameter space
- Select a set of training problems
- Configure quality indicators for evaluation
- Set up the evaluation budget strategy
- Use an optimization algorithm to solve the meta-optimization problem
- See Also:
-
Field Summary
Fields inherited from class org.uma.jmetal.problem.doubleproblem.impl.AbstractDoubleProblem
bounds, name, numberOfConstraints, numberOfObjectives -
Constructor Summary
ConstructorsConstructorDescriptionMetaOptimizationProblem(BaseLevelAlgorithm<S> baseAlgorithm, List<org.uma.jmetal.problem.Problem<S>> problems, List<String> referenceFrontFileNames, List<org.uma.jmetal.qualityindicator.QualityIndicator> indicators, EvaluationBudgetStrategy evaluationBudgetStrategy, int numberOfIndependentRuns) Constructs a new meta-optimization problem instance. -
Method Summary
Modifier and TypeMethodDescriptionorg.uma.jmetal.solution.doublesolution.DoubleSolutionevaluate(org.uma.jmetal.solution.doublesolution.DoubleSolution solution) Evaluates a solution by running the base algorithm with the specified parameter settings and computing the quality indicators.Returns the evaluation strategy being used.name()Returns the name of the problem.intReturns the number of constraints in the problem.intReturns the number of objectives in the problem.intReturns the number of variables (parameters) in the problem.Returns the list of parameters being optimized.Methods inherited from class org.uma.jmetal.problem.doubleproblem.impl.AbstractDoubleProblem
createSolution, name, numberOfConstraints, numberOfObjectives, variableBounds, variableBounds
-
Constructor Details
-
MetaOptimizationProblem
public MetaOptimizationProblem(BaseLevelAlgorithm<S> baseAlgorithm, List<org.uma.jmetal.problem.Problem<S>> problems, List<String> referenceFrontFileNames, List<org.uma.jmetal.qualityindicator.QualityIndicator> indicators, EvaluationBudgetStrategy evaluationBudgetStrategy, int numberOfIndependentRuns) Constructs a new meta-optimization problem instance.- Parameters:
baseAlgorithm- the base algorithm whose parameters will be optimized (must not be null)problems- the list of problems to evaluate the algorithm on (must not be null or empty)referenceFrontFileNames- list of file paths containing reference fronts for each problem (must match the size of problems list)indicators- list of quality indicators to evaluate solutions (must not be null or empty)evaluationBudgetStrategy- strategy for determining the evaluation budget for each problem (must not be null and must be compatible with the number of problems)numberOfIndependentRuns- number of independent runs to perform for each evaluation (must be positive)- Throws:
NullPointerException- if any parameter is nullIllegalArgumentException- if the sizes of problems and referenceFrontFileNames don't match, if the evaluation budget strategy is not compatible with the number of problems, or if numberOfIndependentRuns is not positive- See Also:
-
-
Method Details
-
numberOfVariables
public int numberOfVariables()Returns the number of variables (parameters) in the problem.- Specified by:
numberOfVariablesin interfaceorg.uma.jmetal.problem.Problem<S extends org.uma.jmetal.solution.Solution<?>>- Overrides:
numberOfVariablesin classorg.uma.jmetal.problem.doubleproblem.impl.AbstractDoubleProblem- Returns:
- the number of parameters being optimized
-
numberOfObjectives
public int numberOfObjectives()Returns the number of objectives in the problem.- Specified by:
numberOfObjectivesin interfaceorg.uma.jmetal.problem.Problem<S extends org.uma.jmetal.solution.Solution<?>>- Overrides:
numberOfObjectivesin classorg.uma.jmetal.problem.doubleproblem.impl.AbstractDoubleProblem- Returns:
- the number of quality indicators being used
-
numberOfConstraints
public int numberOfConstraints()Returns the number of constraints in the problem. This implementation returns 0 as the problem is unconstrained.- Specified by:
numberOfConstraintsin interfaceorg.uma.jmetal.problem.Problem<S extends org.uma.jmetal.solution.Solution<?>>- Overrides:
numberOfConstraintsin classorg.uma.jmetal.problem.doubleproblem.impl.AbstractDoubleProblem- Returns:
- 0 (no constraints)
-
name
-
evaluationBudgetStrategy
Returns the evaluation strategy being used.- Returns:
- the evaluation strategy
-
parameters
-
evaluate
public org.uma.jmetal.solution.doublesolution.DoubleSolution evaluate(org.uma.jmetal.solution.doublesolution.DoubleSolution solution) Evaluates a solution by running the base algorithm with the specified parameter settings and computing the quality indicators.- Parameters:
solution- the solution containing the parameter values to evaluate- Returns:
- the evaluated solution with objective values set
- Throws:
NullPointerException- if solution is nullIllegalArgumentException- if the solution's variables don't match the expected number of parameters
-