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§
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
Sourcefn get_objective(&self, solution: &AuctionSolution<I>) -> f64
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.
fn get_toleration(&self, max_abs_cost: f64) -> f64
Sourcefn ecs_satisfied(
&self,
person_to_object: &[I],
eps: f64,
toleration: f64,
) -> bool
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
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>
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.