mirror of
https://github.com/Farama-Foundation/Gymnasium.git
synced 2025-08-16 11:39:13 +00:00
The "strong random seed" defined in utils.seeding and used in environments cannot be used to seed the action spaces (np.random.RandomState only supports uint32 seeds). For consistency, the same seeding procedure should be used everywhere.
44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
from gym.utils import seeding
|
|
|
|
|
|
class Space(object):
|
|
"""Defines the observation and action spaces, so you can write generic
|
|
code that applies to any Env. For example, you can choose a random
|
|
action.
|
|
"""
|
|
def __init__(self, shape=None, dtype=None):
|
|
import numpy as np # takes about 300-400ms to import, so we load lazily
|
|
self.shape = None if shape is None else tuple(shape)
|
|
self.dtype = None if dtype is None else np.dtype(dtype)
|
|
self.np_random = None
|
|
self.seed()
|
|
|
|
def sample(self):
|
|
"""Uniformly randomly sample a random element of this space. """
|
|
raise NotImplementedError
|
|
|
|
def seed(self, seed=None):
|
|
"""Seed the PRNG of this space. """
|
|
self.np_random, seed = seeding.np_random(seed)
|
|
return [seed]
|
|
|
|
def contains(self, x):
|
|
"""
|
|
Return boolean specifying if x is a valid
|
|
member of this space
|
|
"""
|
|
raise NotImplementedError
|
|
|
|
def __contains__(self, x):
|
|
return self.contains(x)
|
|
|
|
def to_jsonable(self, sample_n):
|
|
"""Convert a batch of samples from this space to a JSONable data type."""
|
|
# By default, assume identity is JSONable
|
|
return sample_n
|
|
|
|
def from_jsonable(self, sample_n):
|
|
"""Convert a JSONable data type to a batch of samples from this space."""
|
|
# By default, assume identity is JSONable
|
|
return sample_n
|