Class RotatedProblem

java.lang.Object
org.moeaframework.problem.ProblemWrapper
org.moeaframework.problem.RotatedProblem
All Implemented Interfaces:
AutoCloseable, Problem

public class RotatedProblem extends ProblemWrapper
Decorator to create rotated variants of test problems. The rotation is defined by a rotation matrix, which should be orthogonal and have a determinant of 1. See RotationMatrixBuilder for a utility to quickly construct rotation matrices.

Regardless of the rotation, all rotated instances use expanded lower and upper bounds for the decision variables. An additional constraint is added to account for solutions existing in this expanded region, which are not in the original unrotated problem. This expansion is consistent across all rotations, which ensures the volume of the constraint-violating expanded region is constant across all instances of a problem.

  • Constructor Details

    • RotatedProblem

      public RotatedProblem(Problem problem, org.apache.commons.math3.linear.RealMatrix rotation)
      Decorates the specified problem, creating a rotated instance using the specified rotation matrix.
      Parameters:
      problem - the original unrotated problem
      rotation - the rotation matrix
  • Method Details

    • getName

      public String getName()
      Description copied from interface: Problem
      Returns the user-friendly name for this problem.
      Specified by:
      getName in interface Problem
      Overrides:
      getName in class ProblemWrapper
      Returns:
      the user-friendly name for this problem
    • getNumberOfConstraints

      public int getNumberOfConstraints()
      Description copied from interface: Problem
      Returns the number of constraints defined by this problem.
      Specified by:
      getNumberOfConstraints in interface Problem
      Overrides:
      getNumberOfConstraints in class ProblemWrapper
      Returns:
      the number of constraints defined by this problem
    • evaluate

      public void evaluate(Solution solution)
      Description copied from interface: Problem
      Evaluates the solution, updating the solution's objectives in place. Algorithms must explicitly call this method when appropriate to evaluate new solutions or reevaluate modified solutions.
      Specified by:
      evaluate in interface Problem
      Overrides:
      evaluate in class ProblemWrapper
      Parameters:
      solution - the solution to be evaluated
    • newSolution

      public Solution newSolution()
      Description copied from interface: Problem
      Returns a new solution for this problem. Implementations must initialize the variables so that the valid range of values is defined, but typically leave the actual value at a default or undefined state.
      Specified by:
      newSolution in interface Problem
      Overrides:
      newSolution in class ProblemWrapper
      Returns:
      a new solution for this problem