Source code for jboat.gm_ol.dynamical_system

import abc
from typing import List, Dict
from jboat.utils import DynamicalSystemRules, ResultStore

importlib = __import__("importlib")

from jboat.operation_registry import register_class


[docs] @register_class class DynamicalSystem(object): def __init__( self, ll_objective, ul_objective, lower_loop, ul_model, ll_model, solver_config ) -> None: """ Abstract class for defining lower-level optimization procedures in Bilevel Optimization (BLO). Parameters ---------- ll_objective : Callable The lower-level objective function of the BLO problem. ul_objective : Callable The upper-level objective function of the BLO problem. ll_model : jittor.Module The lower-level model of the BLO problem. ul_model : jittor.Module The upper-level model of the BLO problem. lower_loop : int The number of iterations for lower-level optimization. solver_config : Dict[str, Any] A dictionary containing solver configurations. It includes details about optimization algorithms, hyperparameter settings, and additional configurations required for solving the BLO problem. """ self.ll_objective = ll_objective self.ul_objective = ul_objective self.lower_loop = lower_loop self.ul_model = ul_model self.ll_model = ll_model self.solver_config = solver_config
[docs] @abc.abstractmethod def optimize(self, **kwargs): pass