scirs2_optimize/unconstrained/result.rs
1//! Result structure for unconstrained optimization
2
3use 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 iterations: usize,
14 /// Number of iterations (alternative name)
15 pub nit: usize,
16 /// Number of function evaluations
17 pub func_evals: usize,
18 /// Number of function evaluations (alternative name)
19 pub nfev: usize,
20 /// Whether optimization was successful
21 pub success: bool,
22 /// Status message
23 pub message: String,
24 /// Gradient at solution (optional)
25 pub jacobian: Option<Array1<f64>>,
26 /// Hessian at solution (optional)
27 pub hessian: Option<Array2<f64>>,
28}
29
30impl<T: Default> Default for OptimizeResult<T> {
31 fn default() -> Self {
32 Self {
33 x: Array1::zeros(0),
34 fun: T::default(),
35 iterations: 0,
36 nit: 0,
37 func_evals: 0,
38 nfev: 0,
39 success: false,
40 message: String::new(),
41 jacobian: None,
42 hessian: None,
43 }
44 }
45}