Source code for aurora.core.optimization

# SPDX-License-Identifier: MIT
# Copyright (c) 2025 Lucy Eduardo Arias

"""Optimization algorithms for Aurora-GLM."""

from __future__ import annotations

from .base import Optimizer
from .irls import irls
from .lbfgs import lbfgs
from .newton import modified_newton, newton_raphson
from .result import OptimizationResult
from .sparse_solvers import solve_sparse_penalized_ls

__all__ = [
    "OptimizationResult",
    "Optimizer",
    "newton_raphson",
    "modified_newton",
    "irls",
    "lbfgs",
    "optimize",
    "solve_sparse_penalized_ls",
]


[docs] def optimize( loss_fn, init_params, method: str = "lbfgs", backend: str = "jax", **kwargs, ): """Unified optimization interface.""" from ..backends import get_backend backend_obj = get_backend(backend) optimizers = { "newton": newton_raphson, "newton-raphson": newton_raphson, "modified-newton": modified_newton, "levenberg-marquardt": modified_newton, "irls": irls, "lbfgs": lbfgs, "l-bfgs": lbfgs, } key = method.lower() if key not in optimizers: raise ValueError(f"Unknown optimization method: {method}. Available: {list(optimizers)}") optimizer_fn = optimizers[key] return optimizer_fn(loss_fn, init_params, backend=backend_obj, **kwargs)