Class Improver<S extends Solution<S,I>,I extends Instance>

java.lang.Object
es.urjc.etsii.grafo.improve.Improver<S,I>
Type Parameters:
S - Solution class
I - Instance class
Direct Known Subclasses:
FlippyFlopImprover, Improver.NullImprover, Improver.SequentialImprover, LocalSearch, SimulatedAnnealing, VND

public abstract class Improver<S extends Solution<S,I>,I extends Instance> extends Object
Any method that improves a given solution is called an Improver. The classical example, but not limited to, is a local search.
  • Field Details

  • Constructor Details

    • Improver

      protected Improver(Objective<?,S,I> objective)
      Initialize common improver fields, to be called by subclasses
      Parameters:
      objective - MAXIMIZE to maximize scores returned by the given move, MINIMIZE for minimizing
  • Method Details

    • improve

      public abstract S improve(S solution)
      Improves a model.Solution Iterates until we run out of time, or we cannot improve the current es.urjc.etsii.grafo.solution any further
      Parameters:
      solution - model.Solution to improve
      Returns:
      Improved s
    • nul

      public static <S extends Solution<S, I>, I extends Instance> Improver<S,I> nul()
      Create a no operation improve method Returns the solution immediately without executing any operation
      Type Parameters:
      S - Solution class
      I - Instance class
      Returns:
      Null improve method
    • serial

      @SafeVarargs public static <S extends Solution<S, I>, I extends Instance> Improver<S,I> serial(Objective<?,S,I> objective, Improver<S,I>... improvers)
    • serial

      @SafeVarargs public static <S extends Solution<S, I>, I extends Instance> Improver<S,I> serial(Improver<S,I>... improvers)
    • getObjective

      public Objective<?,S,I> getObjective()