[−][src]Trait argmin::prelude::ArgminLineSearch
Defines a common interface to line search methods. Requires that ArgminSolver
is implemented
for the line search method as well.
The cost function value and the gradient at the starting point can either be provided
(set_initial_cost
and set_initial_gradient
) or they can be computed using the operator from
the implementation of ArgminSolver
(see calc_initial_cost
and calc_initial_gradient
). The
former is convenient if cost and gradient at the starting point are already known for some
reason (i.e. the solver which uses the line search has already computed cost and gradient) and
avoids unneccessary computation of those values.
Required methods
fn set_initial_parameter(&mut self, param: Self::Param)
Set the initial parameter (starting point)
fn set_search_direction(&mut self, direction: Self::Param)
Set the search direction
fn set_initial_alpha(&mut self, step_length: f64) -> Result<(), Error>
Set the initial step length
fn set_initial_cost(&mut self, cost: f64)
Set the cost function value at the starting point as opposed to computing it (see
calc_initial_cost
)
fn set_initial_gradient(&mut self, grad: Self::Param)
Set the gradient at the starting point as opposed to computing it (see
calc_initial_gradient
)
fn calc_initial_cost(&mut self) -> Result<(), Error>
calculate the initial cost function value using an operator as opposed to setting it
manually (see set_initial_cost
)
fn calc_initial_gradient(&mut self) -> Result<(), Error>
calculate the initial gradient using an operator as opposed to setting it manually (see
set_initial_gradient
)
Implementors
impl<O> ArgminLineSearch for BacktrackingLineSearch<O> where
O: ArgminOp<Output = f64>,
<O as ArgminOp>::Param: ArgminSub<<O as ArgminOp>::Param, <O as ArgminOp>::Param> + ArgminDot<<O as ArgminOp>::Param, f64> + ArgminScaledAdd<<O as ArgminOp>::Param, f64, <O as ArgminOp>::Param>,
[src]
O: ArgminOp<Output = f64>,
<O as ArgminOp>::Param: ArgminSub<<O as ArgminOp>::Param, <O as ArgminOp>::Param> + ArgminDot<<O as ArgminOp>::Param, f64> + ArgminScaledAdd<<O as ArgminOp>::Param, f64, <O as ArgminOp>::Param>,
fn set_search_direction(&mut self, search_direction: <O as ArgminOp>::Param)
[src]
Set search direction
fn set_initial_parameter(&mut self, param: <O as ArgminOp>::Param)
[src]
Set initial parameter
fn set_initial_alpha(&mut self, alpha: f64) -> Result<(), Error>
[src]
Set initial alpha value
fn set_initial_cost(&mut self, init_cost: f64)
[src]
Set initial cost function value
fn set_initial_gradient(&mut self, init_grad: <O as ArgminOp>::Param)
[src]
Set initial gradient
fn calc_initial_cost(&mut self) -> Result<(), Error>
[src]
Calculate initial cost function value
fn calc_initial_gradient(&mut self) -> Result<(), Error>
[src]
Calculate initial cost function value
impl<O> ArgminLineSearch for HagerZhangLineSearch<O> where
O: ArgminOp<Output = f64>,
<O as ArgminOp>::Param: ArgminSub<<O as ArgminOp>::Param, <O as ArgminOp>::Param> + ArgminDot<<O as ArgminOp>::Param, f64> + ArgminScaledAdd<<O as ArgminOp>::Param, f64, <O as ArgminOp>::Param>,
[src]
O: ArgminOp<Output = f64>,
<O as ArgminOp>::Param: ArgminSub<<O as ArgminOp>::Param, <O as ArgminOp>::Param> + ArgminDot<<O as ArgminOp>::Param, f64> + ArgminScaledAdd<<O as ArgminOp>::Param, f64, <O as ArgminOp>::Param>,
fn set_search_direction(&mut self, search_direction: <O as ArgminOp>::Param)
[src]
Set search direction
fn set_initial_parameter(&mut self, param: <O as ArgminOp>::Param)
[src]
Set initial parameter
fn set_initial_cost(&mut self, init_cost: f64)
[src]
Set initial cost function value
fn set_initial_gradient(&mut self, init_grad: <O as ArgminOp>::Param)
[src]
Set initial gradient
fn calc_initial_cost(&mut self) -> Result<(), Error>
[src]
Calculate initial cost function value
fn calc_initial_gradient(&mut self) -> Result<(), Error>
[src]
Calculate initial cost function value
fn set_initial_alpha(&mut self, alpha: f64) -> Result<(), Error>
[src]
Set initial alpha value
impl<O> ArgminLineSearch for MoreThuenteLineSearch<O> where
O: ArgminOp<Output = f64>,
<O as ArgminOp>::Param: ArgminSub<<O as ArgminOp>::Param, <O as ArgminOp>::Param> + ArgminDot<<O as ArgminOp>::Param, f64> + ArgminScaledAdd<<O as ArgminOp>::Param, f64, <O as ArgminOp>::Param>,
[src]
O: ArgminOp<Output = f64>,
<O as ArgminOp>::Param: ArgminSub<<O as ArgminOp>::Param, <O as ArgminOp>::Param> + ArgminDot<<O as ArgminOp>::Param, f64> + ArgminScaledAdd<<O as ArgminOp>::Param, f64, <O as ArgminOp>::Param>,
fn set_search_direction(&mut self, search_direction: <O as ArgminOp>::Param)
[src]
Set search direction
fn set_initial_parameter(&mut self, param: <O as ArgminOp>::Param)
[src]
Set initial parameter
fn set_initial_cost(&mut self, init_cost: f64)
[src]
Set initial cost function value
fn set_initial_gradient(&mut self, init_grad: <O as ArgminOp>::Param)
[src]
Set initial gradient
fn calc_initial_cost(&mut self) -> Result<(), Error>
[src]
Calculate initial cost function value
fn calc_initial_gradient(&mut self) -> Result<(), Error>
[src]
Calculate initial cost function value
fn set_initial_alpha(&mut self, alpha: f64) -> Result<(), Error>
[src]
Set initial alpha value