Source code for grid2op.Chronics.changeNothing

# Copyright (c) 2019-2020, RTE (https://www.rte-france.com)
# See AUTHORS.txt
# This Source Code Form is subject to the terms of the Mozilla Public License, version 2.0.
# If a copy of the Mozilla Public License, version 2.0 was not distributed with this file,
# you can obtain one at http://mozilla.org/MPL/2.0/.
# SPDX-License-Identifier: MPL-2.0
# This file is part of Grid2Op, Grid2Op a testbed platform to model sequential decision making in power systems.

import numpy as np
from datetime import datetime, timedelta

from grid2op.dtypes import dt_int
from grid2op.Chronics.gridValue import GridValue


[docs]class ChangeNothing(GridValue): """ INTERNAL .. warning:: /!\\\\ Internal, do not use unless you know what you are doing /!\\\\ Do not attempt to create an object of this class. This is initialized by the environment at its creation. This set of class is mainly internal. We don't recommend you, unless you want to code a custom "chroncis class" to change anything on these classes. This class is the most basic class to modify a powergrid values. It does nothing aside from increasing :attr:`GridValue.max_iter` and the :attr:`GridValue.current_datetime`. Examples -------- Usage example, for what you don't really have to do: .. code-block:: python import grid2op from grid2op.Chronics import ChangeNothing env_name = "l2rpn_case14_sandbox" # or any other name # env = grid2op.make(env_name, data_feeding_kwargs={"gridvalueClass": ChangeNothing}) env = grid2op.make(env_name, chronics_class=ChangeNothing) It can also be used with the "blank" environment: .. code-block:: python import grid2op from grid2op.Chronics import ChangeNothing env = grid2op.make("blank", test=True, grid_path=EXAMPLE_CASEFILE, chronics_class=ChangeNothing, action_class=TopologyAndDispatchAction) """ MULTI_CHRONICS = False def __init__( self, time_interval=timedelta(minutes=5), max_iter=-1, start_datetime=datetime(year=2019, month=1, day=1), chunk_size=None, **kwargs ): GridValue.__init__( self, time_interval=time_interval, max_iter=max_iter, start_datetime=start_datetime, chunk_size=chunk_size, ) self.n_gen = None self.n_load = None self.n_line = None self.maintenance_time = None self.maintenance_duration = None self.hazard_duration = None
[docs] def initialize( self, order_backend_loads, order_backend_prods, order_backend_lines, order_backend_subs, names_chronics_to_backend=None, ): self.n_gen = len(order_backend_prods) self.n_load = len(order_backend_loads) self.n_line = len(order_backend_lines) self.curr_iter = 0 self.maintenance_time = np.zeros(shape=(self.n_line,), dtype=dt_int) - 1 self.maintenance_duration = np.zeros(shape=(self.n_line,), dtype=dt_int) self.hazard_duration = np.zeros(shape=(self.n_line,), dtype=dt_int)
[docs] def load_next(self): self.current_datetime += self.time_interval self.curr_iter += 1 return ( self.current_datetime, {}, self.maintenance_time, self.maintenance_duration, self.hazard_duration, None, )
[docs] def check_validity(self, backend): return True
[docs] def next_chronics(self): self.current_datetime = self.start_datetime self.curr_iter = 0