AuctionSolver

Trait AuctionSolver 

Source
pub trait AuctionSolver<I: UnsignedInt, T: AuctionSolver<I, T>> {
Show 25 methods // Required methods fn new( row_capacity: usize, column_capacity: usize, arcs_capacity: usize, ) -> (T, AuctionSolution<I>); fn solve( &mut self, solution: &mut AuctionSolution<I>, maximize: bool, eps: Option<f64>, ) -> Result<(), Error>; fn num_rows(&self) -> I; fn num_cols(&self) -> I; fn num_rows_mut(&mut self) -> &mut I; fn num_cols_mut(&mut self) -> &mut I; fn prices(&self) -> &Vec<f64>; fn i_starts_stops(&self) -> &Vec<I>; fn j_counts(&self) -> &Vec<I>; fn column_indices(&self) -> &Vec<I>; fn values(&self) -> &Vec<f64>; fn prices_mut(&mut self) -> &mut Vec<f64>; fn i_starts_stops_mut(&mut self) -> &mut Vec<I>; fn j_counts_mut(&mut self) -> &mut Vec<I>; fn column_indices_mut(&mut self) -> &mut Vec<I>; fn values_mut(&mut self) -> &mut Vec<f64>; // Provided methods fn add_value(&mut self, row: I, column: I, value: f64) -> Result<(), Error> { ... } fn extend_from_values( &mut self, row: I, columns: &[I], values: &[f64], ) -> Result<(), Error> { ... } fn num_of_arcs(&self) -> usize { ... } fn get_objective(&self, solution: &AuctionSolution<I>) -> f64 { ... } fn get_toleration(&self, max_abs_cost: f64) -> f64 { ... } fn ecs_satisfied( &self, person_to_object: &[I], eps: f64, toleration: f64, ) -> bool { ... } fn init(&mut self, num_rows: I, num_cols: I) -> Result<(), Error> { ... } fn init_solve(&mut self, solution: &mut AuctionSolution<I>, maximize: bool) { ... } fn validate_input(&self) -> Result<(), Error> { ... }
}

Required Methods§

Source

fn new( row_capacity: usize, column_capacity: usize, arcs_capacity: usize, ) -> (T, AuctionSolution<I>)

Source

fn solve( &mut self, solution: &mut AuctionSolution<I>, maximize: bool, eps: Option<f64>, ) -> Result<(), Error>

Source

fn num_rows(&self) -> I

Source

fn num_cols(&self) -> I

Source

fn num_rows_mut(&mut self) -> &mut I

Source

fn num_cols_mut(&mut self) -> &mut I

Source

fn prices(&self) -> &Vec<f64>

Source

fn i_starts_stops(&self) -> &Vec<I>

Source

fn j_counts(&self) -> &Vec<I>

Source

fn column_indices(&self) -> &Vec<I>

Source

fn values(&self) -> &Vec<f64>

Source

fn prices_mut(&mut self) -> &mut Vec<f64>

Source

fn i_starts_stops_mut(&mut self) -> &mut Vec<I>

Source

fn j_counts_mut(&mut self) -> &mut Vec<I>

Source

fn column_indices_mut(&mut self) -> &mut Vec<I>

Source

fn values_mut(&mut self) -> &mut Vec<f64>

Provided Methods§

Source

fn add_value(&mut self, row: I, column: I, value: f64) -> Result<(), Error>

Source

fn extend_from_values( &mut self, row: I, columns: &[I], values: &[f64], ) -> Result<(), Error>

Source

fn num_of_arcs(&self) -> usize

Source

fn get_objective(&self, solution: &AuctionSolution<I>) -> f64

Returns current objective value of assignments. Checks for the sign of the first element to return positive objective.

Source

fn get_toleration(&self, max_abs_cost: f64) -> f64

Source

fn ecs_satisfied( &self, person_to_object: &[I], eps: f64, toleration: f64, ) -> bool

Checks if current solution is a complete solution that satisfies eps-complementary slackness.

As eps-complementary slackness is preserved through each iteration, and we start with an empty set, it is true that any solution satisfies eps-complementary slackness. Will add a check to be sure Returns True if eps-complementary slackness condition is satisfied e-CS: for k (all valid j for a given i), max (a_ik - p_k) - eps <= a_ij - p_j

Source

fn init(&mut self, num_rows: I, num_cols: I) -> Result<(), Error>

Source

fn init_solve(&mut self, solution: &mut AuctionSolution<I>, maximize: bool)

Source

fn validate_input(&self) -> Result<(), Error>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§