ray/rllib/env/env_context.py

43 lines
1.7 KiB
Python

from ray.rllib.utils.annotations import PublicAPI
from ray.rllib.utils.types import EnvConfigDict
@PublicAPI
class EnvContext(dict):
"""Wraps env configurations to include extra rllib metadata.
These attributes can be used to parameterize environments per process.
For example, one might use `worker_index` to control which data file an
environment reads in on initialization.
RLlib auto-sets these attributes when constructing registered envs.
Attributes:
worker_index (int): When there are multiple workers created, this
uniquely identifies the worker the env is created in.
vector_index (int): When there are multiple envs per worker, this
uniquely identifies the env index within the worker.
remote (bool): Whether environment should be remote or not.
"""
def __init__(self,
env_config: EnvConfigDict,
worker_index: int,
vector_index: int = 0,
remote: bool = False):
dict.__init__(self, env_config)
self.worker_index = worker_index
self.vector_index = vector_index
self.remote = remote
def copy_with_overrides(self,
env_config: EnvConfigDict = None,
worker_index: int = None,
vector_index: int = None,
remote: bool = None):
return EnvContext(
env_config if env_config is not None else self,
worker_index if worker_index is not None else self.worker_index,
vector_index if vector_index is not None else self.vector_index,
remote if remote is not None else self.remote,
)