otf.optim.optimizer
Optimization algorithms for estimating unknown system parameters.
This module provides concrete implementations of BaseOptimizer used to update
the cs parameters of a BaseSystem instance, including simple gradient
descent, Levenberg–Marquardt variants, and an adapter for Optax optimizers.
Classes:
| Name | Description |
|---|---|
DummyOptimizer |
Optimizer that performs no parameter updates (useful for testing). |
GradientDescent |
Simple gradient-descent optimizer. |
LevenbergMarquardt |
Levenberg–Marquardt optimizer using sensitivity-based gradients. |
OptaxWrapper |
Adapter that wraps an Optax optimizer as a |
WeightedLevenbergMarquardt |
Weighted Levenberg–Marquardt optimizer (Gauss–Newton variant). |
DummyOptimizer
Bases: BaseOptimizer
Optimizer that performs no parameter updates (useful for testing).
Initialize the dummy optimizer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
system
|
BaseSystem
|
Target |
required |
gradient_computer
|
GradientComputer | None
|
Optional |
None
|
Source code in src/otf/optim/optimizer.py
GradientDescent
GradientDescent(
system: BaseSystem,
learning_rate: float = 0.0001,
gradient_computer: GradientComputer | None = None,
)
Bases: BaseOptimizer
Simple gradient-descent optimizer.
Create a gradient-descent optimizer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
learning_rate
|
float
|
Scalar learning rate used to scale the negative gradient. |
0.0001
|
Source code in src/otf/optim/optimizer.py
LevenbergMarquardt
LevenbergMarquardt(
system: BaseSystem,
learning_rate: float = 0.001,
lam: float = 0.01,
gradient_computer: SensitivityGradient | None = None,
)
Bases: BaseOptimizer
Levenberg–Marquardt optimizer using sensitivity-based gradients.
Levenberg–Marquardt optimizer using sensitivity-based gradients.
This implementation requires a SensitivityGradient instance and is
currently implemented only for the UpdateOption.last_state update
method of the gradient computer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
learning_rate
|
float
|
Scalar multiplier applied to the computed step. |
0.001
|
lam
|
float
|
Levenberg–Marquardt damping parameter. |
0.01
|
Source code in src/otf/optim/optimizer.py
OptaxWrapper
OptaxWrapper(
system: BaseSystem,
optimizer: GradientTransformationExtraArgs,
gradient_computer: GradientComputer | None = None,
)
Bases: BaseOptimizer
Adapter that wraps an Optax optimizer as a BaseOptimizer.
Wrap a given Optax optimizer.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
optimizer
|
GradientTransformationExtraArgs
|
Instance of |
required |
Source code in src/otf/optim/optimizer.py
WeightedLevenbergMarquardt
WeightedLevenbergMarquardt(
system: BaseSystem,
learning_rate: float = 0.001,
lam: float = 0.01,
gradient_computer: GradientComputer | None = None,
)
Bases: BaseOptimizer
Weighted Levenberg–Marquardt optimizer (Gauss–Newton variant).
Perform a weighted version of the Levenberg–Marquardt modification of Gauss–Newton.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
learning_rate
|
float
|
The learning rate (scalar by which to multiply the step) |
0.001
|
lam
|
float
|
Levenberg–Marquardt parameter |
0.01
|