#![recursion_limit = "1024"]
#![cfg_attr(feature = "clippy", feature(plugin))]
#![cfg_attr(feature = "clippy", plugin(clippy))]
#![warn(missing_docs)]
#![feature(trace_macros)]
#[macro_use]
extern crate error_chain;
extern crate ndarray;
extern crate ndarray_linalg;
extern crate num;
extern crate rand;
#[macro_use]
pub mod macros;
use std::default::Default;
use num::{Bounded, ToPrimitive};
use errors::*;
use parameter::ArgminParameter;
pub trait ArgminCostValue: Bounded + ToPrimitive + Copy + Default + PartialOrd {}
impl<T> ArgminCostValue for T
where
T: Bounded + ToPrimitive + Copy + Default + PartialOrd,
{
}
pub trait ArgminSolver<'a> {
type Parameter: ArgminParameter;
type CostValue: ArgminCostValue;
type Hessian;
type StartingPoints;
type ProblemDefinition;
fn init(&mut self, Self::ProblemDefinition, &Self::StartingPoints) -> Result<()>;
fn next_iter(&mut self) -> Result<ArgminResult<Self::Parameter, Self::CostValue>>;
fn run(
&mut self,
Self::ProblemDefinition,
&Self::StartingPoints,
) -> Result<ArgminResult<Self::Parameter, Self::CostValue>>;
fn terminate(&self) -> TerminationReason;
}
pub mod prelude;
pub mod result;
pub mod parameter;
pub mod problem;
pub mod operator;
pub mod termination;
pub mod testfunctions;
pub mod backtracking;
pub mod sa;
pub mod gradientdescent;
pub mod neldermead;
pub mod newton;
pub mod landweber;
pub mod cg;
mod errors;
pub use problem::ArgminProblem;
pub use operator::ArgminOperator;
pub use result::ArgminResult;
pub use sa::SimulatedAnnealing;
pub use sa::SATempFunc;
pub use newton::Newton;
pub use cg::ConjugateGradient;
pub use gradientdescent::GradientDescent;
pub use gradientdescent::GDGammaUpdate;
pub use backtracking::BacktrackingLineSearch;
pub use landweber::Landweber;
pub use neldermead::NelderMead;
pub use termination::TerminationReason;