#![allow(non_snake_case)]
extern crate argmin;
extern crate ndarray;
use ndarray::{arr1, arr2};
use argmin::prelude::*;
use argmin::{ArgminOperator, ConjugateGradient};
fn run() -> Result<(), Box<std::error::Error>> {
let A = arr2(&[[4., 1.], [1., 3.]]);
let y = arr1(&[1., 2.]);
let mut prob = ArgminOperator::new(&A, &y);
prob.target_cost(0.01);
let mut solver = ConjugateGradient::new();
let init_param = arr1(&[0., 0.]);
solver.init(&prob, &init_param)?;
let mut par;
loop {
par = solver.next_iter()?;
if par.terminated {
break;
}
}
println!("{:?}", par);
Ok(())
}
fn main() {
if let Err(ref e) = run() {
println!("error: {}", e);
}
}