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("configuration evaluation failed: {0}")]
27 Evaluation(#[from] crate::traits::EvaluationError),
28 #[error("aggregate combination failed: {0}")]
29 Aggregation(#[from] crate::types::AggregationError),
30 #[error("no reference-solver registration for {0}")]
31 MissingRegistration(String),
32 #[error("invalid reference-solver registration: {0}")]
33 RegistrationTypeMismatch(String),
34 #[error("brute-force search space cardinality exceeds usize for dimensions {0:?}")]
35 SearchSpaceOverflow(Vec<usize>),
36 #[error("integer overflow while {0}")]
37 IntegerOverflow(String),
38 #[error("inexact integer-to-float conversion: {0}")]
39 InexactFloatConversion(#[from] crate::types::ExactI64ToF64Error),
40 #[error("non-finite floating-point result while {0}")]
41 NonFiniteResult(String),
42 #[error("solver capability registry is invalid: {0}")]
43 InvalidRegistry(&'static RegistryBuildError),
44 #[error("No ILP pipeline is registered for {0}")]
45 MissingIlpCapability(String),
46 #[error("No customized solver is registered for {0}")]
47 MissingCustomizedCapability(String),
48 #[error("ILP solver failed for {problem}: {source}")]
49 IlpSolve {
50 problem: String,
51 #[source]
52 source: ILPSolveError,
53 },
54}