Class DirectedStep

java.lang.Object
xal.extension.solver.algorithm.SearchAlgorithm
xal.extension.solver.algorithm.DirectedStep
All Implemented Interfaces:
AlgorithmScheduleListener, SolutionJudgeListener

public class DirectedStep extends SearchAlgorithm
Based on the acceleration-step of Forsythe and Motzkin
  • Constructor Details

    • DirectedStep

      public DirectedStep()
  • Method Details

    • reset

      public void reset()
      reset the algorithm for searching from scratch
      Overrides:
      reset in class SearchAlgorithm
    • getLabel

      public String getLabel()
      Return the label for a search algorithm.
      Specified by:
      getLabel in class SearchAlgorithm
      Returns:
      The trial point.
    • performRun

      public void performRun(AlgorithmSchedule algorithmSchedule)
      Calculate the next few trial points.
      Specified by:
      performRun in class SearchAlgorithm
    • performAcceleratedSearch

      protected Trial performAcceleratedSearch(Trial originTrial)
      Perform an accelerated search.
    • performGradientAndLinearSearch

      protected Trial performGradientAndLinearSearch(Trial originTrial)
      Perform a gradient calculation followed by a linear search along the gradient.
    • calculateGradient

      protected double[] calculateGradient(Trial originTrial)
      Calculate the gradient for the specified point
      Returns:
      the gradient at the specified point
    • calculateVector

      protected double[] calculateVector(TrialPoint originPoint, TrialPoint targetPoint)
      Calculate the vector from the origin point to the target point
      Returns:
      the vector from the origin point to the target point
    • searchAlongGradient

      protected Trial searchAlongGradient(double[] gradient, Trial originTrial)
      Search along the gradient from the origin point.
    • trialPointAlongGradient

      protected static TrialPoint trialPointAlongGradient(double[] gradient, TrialPoint originPoint, double scale, List<Variable> variables)
      Get a new trial point along the gradient.
    • getMinEvaluationsPerRun

      public int getMinEvaluationsPerRun()
      Get the minimum number of evaluations per run. Subclasses may want to override this method.
      Overrides:
      getMinEvaluationsPerRun in class SearchAlgorithm
      Returns:
      the minimum number of evaluation per run.
    • globalRating

      public int globalRating()
      Returns the global rating which in an integer between 0 and 10.
      Returns:
      The global rating for this algorithm.
    • localRating

      public int localRating()
      Returns the local rating which is an integer between 0 and 10.
      Returns:
      The local rating for this algorithm.
    • algorithmAvailable

      public void algorithmAvailable(SearchAlgorithm source)
      Handle a message that an algorithm is available.
      Parameters:
      source - The source of the available algorithm.
    • algorithmUnavailable

      public void algorithmUnavailable(SearchAlgorithm source)
      Handle a message that an algorithm is not available.
      Parameters:
      source - The source of the available algorithm.
    • trialScored

      public void trialScored(AlgorithmSchedule schedule, Trial trial)
      Handle a message that a trial has been scored.
      Specified by:
      trialScored in interface AlgorithmScheduleListener
      Overrides:
      trialScored in class SearchAlgorithm
      Parameters:
      trial - The trial that was scored.
      schedule - the schedule providing this event
    • trialVetoed

      public void trialVetoed(AlgorithmSchedule schedule, Trial trial)
      Handle a message that a trial has been vetoed.
      Specified by:
      trialVetoed in interface AlgorithmScheduleListener
      Overrides:
      trialVetoed in class SearchAlgorithm
      Parameters:
      trial - The trial that was vetoed.
      schedule - the schedule providing this event
    • foundNewOptimalSolution

      public void foundNewOptimalSolution(SolutionJudge source, List<Trial> solutions, Trial solution)
      Handle a message that a new optimal solution has been found.
      Specified by:
      foundNewOptimalSolution in interface SolutionJudgeListener
      Overrides:
      foundNewOptimalSolution in class SearchAlgorithm
      Parameters:
      source - The source of the new optimal solution.
      solutions - The list of solutions.
      solution - The new optimal solution.