scirs2_optimize/unconstrained/
result.rs

1//! Result structure for unconstrained optimization
2
3use scirs2_core::ndarray::{Array1, Array2};
4
5/// Result structure for optimization algorithms
6#[derive(Debug, Clone)]
7pub struct OptimizeResult<T> {
8    /// Solution vector
9    pub x: Array1<f64>,
10    /// Objective function value at solution
11    pub fun: T,
12    /// Number of iterations performed
13    pub nit: usize,
14    /// Number of function evaluations
15    pub func_evals: usize,
16    /// Number of function evaluations (alternative name)
17    pub nfev: usize,
18    /// Whether optimization was successful
19    pub success: bool,
20    /// Status message
21    pub message: String,
22    /// Gradient at solution (optional)
23    pub jacobian: Option<Array1<f64>>,
24    /// Hessian at solution (optional)
25    pub hessian: Option<Array2<f64>>,
26}
27
28impl<T: Default> Default for OptimizeResult<T> {
29    fn default() -> Self {
30        Self {
31            x: Array1::zeros(0),
32            fun: T::default(),
33            nit: 0,
34            func_evals: 0,
35            nfev: 0,
36            success: false,
37            message: String::new(),
38            jacobian: None,
39            hessian: None,
40        }
41    }
42}