|
from abc import abstractmethod |
|
from typing import Any, Optional |
|
from mlagents_envs.base_env import BaseEnv |
|
|
|
|
|
class BaseRegistryEntry: |
|
def __init__( |
|
self, |
|
identifier: str, |
|
expected_reward: Optional[float], |
|
description: Optional[str], |
|
): |
|
""" |
|
BaseRegistryEntry allows launching a Unity Environment with its make method. |
|
:param identifier: The name of the Unity Environment. |
|
:param expected_reward: The cumulative reward that an Agent must receive |
|
for the task to be considered solved. |
|
:param description: A description of the Unity Environment. Contains human |
|
readable information about potential special arguments that the make method can |
|
take as well as information regarding the observation, reward, actions, |
|
behaviors and number of agents in the Environment. |
|
""" |
|
self._identifier = identifier |
|
self._expected_reward = expected_reward |
|
self._description = description |
|
|
|
@property |
|
def identifier(self) -> str: |
|
""" |
|
The unique identifier of the entry |
|
""" |
|
return self._identifier |
|
|
|
@property |
|
def expected_reward(self) -> Optional[float]: |
|
""" |
|
The cumulative reward that an Agent must receive for the task to be considered |
|
solved. |
|
""" |
|
return self._expected_reward |
|
|
|
@property |
|
def description(self) -> Optional[str]: |
|
""" |
|
A description of the Unity Environment the entry can make. |
|
""" |
|
return self._description |
|
|
|
@abstractmethod |
|
def make(self, **kwargs: Any) -> BaseEnv: |
|
""" |
|
This method creates a Unity BaseEnv (usually a UnityEnvironment). |
|
""" |
|
raise NotImplementedError( |
|
f"The make() method not implemented for entry {self.identifier}" |
|
) |
|
|