use optirs_core::optimizers::{Lion, Optimizer};
use scirs2_core::ndarray::Array1;
#[allow(dead_code)]
fn main() {
let mut optimizer: Lion<f64> = Lion::new(0.01);
let mut params = Array1::from_vec(vec![10.0]);
println!("Lion optimizer debug - minimizing x^2");
println!("Initial params: {:?}", params);
for i in 0..50 {
let gradients = Array1::from_vec(vec![2.0 * params[0]]);
params = optimizer.step(¶ms, &gradients).expect("unwrap failed");
if i % 5 == 0 || i < 5 {
println!(
"Iteration {}: params = {:?}, gradient = {:?}",
i, params, gradients
);
}
}
println!("Final params: {:?}", params);
println!("Final absolute value: {}", params[0].abs());
}