Source code for csle_system_identification.base.base_system_identification_algorithm

from typing import List, Union
from abc import ABC, abstractmethod
import os
import time
from csle_common.dao.emulation_config.emulation_env_config import EmulationEnvConfig
from csle_common.dao.system_identification.emulation_statistics import EmulationStatistics
from csle_common.dao.system_identification.system_identification_config import SystemIdentificationConfig
from csle_common.dao.system_identification.system_model import SystemModel
from csle_common.logging.log import Logger


[docs]class BaseSystemIdentificationAlgorithm(ABC): """ Abstract class representing a system identification algorithm """ def __init__(self, emulation_env_config: Union[None, EmulationEnvConfig], emulation_statistics: EmulationStatistics, system_identification_config: SystemIdentificationConfig) -> None: """ Initializes the algorithm :param emulation_env_config: the configuration of the emulation environment :param emulation_statistics: the statistics to use for training :param system_identification_config: the configuration of the algorithm """ self.emulation_env_config = emulation_env_config self.system_identification_config = system_identification_config self.emulation_statistics = emulation_statistics ts = time.time() if self.system_identification_config.output_dir[-1] == "/": self.system_identification_config.output_dir = self.system_identification_config.output_dir[0:-1] self.system_identification_config.output_dir = self.system_identification_config.output_dir + f"_{ts}/" try: if not os.path.exists(self.system_identification_config.output_dir): os.makedirs(self.system_identification_config.output_dir) except Exception as e: Logger.__call__().get_logger().info(f"There was an error creating log dirs: {str(e)}, {repr(e)}")
[docs] @abstractmethod def fit(self) -> SystemModel: """ Abstract method to be implemented by subclasses. Fits the system model :return: the fitted system model """ pass
[docs] @abstractmethod def hparam_names(self) -> List[str]: """ Abstract method to be implemented by subclasses. Gives the hyperparameters of the algorithm :return: the hyperparameters of the algorithm """ pass