smartcore 0.3.0

Machine Learning in Rust.
Documentation
///
pub mod gradient_descent;
///
pub mod lbfgs;

use std::clone::Clone;
use std::fmt::Debug;

use crate::linalg::basic::arrays::Array1;
use crate::numbers::floatnum::FloatNumber;
use crate::optimization::line_search::LineSearchMethod;
use crate::optimization::{DF, F};

///
pub trait FirstOrderOptimizer<T: FloatNumber> {
    ///
    fn optimize<'a, X: Array1<T>, LS: LineSearchMethod<T>>(
        &self,
        f: &F<'_, T, X>,
        df: &'a DF<'_, X>,
        x0: &X,
        ls: &'a LS,
    ) -> OptimizerResult<T, X>;
}

///
#[derive(Debug, Clone)]
pub struct OptimizerResult<T: FloatNumber, X: Array1<T>> {
    ///
    pub x: X,
    ///
    pub f_x: T,
    ///
    pub iterations: usize,
}