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//! - `full` - All native optimization features
36
37// ── Public API: Pack types re-exported from converge-pack ────────────
38
39pub mod packs;
40
41pub use converge_pack::{Pack, PackSolveResult, PackSuggestor};
42
43/// Extension trait for `SolveBudgets` that bridges to optimization-specific `SolverParams`.
44pub trait SolveBudgetsExt {
45 /// Convert to SolverParams for existing solvers
46 fn to_solver_params(&self, seed: u64) -> SolverParams;
47}
48
49impl SolveBudgetsExt for converge_pack::SolveBudgets {
50 fn to_solver_params(&self, seed: u64) -> SolverParams {
51 SolverParams {
52 time_limit_seconds: self.time_limit.as_secs_f64(),
53 iteration_limit: self.iteration_limit,
54 num_threads: 0,
55 random_seed: seed,
56 verbosity: 0,
57 }
58 }
59}
60
61// ── Algorithm implementations (used by Packs) ────────────────────────
62
63pub mod assignment;
64pub mod graph;
65pub mod knapsack;
66pub mod provider;
67pub mod scheduling;
68pub mod setcover;
69pub mod suggestors;
70
71#[cfg(feature = "sat")]
72pub mod cp;
73
74mod error;
75mod types;
76
77pub use error::{Error, Result};
78pub use types::*;