Source code for nlsq.facades.optimization_facade

"""Optimization facade for breaking circular dependencies.

This facade provides lazy access to global_optimization components,
breaking the circular import cycle between minpack and global_optimization.

Reference: specs/017-curve-fit-decomposition/spec.md FR-011
"""

from __future__ import annotations

from typing import TYPE_CHECKING, Any

if TYPE_CHECKING:
    from nlsq.global_optimization.bipop import BIPOPRestarter
    from nlsq.global_optimization.cmaes_optimizer import CMAESOptimizer
    from nlsq.global_optimization.method_selector import MethodSelector
    from nlsq.global_optimization.multi_start import MultiStartOrchestrator


[docs] class OptimizationFacade: """Facade for global optimization components with lazy loading. This facade breaks the circular dependency between minpack.py and global_optimization by deferring all imports to method call time. Examples -------- >>> facade = OptimizationFacade() >>> CMAESOptimizer = facade.get_cmaes_optimizer() >>> optimizer = CMAESOptimizer(bounds=([0, 0], [10, 10])) """
[docs] def get_cmaes_optimizer(self) -> type[CMAESOptimizer]: """Get the CMAESOptimizer class. Returns ------- type[CMAESOptimizer] The CMAESOptimizer class for creating optimizer instances. """ from nlsq.global_optimization.cmaes_optimizer import CMAESOptimizer return CMAESOptimizer
[docs] def get_method_selector(self) -> type[MethodSelector]: """Get the MethodSelector class. Returns ------- type[MethodSelector] The MethodSelector class for automatic method selection. """ from nlsq.global_optimization.method_selector import MethodSelector return MethodSelector
[docs] def get_bipop_optimizer(self) -> type[BIPOPRestarter]: """Get the BIPOPRestarter class. Returns ------- type[BIPOPRestarter] The BIPOPRestarter class for BIPOP restart strategy. """ from nlsq.global_optimization.bipop import BIPOPRestarter return BIPOPRestarter
[docs] def get_multistart_optimizer(self) -> type[MultiStartOrchestrator]: """Get the MultiStartOrchestrator class. Returns ------- type[MultiStartOrchestrator] The MultiStartOrchestrator class for multi-start optimization. """ from nlsq.global_optimization.multi_start import MultiStartOrchestrator return MultiStartOrchestrator
[docs] def create_cmaes_optimizer(self, **kwargs: Any) -> CMAESOptimizer: """Create a CMAESOptimizer instance with given parameters. Parameters ---------- **kwargs Keyword arguments passed to CMAESOptimizer constructor. Returns ------- CMAESOptimizer A configured CMAESOptimizer instance. """ CMAESOptimizer = self.get_cmaes_optimizer() return CMAESOptimizer(**kwargs)
[docs] def create_multistart_orchestrator(self, **kwargs: Any) -> MultiStartOrchestrator: """Create a MultiStartOrchestrator instance with given parameters. Parameters ---------- **kwargs Keyword arguments passed to MultiStartOrchestrator constructor. Returns ------- MultiStartOrchestrator A configured MultiStartOrchestrator instance. """ MultiStartOrchestrator = self.get_multistart_optimizer() return MultiStartOrchestrator(**kwargs)