mirror of
https://github.com/vale981/ray
synced 2025-03-06 10:31:39 -05:00
50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
import gym
|
|
from typing import List, Any
|
|
|
|
TaskType = Any # Can be different types depending on env, e.g., int or dict
|
|
|
|
|
|
class TaskSettableEnv(gym.Env):
|
|
"""
|
|
Extension of gym.Env to define a task-settable Env.
|
|
|
|
Your env must implement this interface in order to be used with MAML.
|
|
For curriculum learning, you can add this API to your env such that
|
|
the `env_task_fn` can set the next task as needed.
|
|
|
|
Supports:
|
|
- Sampling from a distribution of tasks for meta-learning.
|
|
- Setting the env to any task it supports.
|
|
- Getting the current task this env has been set to.
|
|
|
|
Examples:
|
|
>>> from ray.rllib.env.apis.task_settable_env import TaskSettableEnv
|
|
>>> env = TaskSettableEnv(...) # doctest: +SKIP
|
|
"""
|
|
|
|
def sample_tasks(self, n_tasks: int) -> List[TaskType]:
|
|
"""Samples task of the meta-environment
|
|
|
|
Args:
|
|
n_tasks (int) : number of different meta-tasks needed
|
|
|
|
Returns:
|
|
tasks (list) : an (n_tasks) length list of tasks
|
|
"""
|
|
raise NotImplementedError
|
|
|
|
def set_task(self, task: TaskType) -> None:
|
|
"""Sets the specified task to the current environment
|
|
|
|
Args:
|
|
task: task of the meta-learning environment
|
|
"""
|
|
raise NotImplementedError
|
|
|
|
def get_task(self) -> TaskType:
|
|
"""Gets the task that the agent is performing in the current environment
|
|
|
|
Returns:
|
|
task: task of the meta-learning environment
|
|
"""
|
|
raise NotImplementedError
|