problemreductions/solvers/
mod.rs1mod brute_force;
4pub(crate) mod customized;
5pub mod decision_search;
6mod pipelines;
7mod registry;
8mod resolver;
9
10pub mod ilp;
11
12#[doc(hidden)]
13pub use brute_force::BruteForceRegistration;
14pub use brute_force::{BruteForce, BruteForceProblem};
15pub use registry::{
16 brute_force_dimensions, solver_capabilities, CustomizedSolverCapability, ExactProblemKey,
17 IlpSolverCapability, RegistryBuildError, SolverCapabilities,
18};
19pub use resolver::{solve, SolveOutcome, SolveResult, SolverExecution, SolverRequest};
20
21pub use ilp::{ILPSolveError, ILPSolver};
22
23#[derive(Debug, thiserror::Error)]
25pub enum SolveError {
26 #[error("cannot allocate solver storage: {0}")]
27 Allocation(#[from] std::collections::TryReserveError),
28 #[error("invalid decision-search interval [{lower}, {upper}]")]
29 InvalidSearchInterval { lower: i64, upper: i64 },
30 #[error("optimum lies outside decision-search interval [{lower}, {upper}]")]
31 OptimumOutsideSearchInterval { lower: i64, upper: i64 },
32 #[error("configuration evaluation failed: {0}")]
33 Evaluation(#[from] crate::traits::EvaluationError),
34 #[error("aggregate combination failed: {0}")]
35 Aggregation(#[from] crate::types::AggregationError),
36 #[error("no reference-solver registration for {0}")]
37 MissingRegistration(String),
38 #[error("invalid reference-solver registration: {0}")]
39 RegistrationTypeMismatch(String),
40 #[error("brute-force search space cardinality exceeds usize for dimensions {0:?}")]
41 SearchSpaceOverflow(Vec<usize>),
42 #[error("integer overflow while {0}")]
43 IntegerOverflow(String),
44 #[error("inexact integer-to-float conversion: {0}")]
45 InexactFloatConversion(#[from] crate::types::ExactI64ToF64Error),
46 #[error("non-finite floating-point result while {0}")]
47 NonFiniteResult(String),
48 #[error("solver capability registry is invalid: {0}")]
49 InvalidRegistry(&'static RegistryBuildError),
50 #[error("No ILP pipeline is registered for {0}")]
51 MissingIlpCapability(String),
52 #[error("No customized solver is registered for {0}")]
53 MissingCustomizedCapability(String),
54 #[error("ILP solver failed for {problem}: {source}")]
55 IlpSolve {
56 problem: String,
57 #[source]
58 source: ILPSolveError,
59 },
60}