optirs-core 0.3.2

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

use optirs_core::optimizers::{Optimizer, LBFGS};
use scirs2_core::ndarray::Array1;

#[allow(dead_code)]
fn main() {
    let mut optimizer: LBFGS<f64> = LBFGS::new(0.01);

    // Minimize a simple quadratic function: f(x) = x^2
    let mut params = Array1::from_vec(vec![5.0]);

    println!("LBFGS optimizer debug - minimizing x^2");
    println!("Initial params: {:?}", params);

    for i in 0..10 {
        // Gradient of x^2 is 2x
        let gradients = Array1::from_vec(vec![2.0 * params[0]]);

        println!("Iteration {}: gradient = {:?}", i, gradients);

        params = optimizer.step(&params, &gradients).expect("unwrap failed");

        println!("  new params = {:?}", params);

        if params[0].is_nan() {
            println!("  ERROR: NaN detected!");
            break;
        }
    }

    println!("Final params: {:?}", params);
}