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: ABC

Abstract 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:

OptimizeResult

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:

OptimizeResult

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.

Parameters:
  • iteration (int) – Iteration number

  • cost (float) – Current cost value

  • gradient_norm (float, optional) – Gradient norm

  • step_size (float, optional) – Step size

  • **kwargs – Additional logging parameters

log_convergence(reason, iterations, final_cost, time_elapsed=None, **kwargs)[source]

Log convergence information.

Parameters:
  • reason (str) – Convergence reason

  • iterations (int) – Number of iterations

  • final_cost (float) – Final cost value

  • time_elapsed (float, optional) – Total optimization time

  • **kwargs – Additional logging parameters

class nlsq.core.optimizer_base.TrustRegionOptimizerBase(name='trust_region')[source]

Bases: OptimizerBase

Base 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:
  • Delta (float) – Current trust region radius

  • actual_reduction (float) – Actual reduction in objective

  • predicted_reduction (float) – Predicted reduction from model

  • step_norm (float) – Norm of the step taken

  • step_at_boundary (bool) – Whether step reached trust region boundary

Returns:

New trust region radius and reduction ratio

Return type:

tuple

step_accepted(ratio, threshold=0.0001)[source]

Check if optimization step should be accepted.

Parameters:
  • ratio (float) – Ratio of actual to predicted reduction

  • threshold (float) – Minimum acceptable ratio

Returns:

True if step should be accepted

Return type:

bool