Trait sparse_linear_assignment::solver::AuctionSolver[][src]

pub trait AuctionSolver<I: UnsignedInt, T: AuctionSolver<I, T>> {
Show 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>; 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>)
[src]

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

fn num_rows(&self) -> I[src]

fn num_cols(&self) -> I[src]

fn num_rows_mut(&mut self) -> &mut I[src]

fn num_cols_mut(&mut self) -> &mut I[src]

fn prices(&self) -> &Vec<f64>[src]

fn i_starts_stops(&self) -> &Vec<I>[src]

fn j_counts(&self) -> &Vec<I>[src]

fn column_indices(&self) -> &Vec<I>[src]

fn values(&self) -> &Vec<f64>[src]

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

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

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

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

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

Provided methods

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

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

fn num_of_arcs(&self) -> usize[src]

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

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[src]

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

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>[src]

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

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

Implementors

impl<I: UnsignedInt + Integer> AuctionSolver<I, KhoslaSolver<I>> for KhoslaSolver<I>[src]

fn new(
    row_capacity: usize,
    column_capacity: usize,
    arcs_capacity: usize
) -> (Self, AuctionSolution<I>)
[src]

fn num_rows(&self) -> I[src]

fn num_cols(&self) -> I[src]

fn num_rows_mut(&mut self) -> &mut I[src]

fn num_cols_mut(&mut self) -> &mut I[src]

fn prices(&self) -> &Vec<f64>[src]

fn i_starts_stops(&self) -> &Vec<I>[src]

fn j_counts(&self) -> &Vec<I>[src]

fn column_indices(&self) -> &Vec<I>[src]

fn values(&self) -> &Vec<f64>[src]

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

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

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

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

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

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

impl<I: UnsignedInt> AuctionSolver<I, ForwardAuctionSolver<I>> for ForwardAuctionSolver<I>[src]

fn new(
    row_capacity: usize,
    column_capacity: usize,
    arcs_capacity: usize
) -> (Self, AuctionSolution<I>)
[src]

fn num_rows(&self) -> I[src]

fn num_cols(&self) -> I[src]

fn num_rows_mut(&mut self) -> &mut I[src]

fn num_cols_mut(&mut self) -> &mut I[src]

fn prices(&self) -> &Vec<f64>[src]

fn i_starts_stops(&self) -> &Vec<I>[src]

fn j_counts(&self) -> &Vec<I>[src]

fn column_indices(&self) -> &Vec<I>[src]

fn values(&self) -> &Vec<f64>[src]

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

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

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

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

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

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