converge_optimization/lib.rs
1//! # converge-optimization
2//!
3//! Optimization solvers as first-class Suggestors for the Converge Engine.
4//!
5//! Every solver is accessed through [`PackSuggestor`] -- the ONLY public
6//! interface. Register it in a formation and let it converge alongside
7//! LLM agents, policy gates, and other Suggestors.
8//!
9//! ## Usage
10//!
11//! ```rust,ignore
12//! use converge_pack::{PackSuggestor, ContextKey};
13//! use converge_optimization::packs::budget_allocation::BudgetAllocationPack;
14//!
15//! let solver = PackSuggestor::new(
16//! BudgetAllocationPack,
17//! ContextKey::Seeds,
18//! ContextKey::Strategies,
19//! );
20//! engine.register_suggestor(solver);
21//! ```
22//!
23//! ## Available Packs (21)
24//!
25//! LeadRouting, MeetingScheduler, BudgetAllocation, CapacityPlanning,
26//! InventoryReplenishment, InventoryRebalancing, AnomalyTriage,
27//! PricingGuardrails, ShippingChoice, VendorShortlist, BacklogPrioritization,
28//! AssignmentPack, BinPacking, ConstraintProgramming, FacilityLocation,
29//! GraphPartitioning, JobShopScheduling, NetworkFlow, StaffRostering,
30//! TravelingSalesman, VehicleRouting
31//!
32//! ## Feature Flags
33//!
34//! - `sat` - Varisat SAT solver for constraint programming
35//! - `ffi` - OR-Tools C++ FFI bindings
36//! - `full` - All features
37
38// ── Public API: Pack types re-exported from converge-pack ────────────
39
40pub mod packs;
41
42pub use converge_pack::{Pack, PackSolveResult, PackSuggestor};
43
44/// Extension trait for `SolveBudgets` that bridges to optimization-specific `SolverParams`.
45pub trait SolveBudgetsExt {
46 /// Convert to SolverParams for existing solvers
47 fn to_solver_params(&self, seed: u64) -> SolverParams;
48}
49
50impl SolveBudgetsExt for converge_pack::SolveBudgets {
51 fn to_solver_params(&self, seed: u64) -> SolverParams {
52 SolverParams {
53 time_limit_seconds: self.time_limit.as_secs_f64(),
54 iteration_limit: self.iteration_limit,
55 num_threads: 0,
56 random_seed: seed,
57 verbosity: 0,
58 }
59 }
60}
61
62// ── Algorithm implementations (used by Packs) ────────────────────────
63
64pub mod assignment;
65pub mod graph;
66pub mod knapsack;
67pub mod provider;
68pub mod scheduling;
69pub mod setcover;
70pub mod suggestors;
71
72#[cfg(feature = "sat")]
73pub mod cp;
74
75mod error;
76mod types;
77
78pub use error::{Error, Result};
79pub use types::*;