discrete_optimization.singlebatch.solvers package

Submodules

discrete_optimization.singlebatch.solvers.cpsat module

class discrete_optimization.singlebatch.solvers.cpsat.CpSatSingleBatchSolver(problem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]

Bases: OrtoolsCpSatSolver, WarmstartMixin

CP-SAT Solver for the Single Batch-Processing Machine Scheduling Problem.

Parameters:
  • problem – The batch processing problem instance

  • params_objective_function – Parameters for objective function

  • modeling – Type of CP-SAT model (BINARY or SCHEDULING)

  • symmetry_breaking – If True, applies symmetry breaking by ordering jobs by processing time and adding constraint x_jk <= x_kk for j <= k. From Trindade et al. (2018) “Modelling and symmetry breaking in scheduling problems on batch processing machines” (default: False)

hyperparameters: list[Hyperparameter] = [EnumHyperparameter(name='modeling', default=<ModelingBpm.BINARY: 0>, depends_on=None, name_in_kwargs='modeling')]

Hyperparameters available for this solver.

These hyperparameters are to be feed to **kwargs found in
  • __init__()

  • init_model() (when available)

  • solve()

init_model(**args: Any) None[source]

Init cp model and reset stored variables if any.

init_model_binary(**args: Any) None[source]
init_model_scheduling(**args: Any) None[source]
problem: SingleBatchProcessingProblem
retrieve_solution(cpsolvercb: CpSolverSolutionCallback) Solution[source]

Constructs a DO solution from the CP-SAT solver’s internal state.

set_warm_start(solution: BatchProcessingSolution) None[source]

Make the solver warm start from the given solution.

class discrete_optimization.singlebatch.solvers.cpsat.ModelingBpm(*values)[source]

Bases: Enum

BINARY = 0
SCHEDULING = 1

discrete_optimization.singlebatch.solvers.dp module

class discrete_optimization.singlebatch.solvers.dp.DpSingleBatchSolver(problem: Problem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]

Bases: DpSolver

Optimized Dynamic Programming Solver for Single Batch-Processing Machine using didppy.

init_model(**kwargs: Any) None[source]

Initialize internal model used to solve.

Can initialize a ortools, milp, gurobi, … model.

problem: SingleBatchProcessingProblem
retrieve_solution(sol: Solution) BatchProcessingSolution[source]

Parse the didppy state transition trace into a valid DO Solution.

sorted_indices: list[int]

discrete_optimization.singlebatch.solvers.lp module

class discrete_optimization.singlebatch.solvers.lp.BpmLpFormulation(*values)[source]

Bases: Enum

MILP formulation variants for batch processing machine scheduling.

NAIVE = 0
SYMMETRY_BREAKING = 1
class discrete_optimization.singlebatch.solvers.lp.GurobiSingleBatchSolver(problem: SingleBatchProcessingProblem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]

Bases: _BaseLpSingleBatchSolver, GurobiMilpSolver

Gurobi backend for the Single Batch LP Solver.

convert_to_variable_values(solution: Solution) dict['gurobipy.Var', float][source]

Convert a solution to a mapping between model variables and their values for warmstart.

class discrete_optimization.singlebatch.solvers.lp.MathOptSingleBatchSolver(problem: SingleBatchProcessingProblem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]

Bases: _BaseLpSingleBatchSolver, OrtoolsMathOptMilpSolver

MathOpt backend for the Single Batch LP Solver.

convert_to_variable_values(solution: Solution) dict[Variable, float][source]

Convert a solution to a mapping between model variables and their values for warmstart.

discrete_optimization.singlebatch.solvers.optal module

class discrete_optimization.singlebatch.solvers.optal.OptalSingleBatchSolver(problem: SingleBatchProcessingProblem, params_objective_function: ParamsObjectiveFunction | None = None, **kwargs: Any)[source]

Bases: OptalCpSolver, WarmstartMixin

OptalCP solver for the Single Batch-Processing Machine Scheduling Problem.

init_model(**kwargs: Any) None[source]

Instantiate a CP model instance

Afterwards, self.instance should not be None anymore.

problem: SingleBatchProcessingProblem
retrieve_solution(result: cp.SolutionEvent) BatchProcessingSolution[source]

Constructs a DO solution from the OptalCP solver’s internal state.

set_warm_start(solution: BatchProcessingSolution) None[source]

Injects an initial solution into the OptalCP solver.

Module contents