Interface Optimisation.Integration<M extends Optimisation.Model,S extends Optimisation.Solver>

All Superinterfaces:
Optimisation
All Known Implementing Classes:
ConfiguredIntegration, ConvexSolver.ModelIntegration, ExpressionsBasedModel.Integration, GomorySolver.ModelIntegration, IntegerSolver.ModelIntegration, LinearSolver.ModelIntegration, LinearSolver.NewIntegration, LinearSolver.OldIntegration, ServiceIntegration
Enclosing interface:
Optimisation

public static interface Optimisation.Integration<M extends Optimisation.Model,S extends Optimisation.Solver> extends Optimisation
An Optimisation.Model implementation should not depend on any specific Optimisation.Solver, and Optimisation.Solver implementations should be usable independently of any Optimisation.Model. For every specific combination of Optimisation.Model and Optimisation.Solver (that should function together) there needs to be an Optimisation.Integration.
  • Method Details

    • build

      S build(M model)
      An integration must be able to instantiate a solver that can handle (any) model instance.
    • extractSolverState

      Optimisation.Result extractSolverState(M model)
      Extract state from the model and convert it to solver state.
    • isCapable

      boolean isCapable(M model)
      Returns:
      true if this solver (integration) can handle the input model
    • toModelState

      Optimisation.Result toModelState(Optimisation.Result solverState, M model)
      Convert solver state to model state. Transforming the solution (set of variable values) is the main concern. Adjusting the objective function value (if needed) is best handled elsewhere, and is not required here.

      The required behaviour here depends on how build(Optimisation.Model) is implemented, and is the reverse mapping of toSolverState(Optimisation.Result, Optimisation.Model).

    • toSolverState

      Optimisation.Result toSolverState(Optimisation.Result modelState, M model)
      Convert model state to solver state. Transforming the solution (set of variable values) is the main concern. Adjusting the objective function value (if needed) is best handled elsewhere, and is not required here.

      The required behaviour here depends on how build(Optimisation.Model) is implemented, and is the reverse mapping of toModelState(Result, Optimisation.Model).