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}