pumpkin_core/optimisation/
mod.rs1use solution_callback::SolutionCallback;
4
5use crate::branching::Brancher;
6use crate::results::OptimisationResult;
7use crate::termination::TerminationCondition;
8use crate::Solver;
9
10pub mod linear_sat_unsat;
11pub mod linear_unsat_sat;
12pub mod solution_callback;
13
14pub trait OptimisationProcedure<B: Brancher, Callback: SolutionCallback<B>> {
15 fn optimise(
16 &mut self,
17 brancher: &mut B,
18 termination: &mut impl TerminationCondition,
19 solver: &mut Solver,
20 ) -> OptimisationResult;
21}
22
23#[derive(Debug, Clone, Copy, Default)]
25#[cfg_attr(feature = "clap", derive(clap::ValueEnum))]
26pub enum OptimisationStrategy {
27 #[default]
30 LinearSatUnsat,
31 LinearUnsatSat,
34}
35
36#[derive(Debug, Clone, Copy, PartialEq)]
38pub enum OptimisationDirection {
39 Maximise,
40 Minimise,
41}