nlsq.optimizer_base module¶
Base classes for optimization algorithms.
Base class for optimization algorithms in NLSQ.
- class nlsq.core.optimizer_base.OptimizerBase(name='optimizer')[source]
Bases:
ABCAbstract base class for optimization algorithms.
This class provides a common interface for optimization algorithms used in NLSQ. It includes common functionality like logging, result creation, and defines the interface that subclasses must implement.
- __init__(name='optimizer')[source]
Initialize the optimizer base class.
- Parameters:
name (str) – Name of the optimizer for logging purposes
- abstractmethod optimize(fun, x0, jac=None, bounds=(-inf, inf), **kwargs)[source]
Perform optimization.
This is the main optimization method that must be implemented by subclasses.
- Parameters:
fun (callable) – The objective function to minimize
x0 (np.ndarray) – Initial guess for parameters
jac (callable, optional) – Jacobian function
bounds (tuple of arrays) – Lower and upper bounds for parameters
**kwargs – Additional optimization parameters
- Returns:
The optimization result
- Return type:
- reset_counters()[source]
Reset function evaluation counters.
- increment_nfev(count=1)[source]
Increment function evaluation counter.
- increment_njev(count=1)[source]
Increment Jacobian evaluation counter.
- property nfev: int
Number of function evaluations.
- property njev: int
Number of Jacobian evaluations.
- create_result(x, fun, jac=None, cost=None, status=0, message='', optimality=None, active_mask=None, **kwargs)[source]
Create a standardized optimization result.
- Parameters:
x (np.ndarray) – Optimized parameters
fun (np.ndarray) – Function values at optimized parameters
jac (np.ndarray, optional) – Jacobian at optimized parameters
cost (float, optional) – Final cost value
status (int) – Termination status code
message (str) – Termination message
optimality (float, optional) – First-order optimality measure
active_mask (np.ndarray, optional) – Active constraints mask
**kwargs – Additional result attributes
- Returns:
Standardized optimization result
- Return type:
- check_convergence(actual_reduction, cost, step_norm, x_norm, ratio, ftol, xtol)[source]
Check convergence criteria.
- Parameters:
actual_reduction (float) – Actual reduction in cost function
cost (float) – Current cost value
step_norm (float) – Norm of the optimization step
x_norm (float) – Norm of the parameter vector
ratio (float) – Ratio of actual to predicted reduction
ftol (float) – Function tolerance
xtol (float) – Parameter tolerance
- Returns:
Termination status code if converged, None otherwise
- Return type:
int or None
- log_iteration(iteration, cost, gradient_norm=None, step_size=None, **kwargs)[source]
Log optimization iteration details.
- log_convergence(reason, iterations, final_cost, time_elapsed=None, **kwargs)[source]
Log convergence information.
- class nlsq.core.optimizer_base.TrustRegionOptimizerBase(name='trust_region')[source]
Bases:
OptimizerBaseBase class for trust region optimization algorithms.
This class extends OptimizerBase with trust region specific functionality like trust region radius management and step acceptance criteria.
- __init__(name='trust_region')[source]
Initialize trust region optimizer.
- property trust_radius: float
Current trust region radius.
- update_trust_radius(Delta, actual_reduction, predicted_reduction, step_norm, step_at_boundary=False)[source]
Update trust region radius based on step quality.
- Parameters:
- Returns:
New trust region radius and reduction ratio
- Return type: