extern crate argmin;
use argmin::prelude::*;
use argmin::{ArgminProblem, NelderMead};
use argmin::testfunctions::rosenbrock;
fn run() -> Result<(), Box<std::error::Error>> {
let cost = |x: &Vec<f64>| -> f64 { rosenbrock(x, 1_f64, 100_f64) };
let mut prob = ArgminProblem::new(&cost);
prob.target_cost(0.01);
let mut solver = NelderMead::new();
solver.max_iters(100);
let init_params = vec![vec![0.0, 0.1], vec![2.0, 1.5], vec![2.0, -1.0]];
let result = solver.run(&prob, &init_params)?;
println!("{:?}", result);
Ok(())
}
fn main() {
if let Err(ref e) = run() {
println!("error: {}", e);
}
}