Expand description
§RMP Route Optimizer
A high-performance route optimization library for waste collection, logistics, and delivery services using Eulerian circuit algorithms.
§Features
- Eulerian Circuit Optimization: Solves the Chinese Postman Problem for efficient route planning
- Geographic Awareness: Uses Haversine distance for accurate real-world routing
- Side-of-Street Routing: Supports pickup side constraints (left/right/either)
- Graph Augmentation: Automatically adds edges to make graphs Eulerian
- High Performance: Optimized Rust implementation with minimal allocations
§Example
use rmp_route_optimizer::{RouteOptimizer, Node, Edge, PickupSide};
// Create nodes (locations)
let nodes = vec![
Node { id: 1, lat: 40.7128, lon: -74.0060 },
Node { id: 2, lat: 40.7138, lon: -74.0070 },
Node { id: 3, lat: 40.7148, lon: -74.0080 },
];
// Create edges (roads)
let edges = vec![
Edge { from: 1, to: 2, cost: 100.0, oneway: false, side: PickupSide::Either },
Edge { from: 2, to: 3, cost: 100.0, oneway: false, side: PickupSide::Either },
Edge { from: 3, to: 1, cost: 100.0, oneway: false, side: PickupSide::Either },
];
// Optimize route
let optimizer = RouteOptimizer::new(nodes, edges);
let circuit = optimizer.optimize_eulerian(1, false).unwrap();
println!("Optimized route: {:?}", circuit.nodes);
println!("Total cost: {}", circuit.total_cost);Re-exports§
pub use error::OptimizationError;pub use error::Result;pub use optimizer::RouteOptimizer;pub use types::Edge;pub use types::EulerianCircuit;pub use types::Node;pub use types::PickupSide;
Modules§
- error
- Error types for route optimization
- optimizer
- Route optimization implementation using Eulerian circuits
- types
- Core types for route optimization
Constants§
- VERSION
- Library version