archimedes.optimize.LMResult¶
- class archimedes.optimize.LMResult¶
Result of Levenberg-Marquardt optimization.
This class provides detailed information about the optimization process and results, following SciPy conventions while adding specialized fields for system identification applications.
- x¶
Solution parameters with the same structure as the initial guess. For system identification, this preserves the nested parameter organization (e.g.,
{"mass": 1.0, "damping": {"c1": 0.1}}
).- Type:
ndarray or PyTree
- success¶
Whether optimization terminated successfully. True for status codes 1-4 (converged), False for status code 5 (max iterations reached).
- Type:
bool
- status¶
Detailed termination status code indicating the specific convergence criterion that was satisfied or reason for termination.
- Type:
- message¶
Human-readable description of the termination reason corresponding to the status code.
- Type:
str
- fun¶
Final objective function value. For least-squares problems, this is 0.5 times the sum of squared residuals.
- Type:
float
- jac¶
Final gradient vector of shape
(n,)
. For constrained problems, this is the full gradient (not projected).- Type:
ndarray
- hess¶
Final Hessian matrix or approximation of shape
(n, n)
. This can be used for uncertainty quantification and further analysis.- Type:
ndarray
- nfev¶
Number of objective function evaluations performed during optimization. Each evaluation computes the objective value, gradient, and Hessian.
- Type:
int
- njev¶
Number of Jacobian evaluations. For this implementation, this equals
nfev
since gradient and Hessian are computed simultaneously.- Type:
int
- nit¶
Number of algorithm iterations. Each iteration may involve multiple function evaluations due to the trust region approach.
- Type:
int
- history¶
Detailed iteration history containing convergence diagnostics:
iter
: Iteration numbercost
: Objective function valuegrad_norm
: Gradient norm (or projected gradient for constrained)lambda
: Levenberg-Marquardt damping parameterx
: Parameter values at this iterationstep_norm
: Step size (when step is accepted)actred
: Actual reduction in objectiveprered
: Predicted reduction from quadratic modelratio
: Ratio of actual to predicted reduction
- Type:
List[Dict[str, Any]]
See also
- __init__(*args, **kwargs)¶
Methods
__init__
(*args, **kwargs)clear
()copy
()fromkeys
(iterable[, value])Create a new dictionary with keys from iterable and values set to value.
get
(key[, default])Return the value for key if key is in the dictionary, else default.
items
()keys
()pop
(k[,d])If the key is not found, return the default if given; otherwise, raise a KeyError.
popitem
()Remove and return a (key, value) pair as a 2-tuple.
setdefault
(key[, default])Insert key with a value of default if key is not in the dictionary.
update
([E, ]**F)If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]
values
()