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:

LMStatus

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 number

  • cost : Objective function value

  • grad_norm : Gradient norm (or projected gradient for constrained)

  • lambda : Levenberg-Marquardt damping parameter

  • x : Parameter values at this iteration

  • step_norm : Step size (when step is accepted)

  • actred : Actual reduction in objective

  • prered : Predicted reduction from quadratic model

  • ratio : Ratio of actual to predicted reduction

Type:

List[Dict[str, Any]]

See also

lm_solve

Function that returns this result type

LMStatus

Detailed description of status codes

__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()