pub struct FrankWolfeOptimizer {
pub max_iter: usize,
pub tol: f64,
}Expand description
Frank-Wolfe (conditional gradient) method for constrained convex problems.
Minimises a smooth convex function f over a compact convex feasible set
by solving a linear minimisation oracle at each step.
Fields§
§max_iter: usizeMaximum number of iterations.
tol: f64Tolerance on the Frank-Wolfe duality gap.
Implementations§
Source§impl FrankWolfeOptimizer
impl FrankWolfeOptimizer
Sourcepub fn minimize(
&self,
x_init: Vec<f64>,
grad_f: &dyn Fn(&[f64]) -> Vec<f64>,
lmo: &dyn Fn(&[f64]) -> Vec<f64>,
f_val: &dyn Fn(&[f64]) -> f64,
) -> FrankWolfeResult
pub fn minimize( &self, x_init: Vec<f64>, grad_f: &dyn Fn(&[f64]) -> Vec<f64>, lmo: &dyn Fn(&[f64]) -> Vec<f64>, f_val: &dyn Fn(&[f64]) -> f64, ) -> FrankWolfeResult
Run Frank-Wolfe minimisation.
grad_f: gradient oracle∇f(x).lmo: linear minimisation oracle: givend, returnargmin_{s ∈ C} d·s.f_val: function value oraclef(x).x_init: feasible starting point.
Auto Trait Implementations§
impl Freeze for FrankWolfeOptimizer
impl RefUnwindSafe for FrankWolfeOptimizer
impl Send for FrankWolfeOptimizer
impl Sync for FrankWolfeOptimizer
impl Unpin for FrankWolfeOptimizer
impl UnsafeUnpin for FrankWolfeOptimizer
impl UnwindSafe for FrankWolfeOptimizer
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
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.