def __init__(self, chronicsClass=ChangeNothing, time_interval=timedelta(minutes=5), max_iter=-1, **kwargs): RandomObject.__init__(self) if not isinstance(chronicsClass, type): raise Grid2OpException( "Parameter \"chronicsClass\" used to build the ChronicsHandler should be a type " "(a class) and not an object (an instance of a class). It is currently " "\"{}\"".format(type(chronicsClass))) if not issubclass(chronicsClass, GridValue): raise ChronicsError( "ChronicsHandler: the \"chronicsClass\" argument should be a derivative of the " "\"Grid2Op.GridValue\" type and not {}.".format( type(chronicsClass))) self.chronicsClass = chronicsClass self.kwargs = kwargs self.max_iter = max_iter self.path = None if "path" in kwargs: self.path = kwargs["path"] self.real_data = None try: self.real_data = self.chronicsClass(time_interval=time_interval, max_iter=self.max_iter, **self.kwargs) except TypeError: raise ChronicsError( "Impossible to build a chronics of type {} with arguments in " "{}".format(chronicsClass, self.kwargs))
def __init__( self, envs_dir, _add_to_name="", # internal, for test only, do not use ! **kwargs): GridObjects.__init__(self) RandomObject.__init__(self) self.current_env = None self.env_index = None self.mix_envs = [] # Special case handling for backend backendClass = None if "backend" in kwargs: backendClass = type(kwargs["backend"]) del kwargs["backend"] # Inline import to prevent cyclical import from grid2op.MakeEnv.Make import make try: for env_dir in sorted(os.listdir(envs_dir)): env_path = os.path.join(envs_dir, env_dir) if not os.path.isdir(env_path): continue # Special case for backend if backendClass is not None: env = make(env_path, backend=backendClass(), _add_to_name=_add_to_name, **kwargs) else: env = make(env_path, **kwargs) self.mix_envs.append(env) except Exception as e: err_msg = "MultiMix environment creation failed: {}".format(e) raise EnvError(err_msg) if len(self.mix_envs) == 0: err_msg = "MultiMix envs_dir did not contain any valid env" raise EnvError(err_msg) self.env_index = 0 self.current_env = self.mix_envs[self.env_index] # Make sure GridObject class attributes are set from first env # Should be fine since the grid is the same for all envs multi_env_name = os.path.basename( os.path.abspath(envs_dir)) + _add_to_name save_env_name = self.current_env.env_name self.current_env.env_name = multi_env_name self.__class__ = self.init_grid(self.current_env) self.current_env.env_name = save_env_name
def __init__(self, time_interval=timedelta(minutes=5), max_iter=-1, start_datetime=datetime(year=2019, month=1, day=1), chunk_size=None): RandomObject.__init__(self) self.time_interval = time_interval self.current_datetime = start_datetime self.start_datetime = start_datetime self.max_iter = max_iter self.curr_iter = 0 self.maintenance_time = None self.maintenance_duration = None self.hazard_duration = None
def __init__(self, gridobj, controler_backend): """ Parameters ---------- gridobj: :class:`grid2op.Space.Gridobject` Structure of the powergrid envbackend: :class:`grid2op.Backend.Backend` An instanciated backend to perform some computation on a powergrid, before taking some actions. """ RandomObject.__init__(self) legal_act = AlwaysLegal() self.action_space = ActionSpace(gridobj=gridobj, actionClass=VoltageOnlyAction, legal_action=legal_act) self.backend = controler_backend.copy()
def __init__(self, action_space): RandomObject.__init__(self) self.action_space = action_space self._do_nothing = self.action_space()
def __init__(self, action_space): RandomObject.__init__(self) self.action_space = action_space
def __init__( self, envs_dir, experimental_read_from_local_dir=False, _add_to_name="", # internal, for test only, do not use ! _compat_glop_version=None, # internal, for test only, do not use ! _test=False, **kwargs): GridObjects.__init__(self) RandomObject.__init__(self) self.current_env = None self.env_index = None self.mix_envs = [] self._env_dir = os.path.abspath(envs_dir) # Special case handling for backend # TODO: with backend.copy() instead ! backendClass = None if "backend" in kwargs: backendClass = type(kwargs["backend"]) del kwargs["backend"] # Inline import to prevent cyclical import from grid2op.MakeEnv.Make import make # TODO reuse same observation_space and action_space in all the envs maybe ? try: for env_dir in sorted(os.listdir(envs_dir)): env_path = os.path.join(envs_dir, env_dir) if not os.path.isdir(env_path): continue # Special case for backend if backendClass is not None: env = make(env_path, backend=backendClass(), _add_to_name=_add_to_name, _compat_glop_version=_compat_glop_version, test=_test, experimental_read_from_local_dir= experimental_read_from_local_dir, **kwargs) else: env = make(env_path, _add_to_name=_add_to_name, _compat_glop_version=_compat_glop_version, test=_test, experimental_read_from_local_dir= experimental_read_from_local_dir, **kwargs) self.mix_envs.append(env) except Exception as exc_: err_msg = "MultiMix environment creation failed: {}".format(exc_) raise EnvError(err_msg) if len(self.mix_envs) == 0: err_msg = "MultiMix envs_dir did not contain any valid env" raise EnvError(err_msg) self.env_index = 0 self.current_env = self.mix_envs[self.env_index] # Make sure GridObject class attributes are set from first env # Should be fine since the grid is the same for all envs multi_env_name = os.path.basename( os.path.abspath(envs_dir)) + _add_to_name save_env_name = self.current_env.env_name self.current_env.env_name = multi_env_name self.__class__ = self.init_grid(self.current_env) self.current_env.env_name = save_env_name
def __init__(self, action_space): RandomObject.__init__(self) self.action_space = copy.deepcopy(action_space)