"""
Optimization Engine Core
========================

Main optimization runners and algorithm selection.

Modules:
- runner: Main OptimizationRunner class
- base_runner: BaseRunner abstract class
- intelligent_optimizer: IMSO adaptive optimizer
- method_selector: Algorithm selection logic
- strategy_selector: Strategy portfolio management
"""

# Lazy imports to avoid circular dependencies
def __getattr__(name):
    if name == 'OptimizationRunner':
        from .runner import OptimizationRunner
        return OptimizationRunner
    elif name == 'BaseRunner':
        from .base_runner import BaseRunner
        return BaseRunner
    elif name == 'NeuralOptimizationRunner':
        from .runner_with_neural import NeuralOptimizationRunner
        return NeuralOptimizationRunner
    elif name == 'IntelligentOptimizer':
        from .intelligent_optimizer import IntelligentOptimizer
        return IntelligentOptimizer
    elif name == 'IMSO':
        from .intelligent_optimizer import IMSO
        return IMSO
    elif name == 'MethodSelector':
        from .method_selector import MethodSelector
        return MethodSelector
    elif name == 'select_method':
        from .method_selector import select_method
        return select_method
    elif name == 'StrategySelector':
        from .strategy_selector import StrategySelector
        return StrategySelector
    elif name == 'StrategyPortfolio':
        from .strategy_portfolio import StrategyPortfolio
        return StrategyPortfolio
    elif name == 'GradientOptimizer':
        from .gradient_optimizer import GradientOptimizer
        return GradientOptimizer
    elif name == 'LBFGSPolisher':
        from .gradient_optimizer import LBFGSPolisher
        return LBFGSPolisher
    raise AttributeError(f"module 'optimization_engine.core' has no attribute '{name}'")

__all__ = [
    'OptimizationRunner',
    'BaseRunner',
    'NeuralOptimizationRunner',
    'IntelligentOptimizer',
    'IMSO',
    'MethodSelector',
    'select_method',
    'StrategySelector',
    'StrategyPortfolio',
    'GradientOptimizer',
    'LBFGSPolisher',
]
