Interface Model<T>

Type Parameters:
T - the type representing the state space of the problem
All Known Subinterfaces:
AcsModel<T>, AwAstarModel<T>, DdoModel<T>, LnsModel<T>
All Known Implementing Classes:
ExactModel

public interface Model<T>
Defines the core model interface for describing an optimization problem to be solved within the Decision Diagram Optimization (DDO) framework.

A Model encapsulates all components required to define, evaluate, and guide the resolution of an optimization problem. It specifies the Problem instance to solve and optionally provides custom heuristics, dominance relations, and debugging or verbosity configurations.

Implementations of this interface typically serve as the entry point for configuring solvers such as ExactSolver or SequentialSolver. Users can override the default methods to customize behavior such as lower bound evaluation, variable selection heuristics, or dominance checking.

  • Method Summary

    Modifier and Type
    Method
    Description
    default DebugLevel
    Returns the debugging level to apply during the compilation and solving phases.
    default Model<T>
    Returns a copy of this model but without dominance.
    default Model<T>
    Returns a copy of this model but without FastLowerBound.
    Returns the dominance checker used to prune dominated states from the search space.
    default FastLowerBound<T>
    Returns a heuristic that estimates a lower bound on the objective value for a given state.
    Returns the optimization problem instance associated with this model.
    default double
    Returns a precomputed upper bound on the optimal value.
    Returns the heuristic used to determine the next variable to branch on during decision diagram compilation.
    Returns the verbosity level of the solver when this model is executed.
  • Method Details

    • problem

      Problem<T> problem()
      Returns the optimization problem instance associated with this model.
      Returns:
      the Problem defining the structure, transitions, and objective function of the optimization task
    • lowerBound

      default FastLowerBound<T> lowerBound()
      Returns a heuristic that estimates a lower bound on the objective value for a given state.

      By default, this method provides a DefaultFastLowerBound instance, which can be overridden for problem-specific bound estimation.

      Returns:
      the FastLowerBound heuristic used to compute lower bounds
    • upperBound

      default double upperBound()
      Returns a precomputed upper bound on the optimal value.

      This bound allows to start the search with a better upper bound and start pruning earlier.

      By default, it returns Double.POSITIVE_INFINITY

      Returns:
      a precomputed upper bound on the optimal value
    • dominance

      default DominanceChecker<T> dominance()
      Returns the dominance checker used to prune dominated states from the search space.

      By default, this method provides a DefaultDominanceChecker instance, which can be replaced by custom dominance logic tailored to the problem.

      Returns:
      the DominanceChecker used for dominance testing
    • variableHeuristic

      default VariableHeuristic<T> variableHeuristic()
      Returns the heuristic used to determine the next variable to branch on during decision diagram compilation.

      By default, this method returns a DefaultVariableHeuristic instance.

      Returns:
      the VariableHeuristic guiding variable selection
    • verbosityLevel

      default VerbosityLevel verbosityLevel()
      Returns the verbosity level of the solver when this model is executed.

      By default, the verbosity level is VerbosityLevel.SILENT.

      Returns:
      the desired VerbosityLevel
    • debugMode

      default DebugLevel debugMode()
      Returns the debugging level to apply during the compilation and solving phases.

      By default, debugging is disabled (DebugLevel.OFF).

      Returns:
      the DebugLevel controlling debug behavior
    • disableDominance

      default Model<T> disableDominance()
      Returns a copy of this model but without dominance.
      Returns:
      A copy of this model but without dominance.
    • disableLowerBound

      default Model<T> disableLowerBound()
      Returns a copy of this model but without FastLowerBound.
      Returns:
      A copy of this model but without FastLowerBound.