optirs-core 0.3.2

OptiRS core optimization algorithms and utilities
Documentation
//! Debug Lion optimizer behavior

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);

    // Minimize a simple quadratic function: f(x) = x^2
    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 {
        // Gradient of x^2 is 2x
        let gradients = Array1::from_vec(vec![2.0 * params[0]]);
        params = optimizer.step(&params, &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());
}