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![5.0]);
println!("Lion optimizer debug - minimizing x^2");
println!("Initial params: {:?}", params);
for i in 0..100 {
let gradients = Array1::from_vec(vec![2.0 * params[0]]);
params = optimizer.step(¶ms, &gradients).expect("unwrap failed");
if i % 10 == 0 || i < 10 {
println!(
"Iteration {}: params = {:.6}, gradient = {:.6}",
i,
params[0],
2.0 * params[0]
);
}
}
println!("Final params: {:.6}", params[0]);
println!("Final absolute value: {:.6}", params[0].abs());
}