pub struct Solver { /* private fields */ }
Expand description
Solves a Vehicle Routing Problem and returns a (solution, its cost) pair in case of success or error description, if solution cannot be found.
A newly created builder instance is pre-configured with some reasonable defaults for mid-size problems (~200), so there is no need to call any of its methods.
Examples
This example shows how to construct default configuration for the solver, override some of default metaheuristic parameters using fluent interface methods, and run the solver:
use vrp_core::prelude::*;
// create your VRP problem
let problem: Arc<Problem> = create_example_problem();
let environment = Arc::new(Environment::new_with_time_quota(Some(60)));
let telemetry_mode = get_default_telemetry_mode(environment.logger.clone());
// build solver config using pre-build builder with defaults and then override some parameters
let config = create_default_config_builder(problem.clone(), environment, telemetry_mode)
.with_max_time(Some(60))
.with_max_generations(Some(100))
.build()?;
// run solver and get the best known solution.
let solution = Solver::new(problem, config).solve()?;
assert_eq!(solution.cost, 42.);
assert_eq!(solution.routes.len(), 1);
assert_eq!(solution.unassigned.len(), 0);
Implementations§
source§impl Solver
impl Solver
sourcepub fn new(
problem: Arc<Problem>,
config: EvolutionConfig<RefinementContext, GoalContext, InsertionContext>
) -> Self
pub fn new( problem: Arc<Problem>, config: EvolutionConfig<RefinementContext, GoalContext, InsertionContext> ) -> Self
Tries to create an instance of Solver
from provided config.
sourcepub fn solve(self) -> Result<Solution, GenericError>
pub fn solve(self) -> Result<Solution, GenericError>
Solves a Vehicle Routing Problem and returns a feasible solution in case of success or error description, if solution cannot be found.
Auto Trait Implementations§
impl !RefUnwindSafe for Solver
impl !Send for Solver
impl !Sync for Solver
impl Unpin for Solver
impl !UnwindSafe for Solver
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more