Trait relp::algorithm::two_phase::strategy::pivot_rule::PivotRule [−][src]
pub trait PivotRule<F> { fn new<IM, K>(tableau: &Tableau<IM, K>) -> Self
where
IM: InverseMaintener<F = F>,
K: Kind,
F: Column<<K::Column as Column>::F> + Cost<K::Cost>; fn select_primal_pivot_column<IM, K>(
&mut self,
tableau: &Tableau<IM, K>
) -> Option<SparseTuple<IM::F>>
where
IM: InverseMaintener<F = F>,
K: Kind,
F: Column<<K::Column as Column>::F> + Cost<K::Cost>; fn after_basis_update<IM, K>(
&mut self,
_info: BasisChangeComputationInfo<IM::F>,
_tableau: &Tableau<IM, K>
)
where
IM: InverseMaintener<F = F>,
K: Kind,
F: Column<<K::Column as Column>::F> + Cost<K::Cost>, { ... } }
Expand description
Deciding how to pivot.
During the Simplex method, one needs to decide how to move from basic solution to basic solution. The pivot rule describes that behavior.
Once the column has been selected for a primal pivot (or the row for a dual pivot), a row (column) needs to be found. This decision is currently made independent of the strategy.
Required methods
Create a new instance.
fn select_primal_pivot_column<IM, K>(
&mut self,
tableau: &Tableau<IM, K>
) -> Option<SparseTuple<IM::F>> where
IM: InverseMaintener<F = F>,
K: Kind,
F: Column<<K::Column as Column>::F> + Cost<K::Cost>,
fn select_primal_pivot_column<IM, K>(
&mut self,
tableau: &Tableau<IM, K>
) -> Option<SparseTuple<IM::F>> where
IM: InverseMaintener<F = F>,
K: Kind,
F: Column<<K::Column as Column>::F> + Cost<K::Cost>,
Column selection rule for the primal Simplex method.