Trait argmin_core::ArgminSolver
source · pub trait ArgminSolver: ArgminNextIter {
Show 37 methods
fn apply(
&mut self,
_: &<Self as ArgminNextIter>::Parameters
) -> Result<<Self as ArgminNextIter>::OperatorOutput, Error>;
fn gradient(
&mut self,
_: &<Self as ArgminNextIter>::Parameters
) -> Result<<Self as ArgminNextIter>::Parameters, Error>;
fn hessian(
&mut self,
_: &<Self as ArgminNextIter>::Parameters
) -> Result<<Self as ArgminNextIter>::Hessian, Error>;
fn modify(
&self,
_: &<Self as ArgminNextIter>::Parameters,
_: f64
) -> Result<<Self as ArgminNextIter>::Parameters, Error>;
fn cur_param(&self) -> <Self as ArgminNextIter>::Parameters;
fn cur_grad(&self) -> <Self as ArgminNextIter>::Parameters;
fn cur_hessian(&self) -> <Self as ArgminNextIter>::Hessian;
fn set_cur_param(&mut self, _: <Self as ArgminNextIter>::Parameters);
fn set_cur_grad(&mut self, _: <Self as ArgminNextIter>::Parameters);
fn set_cur_hessian(&mut self, _: <Self as ArgminNextIter>::Hessian);
fn set_best_param(&mut self, _: <Self as ArgminNextIter>::Parameters);
fn run(
&mut self
) -> Result<ArgminResult<<Self as ArgminNextIter>::Parameters>, Error>;
fn run_fast(
&mut self
) -> Result<ArgminResult<<Self as ArgminNextIter>::Parameters>, Error>;
fn result(&self) -> ArgminResult<<Self as ArgminNextIter>::Parameters>;
fn set_termination_reason(&mut self, _: TerminationReason);
fn terminate(&mut self) -> TerminationReason;
fn set_max_iters(&mut self, _: u64);
fn max_iters(&self) -> u64;
fn cur_iter(&self) -> u64;
fn increment_iter(&mut self);
fn cur_cost(&self) -> f64;
fn set_cur_cost(&mut self, _: f64);
fn best_cost(&self) -> f64;
fn set_best_cost(&mut self, _: f64);
fn set_target_cost(&mut self, _: f64);
fn add_logger(&mut self, _: Box<dyn ArgminLog>);
fn add_writer(&mut self, _: Box<dyn ArgminWrite<Param = Self::Parameters>>);
fn base_reset(&mut self);
fn increment_cost_func_count(&mut self);
fn increase_cost_func_count(&mut self, _: u64);
fn cost_func_count(&self) -> u64;
fn increment_grad_func_count(&mut self);
fn increase_grad_func_count(&mut self, _: u64);
fn grad_func_count(&self) -> u64;
fn increment_hessian_func_count(&mut self);
fn increase_hessian_func_count(&mut self, _: u64);
fn hessian_func_count(&self) -> u64;
}
Expand description
Defines the interface to a solver. Usually, there is no need to implement this manually, use
the argmin_derive
crate instead.
Required Methods
sourcefn apply(
&mut self,
_: &<Self as ArgminNextIter>::Parameters
) -> Result<<Self as ArgminNextIter>::OperatorOutput, Error>
fn apply(
&mut self,
_: &<Self as ArgminNextIter>::Parameters
) -> Result<<Self as ArgminNextIter>::OperatorOutput, Error>
apply cost function or operator to a parameter vector
sourcefn gradient(
&mut self,
_: &<Self as ArgminNextIter>::Parameters
) -> Result<<Self as ArgminNextIter>::Parameters, Error>
fn gradient(
&mut self,
_: &<Self as ArgminNextIter>::Parameters
) -> Result<<Self as ArgminNextIter>::Parameters, Error>
compute the gradient for a parameter vector
sourcefn hessian(
&mut self,
_: &<Self as ArgminNextIter>::Parameters
) -> Result<<Self as ArgminNextIter>::Hessian, Error>
fn hessian(
&mut self,
_: &<Self as ArgminNextIter>::Parameters
) -> Result<<Self as ArgminNextIter>::Hessian, Error>
compute the hessian for a parameter vector
sourcefn modify(
&self,
_: &<Self as ArgminNextIter>::Parameters,
_: f64
) -> Result<<Self as ArgminNextIter>::Parameters, Error>
fn modify(
&self,
_: &<Self as ArgminNextIter>::Parameters,
_: f64
) -> Result<<Self as ArgminNextIter>::Parameters, Error>
modify the parameter vector
sourcefn cur_param(&self) -> <Self as ArgminNextIter>::Parameters
fn cur_param(&self) -> <Self as ArgminNextIter>::Parameters
return current parameter vector
sourcefn cur_grad(&self) -> <Self as ArgminNextIter>::Parameters
fn cur_grad(&self) -> <Self as ArgminNextIter>::Parameters
return current gradient
sourcefn cur_hessian(&self) -> <Self as ArgminNextIter>::Hessian
fn cur_hessian(&self) -> <Self as ArgminNextIter>::Hessian
return current gradient
sourcefn set_cur_param(&mut self, _: <Self as ArgminNextIter>::Parameters)
fn set_cur_param(&mut self, _: <Self as ArgminNextIter>::Parameters)
set current parameter vector
sourcefn set_cur_grad(&mut self, _: <Self as ArgminNextIter>::Parameters)
fn set_cur_grad(&mut self, _: <Self as ArgminNextIter>::Parameters)
set current gradient
sourcefn set_cur_hessian(&mut self, _: <Self as ArgminNextIter>::Hessian)
fn set_cur_hessian(&mut self, _: <Self as ArgminNextIter>::Hessian)
set current gradient
sourcefn set_best_param(&mut self, _: <Self as ArgminNextIter>::Parameters)
fn set_best_param(&mut self, _: <Self as ArgminNextIter>::Parameters)
set current parameter vector
sourcefn run(
&mut self
) -> Result<ArgminResult<<Self as ArgminNextIter>::Parameters>, Error>
fn run(
&mut self
) -> Result<ArgminResult<<Self as ArgminNextIter>::Parameters>, Error>
Execute the optimization algorithm.
sourcefn run_fast(
&mut self
) -> Result<ArgminResult<<Self as ArgminNextIter>::Parameters>, Error>
fn run_fast(
&mut self
) -> Result<ArgminResult<<Self as ArgminNextIter>::Parameters>, Error>
Execute the optimization algorithm without Ctrl-C handling, logging, writing and anything else which may cost unnecessary time.
sourcefn result(&self) -> ArgminResult<<Self as ArgminNextIter>::Parameters>
fn result(&self) -> ArgminResult<<Self as ArgminNextIter>::Parameters>
Returns the best solution found during optimization.
sourcefn set_termination_reason(&mut self, _: TerminationReason)
fn set_termination_reason(&mut self, _: TerminationReason)
Set termination reason (doesn’t terminate yet! – this is helpful for terminating within the iterations)
sourcefn terminate(&mut self) -> TerminationReason
fn terminate(&mut self) -> TerminationReason
Evaluate all stopping criterions and return the TerminationReason
sourcefn set_max_iters(&mut self, _: u64)
fn set_max_iters(&mut self, _: u64)
Set max number of iterations.
sourcefn increment_iter(&mut self)
fn increment_iter(&mut self)
Increment the iteration number by one
sourcefn set_cur_cost(&mut self, _: f64)
fn set_cur_cost(&mut self, _: f64)
Get current cost function value
sourcefn set_best_cost(&mut self, _: f64)
fn set_best_cost(&mut self, _: f64)
set best cost value
sourcefn set_target_cost(&mut self, _: f64)
fn set_target_cost(&mut self, _: f64)
Set the target cost function value which is used as a stopping criterion
sourcefn add_logger(&mut self, _: Box<dyn ArgminLog>)
fn add_logger(&mut self, _: Box<dyn ArgminLog>)
Add a logger to the array of loggers
sourcefn add_writer(&mut self, _: Box<dyn ArgminWrite<Param = Self::Parameters>>)
fn add_writer(&mut self, _: Box<dyn ArgminWrite<Param = Self::Parameters>>)
Add a writer to the array of writers
sourcefn base_reset(&mut self)
fn base_reset(&mut self)
Reset the base of the algorithm to its initial state
sourcefn increment_cost_func_count(&mut self)
fn increment_cost_func_count(&mut self)
Increment the cost function evaluation count
sourcefn increase_cost_func_count(&mut self, _: u64)
fn increase_cost_func_count(&mut self, _: u64)
Increaese the cost function evaluation count by a given value
sourcefn cost_func_count(&self) -> u64
fn cost_func_count(&self) -> u64
Return the cost function evaluation count
sourcefn increment_grad_func_count(&mut self)
fn increment_grad_func_count(&mut self)
Increment the gradient evaluation count
sourcefn increase_grad_func_count(&mut self, _: u64)
fn increase_grad_func_count(&mut self, _: u64)
Increase the gradient evaluation count by a given value
sourcefn grad_func_count(&self) -> u64
fn grad_func_count(&self) -> u64
Return the gradient evaluation count
sourcefn increment_hessian_func_count(&mut self)
fn increment_hessian_func_count(&mut self)
Increment the hessian evaluation count
sourcefn increase_hessian_func_count(&mut self, _: u64)
fn increase_hessian_func_count(&mut self, _: u64)
Increase the hessian evaluation count by a given value
sourcefn hessian_func_count(&self) -> u64
fn hessian_func_count(&self) -> u64
Return the gradient evaluation count