BaseObservation¶
-
class
grid2op.Observation.BaseObservation(gridobj, obs_env=None, action_helper=None, seed=None)[source]¶ Basic class representing an observation.
All observation must derive from this class and implement all its abstract methods.
-
action_helper¶ A reprensentation of the possible action space.
-
year¶ The current year
- Type
int
-
month¶ The current month (0 = january, 11 = december)
- Type
int
-
day¶ The current day of the month
- Type
int
-
hour_of_day¶ The current hour of the day
- Type
int
-
minute_of_hour¶ The current minute of the current hour
- Type
int
-
day_of_week¶ The current day of the week. Monday = 0, Sunday = 6
- Type
int
-
prod_p¶ The active production value of each generator (expressed in MW).
- Type
numpy.ndarray, dtype:float
-
prod_q¶ The reactive production value of each generator (expressed in MVar).
- Type
numpy.ndarray, dtype:float
-
prod_v¶ The voltage magnitude of the bus to which each generator is connected (expressed in kV).
- Type
numpy.ndarray, dtype:float
-
load_p¶ The active load value of each consumption (expressed in MW).
- Type
numpy.ndarray, dtype:float
-
load_q¶ The reactive load value of each consumption (expressed in MVar).
- Type
numpy.ndarray, dtype:float
-
load_v¶ The voltage magnitude of the bus to which each consumption is connected (expressed in kV).
- Type
numpy.ndarray, dtype:float
-
p_or¶ The active power flow at the origin end of each powerline (expressed in MW).
- Type
numpy.ndarray, dtype:float
-
q_or¶ The reactive power flow at the origin end of each powerline (expressed in MVar).
- Type
numpy.ndarray, dtype:float
-
v_or¶ The voltage magnitude at the bus to which the origin end of each powerline is connected (expressed in kV).
- Type
numpy.ndarray, dtype:float
-
a_or¶ The current flow at the origin end of each powerline (expressed in A).
- Type
numpy.ndarray, dtype:float
-
p_ex¶ The active power flow at the extremity end of each powerline (expressed in MW).
- Type
numpy.ndarray, dtype:float
-
q_ex¶ The reactive power flow at the extremity end of each powerline (expressed in MVar).
- Type
numpy.ndarray, dtype:float
-
v_ex¶ The voltage magnitude at the bus to which the extremity end of each powerline is connected (expressed in kV).
- Type
numpy.ndarray, dtype:float
-
a_ex¶ The current flow at the extremity end of each powerline (expressed in A).
- Type
numpy.ndarray, dtype:float
-
rho¶ The capacity of each powerline. It is defined at the observed current flow divided by the thermal limit of each powerline (no unit)
- Type
numpy.ndarray, dtype:float
-
connectivity_matrix_¶ The connectivityt matrix (if computed, or None) see definition of
connectivity_matrix()for more information- Type
numpy.ndarray, dtype:float
-
bus_connectivity_matrix_¶ - The bus_connectivity_matrix_ matrix (if computed, or None) see definition of
BaseObservation.bus_connectivity_matrix()for more information
- Type
numpy.ndarray, dtype:float
-
vectorized¶ The vector representation of this BaseObservation (if computed, or None) see definition of
to_vect()for more information.- Type
numpy.ndarray, dtype:float
-
topo_vect¶ For each object (load, generator, ends of a powerline) it gives on which bus this object is connected in its substation. See
grid2op.Backend.Backend.get_topo_vect()for more information.- Type
numpy.ndarray, dtype:int
-
line_status¶ Gives the status (connected / disconnected) for every powerline (
Trueat position i means the powerline i is connected)- Type
numpy.ndarray, dtype:bool
-
timestep_overflow¶ Gives the number of time steps since a powerline is in overflow.
- Type
numpy.ndarray, dtype:int
-
time_before_cooldown_line¶ For each powerline, it gives the number of time step the powerline is unavailable due to “cooldown” (see
grid2op.Parameters.Parameters.NB_TIMESTEP_LINE_STATUS_REMODIFfor more information). 0 means the an action will be able to act on this same powerline, a number > 0 (eg 1) means that an action at this time step cannot act on this powerline (in the example the agent have to wait 1 time step)- Type
numpy.ndarray, dtype:int
-
time_before_cooldown_sub¶ Same as
BaseObservation.time_before_cooldown_linebut for substations. For each substation, it gives the number of timesteps to wait before acting on this substation (see seegrid2op.Parameters.Parameters.NB_TIMESTEP_TOPOLOGY_REMODIFfor more information).- Type
numpy.ndarray, dtype:int
-
time_before_line_reconnectable¶ For each powerline, it gives the number of timesteps before the powerline can be reconnected. This only concerns the maintenance, outage (hazards) and disconnection due to cascading failures (including overflow). The same convention as for
BaseObservation.time_before_cooldown_lineandBaseObservation.time_before_cooldown_subis adopted: 0 at position i means that the powerline can be reconnected. It there is 2 (for example) it means that the powerline i is unavailable for 2 timesteps (we will be able to re connect it not this time, not next time, but the following timestep)- Type
numpy.ndarray, dtype:int
-
time_next_maintenance¶ For each powerline, it gives the time of the next planned maintenance. For example if there is:
1 at position i it means that the powerline i will be disconnected for maintenance operation at the next time step. A
0 at position i means that powerline i is disconnected from the powergrid for maintenance operation at the current time step.
-1 at position i means that powerline i will not be disconnected for maintenance reason for this episode.
- Type
numpy.ndarray, dtype:int
-
duration_next_maintenance¶ For each powerline, it gives the number of time step that the maintenance will last (if any). This means that, if at position i of this vector:
there is a 0: the powerline is not disconnected from the grid for maintenance
there is a 1, 2, … the powerline will be disconnected for at least 1, 2, … timestep (NB in all case, the powerline will stay disconnected until a
grid2op.BaseAgent.BaseAgentperforms the propergrid2op.BaseAction.BaseActionto reconnect it).
- Type
numpy.ndarray, dtype:int
-
target_dispatch¶ For each generators, it gives the target redispatching, asked by the agent. This is the sum of all redispatching asked by the agent for during all the episode. It for each generator it is a number between: - pmax and pmax. Note that there is information about all generators there, even the one that are not dispatchable.
- Type
numpy.ndarray, dtype:float
-
actual_dispatch¶ For each generators, it gives the redispatching currently implemented by the environment. Indeed, the environment tries to implement at best the
BaseObservation.target_dispatch, but sometimes, due to physical limitation (pmin, pmax, ramp min and ramp max) it cannot. In this case, only the best possible redispatching is implemented at the current time step, and this is what this vector stores. Note that there is information about all generators there, even the one that are not dispatchable.- Type
numpy.ndarray, dtype:float
-
__eq__(other)[source]¶ Test the equality of two actions.
2 actions are said to be identical if the have the same impact on the powergrid. This is unlrelated to their respective class. For example, if an BaseAction is of class
BaseActionand doesn’t act on the _injection, it can be equal to a an BaseAction of derived classTopologyAction(if the topological modification are the same of course).This implies that the attributes
BaseAction.authorized_keysis not checked in this method.Note that if 2 actions doesn’t act on the same powergrid, or on the same backend (eg number of loads, or generators is not the same in self and other, or they are not in the same order) then action will be declared as different.
Known issue if two backend are different, but the description of the _grid are identical (ie all n_gen, n_load, n_line, sub_info, dim_topo, all vectors *_to_subid, and *_pos_topo_vect are identical) then this method will not detect the backend are different, and the action could be declared as identical. For now, this is only a theoretical behaviour: if everything is the same, then probably, up to the naming convention, then the powergrid are identical too.
- Parameters
other (
BaseObservation) – An instance of class BaseAction to which “self” will be compared.
-
__init__(gridobj, obs_env=None, action_helper=None, seed=None)[source]¶ Initialize self. See help(type(self)) for accurate signature.
-
bus_connectivity_matrix()[source]¶ If we denote by nb_bus the total number bus of the powergrid.
The bus_connectivity_matrix will have a size nb_bus, nb_bus and will be made of 0 and 1.
If bus_connectivity_matrix[i,j] = 1 then at least a power line connects bus i and bus j. Otherwise, nothing connects it.
- Returns
res – The bus connectivity matrix
- Return type
numpy.ndarray, shape:nb_bus,nb_bus dtype:float
-
connectivity_matrix()[source]¶ Computes and return the “connectivity matrix” con_mat. if “dim_topo = 2 * n_line + n_prod + n_conso” It is a matrix of size dim_topo, dim_topo, with values 0 or 1. For two objects (lines extremity, generator unit, load) i,j :
- if i and j are connected on the same substation:
if conn_mat[i,j] = 0 it means the objects id’ed i and j are not connected to the same bus.
if conn_mat[i,j] = 1 it means the objects id’ed i and j are connected to the same bus, are both end of the same powerline
if i and j are not connected on the same substation then`conn_mat[i,j] = 0` except if i and j are the two extremities of the same power line, in this case conn_mat[i,j] = 1.
By definition, the diagonal is made of 0.
- Returns
res – The connectivity matrix, as defined above
- Return type
numpy.ndarray, shape:dim_topo,dim_topo, dtype:float
-
copy()[source]¶ Make a (deep) copy of the observation.
- Returns
res – The deep copy of the observation
- Return type
-
reset()[source]¶ Reset the
BaseObservationto a blank state, where everything is set to eitherNoneor to its default value.
-
simulate(action, time_step=0)[source]¶ This method is used to simulate the effect of an action on a forecasted powergrid state. It has the same return value as the
grid2op.Environment.Environment.step()function.- Parameters
action (
grid2op.Action.Action) – The action to simulatetime_step (
int) – The time step of the forecasted grid to perform the action on. If no forecast are available for this time step, agrid2op.Exceptions.NoForecastAvailableis thrown.
- Raises
grid2op.Exceptions.NoForecastAvailable – if no forecast are available for the time_step querried.
- Returns
observation (
grid2op.Observation.Observation) – agent’s observation of the current environmentreward (
float) – amount of reward returned after previous actiondone (
bool) – whether the episode has ended, in which case further step() calls will return undefined resultsinfo (
dict) – contains auxiliary diagnostic information (helpful for debugging, and sometimes learning)
-
state_of(_sentinel=None, load_id=None, gen_id=None, line_id=None, substation_id=None)[source]¶ Return the state of this action on a give unique load, generator unit, powerline of substation. Only one of load, gen, line or substation should be filled.
The querry of these objects can only be done by id here (ie by giving the integer of the object in the backed). The
ActionSpacehas some utilities to access them by name too.- Parameters
_sentinel (
None) – Used to prevent positional parameters. Internal, do not use.load_id (
int) – ID of the load we want to inspectgen_id (
int) – ID of the generator we want to inspectline_id (
int) – ID of the powerline we want to inspectsubstation_id (
int) – ID of the powerline we want to inspect
- Returns
res – A dictionnary with keys and value depending on which object needs to be inspected:
if a load is inspected, then the keys are:
”p” the active value consumed by the load
”q” the reactive value consumed by the load
”v” the voltage magnitude of the bus to which the load is connected
”bus” on which bus the load is connected in the substation
”sub_id” the id of the substation to which the load is connected
if a generator is inspected, then the keys are:
”p” the active value produced by the generator
”q” the reactive value consumed by the generator
”v” the voltage magnitude of the bus to which the generator is connected
”bus” on which bus the generator is connected in the substation
”sub_id” the id of the substation to which the generator is connected
”actual_dispatch” the actual dispatch implemented for this generator
”target_dispatch” the target dispatch (cumulation of all previously asked dispatch by the agent) for this generator
if a powerline is inspected then the keys are “origin” and “extremity” each being dictionnary with keys:
”p” the active flow on line end (extremity or origin)
”q” the reactive flow on line end (extremity or origin)
”v” the voltage magnitude of the bus to which the line end (extremity or origin) is connected
”bus” on which bus the line end (extremity or origin) is connected in the substation
”sub_id” the id of the substation to which the generator is connected
”a” the current flow on the line end (extremity or origin)
In the case of a powerline, additional information are:
”maintenance”: information about the maintenance operation (time of the next maintenance and duration of this next maintenance.
”cooldown_time”: for how many timestep i am not supposed to act on the powerline due to cooldown (see
grid2op.Parameters.Parameters.NB_TIMESTEP_LINE_STATUS_REMODIFfor more information)”indisponibility”: for how many timestep the powerline is unavailable (disconnected, and it’s impossible to reconnect it) due to hazards, maintenance or overflow (incl. cascading failure)
if a substation is inspected, it returns the topology to this substation in a dictionary with keys:
”topo_vect”: the representation of which object is connected where
”nb_bus”: number of active buses in this substations
”cooldown_time”: for how many timestep i am not supposed to act on the substation due to cooldown (see
grid2op.Parameters.Parameters.NB_TIMESTEP_TOPOLOGY_REMODIFfor more information)
- Return type
dict- Raises
Grid2OpException – If _sentinel is modified, or if None of the arguments are set or alternatively if 2 or more of the parameters are being set.
-
abstractmethod
update(env)[source]¶ Update the actual instance of BaseObservation with the new received value from the environment.
An observation is a description of the powergrid perceived by an agent. The agent takes his decision based on the current observation and the past rewards.
This method update receive complete detailed information about the powergrid, but that does not mean an agent sees everything. For example, it is possible to derive this class to implement some noise in the generator or load, or flows to mimic sensor inaccuracy.
It is also possible to give fake information about the topology, the line status etc.
In the Grid2Op framework it’s also through the observation that the agent has access to some forecast (the way forecast are handled depends are implemented in this class). For example, forecast data (retrieved thanks to chronics_handler) are processed, but can be processed differently. One can apply load / production forecast to each _grid state, or to make forecast for one “reference” _grid state valid a whole day and update this one only etc. All these different mechanisms can be implemented in Grid2Op framework by overloading the update observation method.
This class is really what a dispatcher observes from it environment. It can also include some temperatures, nebulosity, wind etc. can also be included in this class.
-
-
class
grid2op.Observation.CompleteObservation(gridobj, obs_env=None, action_helper=None, seed=None)[source]¶ This class represent a complete observation, where everything on the powergrid can be observed without any noise.
This is the only
BaseObservationimplemented (and used) in Grid2Op. Other type of observation, for other usage can of course be implemented following this example.It has the same attributes as the
BaseObservationclass. Only one is added here.For a
CompleteObservationthe unique representation as a vector is:the year [1 element]
the month [1 element]
the day [1 element]
the day of the week. Monday = 0, Sunday = 6 [1 element]
the hour of the day [1 element]
minute of the hour [1 element]
BaseObservation.prod_pthe active value of the productions [BaseObservation.n_genelements]BaseObservation.prod_qthe reactive value of the productions [BaseObservation.n_genelements]BaseObservation.prod_qthe voltage setpoint of the productions [BaseObservation.n_genelements]BaseObservation.load_pthe active value of the loads [BaseObservation.n_loadelements]BaseObservation.load_qthe reactive value of the loads [BaseObservation.n_loadelements]BaseObservation.load_vthe voltage setpoint of the loads [BaseObservation.n_loadelements]BaseObservation.p_oractive flow at origin of powerlines [BaseObservation.n_lineelements]BaseObservation.q_orreactive flow at origin of powerlines [BaseObservation.n_lineelements]BaseObservation.v_orvoltage at origin of powerlines [BaseObservation.n_lineelements]BaseObservation.a_orcurrent flow at origin of powerlines [BaseObservation.n_lineelements]BaseObservation.p_exactive flow at extremity of powerlines [BaseObservation.n_lineelements]BaseObservation.q_exreactive flow at extremity of powerlines [BaseObservation.n_lineelements]BaseObservation.v_exvoltage at extremity of powerlines [BaseObservation.n_lineelements]BaseObservation.a_excurrent flow at extremity of powerlines [BaseObservation.n_lineelements]BaseObservation.rholine capacity used (current flow / thermal limit) [BaseObservation.n_lineelements]BaseObservation.line_statusline status [BaseObservation.n_lineelements]BaseObservation.timestep_overflownumber of timestep since the powerline was on overflow (0 if the line is not on overflow)[BaseObservation.n_lineelements]BaseObservation.topo_vectrepresentation as a vector of the topology [for each element it gives its bus]. Seegrid2op.Backend.Backend.get_topo_vect()for more information.BaseObservation.time_before_cooldown_linerepresentation of the cooldown time on the powerlines [BaseObservation.n_lineelements]BaseObservation.time_before_cooldown_subrepresentation of the cooldown time on the substations [BaseObservation.n_subelements]BaseObservation.time_before_line_reconnectablenumber of timestep to wait before a powerline can be reconnected (it is disconnected due to maintenance, cascading failure or overflow) [BaseObservation.n_lineelements]BaseObservation.time_next_maintenancenumber of timestep before the next maintenance (-1 means no maintenance are planned, 0 a maintenance is in operation) [BaseObservation.n_lineelements]BaseObservation.duration_next_maintenanceduration of the next maintenance. If a maintenance is taking place, this is the number of timestep before it ends. [BaseObservation.n_lineelements]BaseObservation.target_dispatchthe target dispatch for each generator [BaseObservation.n_genelements]BaseObservation.actual_dispatchthe actual dispatch for each generator [BaseObservation.n_genelements]
This behavior is specified in the
BaseObservation.attr_list_vectvector.-
dictionnarized¶ The representation of the action in a form of a dictionnary. See the definition of
CompleteObservation.to_dict()for a description of this dictionnary.- Type
dict
-
__init__(gridobj, obs_env=None, action_helper=None, seed=None)[source]¶ Initialize self. See help(type(self)) for accurate signature.
-
bus_connectivity_matrix()[source]¶ If we denote by nb_bus the total number bus of the powergrid.
The bus_connectivity_matrix will have a size nb_bus, nb_bus and will be made of 0 and 1.
If bus_connectivity_matrix[i,j] = 1 then at least a power line connects bus i and bus j. Otherwise, nothing connects it.
- Returns
res – The bus connectivity matrix
- Return type
numpy.ndarray, shape:nb_bus,nb_bus dtype:float
-
connectivity_matrix()[source]¶ Computes and return the “connectivity matrix” con_mat. if “dim_topo = 2 * n_line + n_prod + n_conso” It is a matrix of size dim_topo, dim_topo, with values 0 or 1. For two objects (lines extremity, generator unit, load) i,j :
- if i and j are connected on the same substation:
if conn_mat[i,j] = 0 it means the objects id’ed i and j are not connected to the same bus.
if conn_mat[i,j] = 1 it means the objects id’ed i and j are connected to the same bus, are both end of the same powerline
if i and j are not connected on the same substation then`conn_mat[i,j] = 0` except if i and j are the two extremities of the same power line, in this case conn_mat[i,j] = 1.
By definition, the diagonal is made of 0.
- Returns
res – The connectivity matrix, as defined above
- Return type
numpy.ndarray, shape:dim_topo,dim_topo, dtype:float
-
from_vect(vect)[source]¶ Convert back an observation represented as a vector into a proper observation.
Some convertion are done silently from float to the type of the corresponding observation attribute.
- Parameters
vect (
numpy.ndarray) – A representation of an BaseObservation in the form of a vector that is used to convert back the current observation to be equal to the vect.
-
update(env)[source]¶ This use the environement to update properly the BaseObservation.
- Parameters
env (
grid2op.Environment.Environment) – The environment from which to update this observation.
-
class
grid2op.Observation.ObsEnv(backend_instanciated, parameters, reward_helper, obsClass, action_helper, thermal_limit_a, legalActClass, donothing_act, other_rewards={})[source]¶ This class is an ‘Emulator’ of a
grid2op.Environmentused to be able to ‘simulate’ forecasted grid states. It should not be used outside of angrid2op.BaseObservationinstance, or one of its derivative.It contains only the most basic element of an Environment. See
grid2op.Environmentfor more details.This class is reserved for internal use. Do not attempt to do anything with it.
-
__init__(backend_instanciated, parameters, reward_helper, obsClass, action_helper, thermal_limit_a, legalActClass, donothing_act, other_rewards={})[source]¶ Initialize self. See help(type(self)) for accurate signature.
-
copy()[source]¶ Implement the deep copy of this instance.
- Returns
res – A deep copy of this instance.
- Return type
-
get_obs()[source]¶ Method to retrieve the “forecasted grid” as a valid observation object.
- Returns
res – The observation available.
- Return type
grid2op.Observation.Observation
-
init(new_state_action, time_stamp, timestep_overflow)[source]¶ Initialize a “forecasted grid state” based on the new injections, possibly new topological modifications etc.
- Parameters
new_state_action (
grid2op.Action) – The action that is performed on the powergrid to get the forecast at the current date. This “action” is NOT performed by the user, it’s performed internally by the BaseObservation to have a “forecasted” powergrid with the forecasted values present in the chronics.time_stamp (
datetime.datetime) – The time stamp of the forecast, as a datetime.datetime object. NB this is not the time stamp at which the forecast is produced, but the time stamp of the powergrid forecasted.timestep_overflow (
numpy.ndarray) – The seegrid2op.Env.timestep_overflowfor a better description of this argument.
- Returns
- Return type
None
-
init_backend(init_grid_path, chronics_handler, backend, names_chronics_to_backend, actionClass, observationClass, rewardClass, legalActClass)[source]¶ backend should not be the backend of the environment!!!
- Parameters
init_grid_path –
chronics_handler –
backend –
names_chronics_to_backend –
actionClass –
observationClass –
rewardClass –
legalActClass –
-
simulate(action)[source]¶ This function is the core method of the
ObsEnv. It allows to perform a simulation of what would give and action if it were to be implemented on the “forecasted” powergrid.It has the same signature as
grid2op.Environment.Environment.step(). One of the major difference is that it doesn’t check whether the action is illegal or not (but an implementation could be provided for this method). The reason for this is that there is not one single and unique way to “forecast” how the thermal limit will behave, which lines will be available or not, which actions will be done or not between the time stamp at which “simulate” is called, and the time stamp that is simulated.- Parameters
action (
grid2op.Action.Action) – The action to test- Returns
observation (
grid2op.Observation.Observation) – agent’s observation of the current environmentreward (
float) – amount of reward returned after previous actiondone (
bool) – whether the episode has ended, in which case further step() calls will return undefined resultsinfo (
dict) – contains auxiliary diagnostic information (helpful for debugging, and sometimes learning). It is a dictionnary with keys:- ”disc_lines”: a numpy array (or
None) saying, for each powerline if it has been disconnected due to overflow
- ”disc_lines”: a numpy array (or
”is_illegal” (
bool) whether the action given as input was illegal”is_ambiguous” (
bool) whether the action given as input was ambiguous.
-
-
class
grid2op.Observation.ObservationSpace(gridobj, env, rewardClass=None, observationClass=<class 'grid2op.Observation.CompleteObservation.CompleteObservation'>)[source]¶ Helper that provides usefull functions to manipulate
BaseObservation.BaseObservation should only be built using this Helper. It is absolutely not recommended to make an observation directly form its constructor.
This class represents the same concept as the “BaseObservation Space” in the OpenAI gym framework.
-
observationClass¶ Class used to build the observations. It defaults to
CompleteObservation- Type
type
-
_empty_obs¶ An empty observation with the proper dimensions.
- Type
BaseObservation.BaseObservation
-
parameters¶ Type of Parameters used to compute powerflow for the forecast.
-
rewardClass¶ Class used by the
grid2op.Environment.Environmentto send information about its state to thegrid2op.BaseAgent.BaseAgent. You can change this class to differentiate between the reward of output ofBaseObservation.simulate()and the reward used to train the BaseAgent.- Type
type
-
action_helper_env¶ BaseAction space used to create action during the
BaseObservation.simulate()
-
reward_helper¶ BaseReward function used by the the
BaseObservation.simulate()function.- Type
grid2op.Reward.HelperReward
-
obs_env¶ Instance of the environenment used by the BaseObservation Helper to provide forcecast of the grid state.
- Type
-
_empty_obs¶ An instance of the observation that is updated and will be sent to he BaseAgent.
- Type
-
-
class
grid2op.Observation.SerializableObservationSpace(gridobj, observationClass=<class 'grid2op.Observation.CompleteObservation.CompleteObservation'>)[source]¶ This class allows to serialize / de serialize the action space.
It should not be used inside an Environment, as some functions of the action might not be compatible with the serialization, especially the checking of whether or not an BaseObservation is legal or not.
-
observationClass¶ Type used to build the
SerializableActionSpace._template_act- Type
type
-
_empty_obs¶ An instance of the “observationClass” provided used to provide higher level utilities
- Type
-
__init__(gridobj, observationClass=<class 'grid2op.Observation.CompleteObservation.CompleteObservation'>)[source]¶ - Parameters
gridobj (
grid2op.Space.GridObjects) – Representation of the objects in the powergrid.observationClass (
type) – Type of action used to buildSpace.SerializableSpace._template_obj
-
staticmethod
from_dict(dict_)[source]¶ Allows the de-serialization of an object stored as a dictionnary (for example in the case of json saving).
- Parameters
dict (
dict) – Representation of an BaseObservation Space (aka SerializableObservationSpace) as a dictionnary.- Returns
res – An instance of an action space matching the dictionnary.
- Return type
:class:
SerializableObservationSpace
-
If you still can’t find what you’re looking for, try in one of the following pages: