|
# Table of Contents |
|
|
|
* [mlagents\_envs.base\_env](#mlagents_envs.base_env) |
|
* [DecisionStep](#mlagents_envs.base_env.DecisionStep) |
|
* [DecisionSteps](#mlagents_envs.base_env.DecisionSteps) |
|
* [agent\_id\_to\_index](#mlagents_envs.base_env.DecisionSteps.agent_id_to_index) |
|
* [\_\_getitem\_\_](#mlagents_envs.base_env.DecisionSteps.__getitem__) |
|
* [empty](#mlagents_envs.base_env.DecisionSteps.empty) |
|
* [TerminalStep](#mlagents_envs.base_env.TerminalStep) |
|
* [TerminalSteps](#mlagents_envs.base_env.TerminalSteps) |
|
* [agent\_id\_to\_index](#mlagents_envs.base_env.TerminalSteps.agent_id_to_index) |
|
* [\_\_getitem\_\_](#mlagents_envs.base_env.TerminalSteps.__getitem__) |
|
* [empty](#mlagents_envs.base_env.TerminalSteps.empty) |
|
* [ActionTuple](#mlagents_envs.base_env.ActionTuple) |
|
* [discrete\_dtype](#mlagents_envs.base_env.ActionTuple.discrete_dtype) |
|
* [ActionSpec](#mlagents_envs.base_env.ActionSpec) |
|
* [is\_discrete](#mlagents_envs.base_env.ActionSpec.is_discrete) |
|
* [is\_continuous](#mlagents_envs.base_env.ActionSpec.is_continuous) |
|
* [discrete\_size](#mlagents_envs.base_env.ActionSpec.discrete_size) |
|
* [empty\_action](#mlagents_envs.base_env.ActionSpec.empty_action) |
|
* [random\_action](#mlagents_envs.base_env.ActionSpec.random_action) |
|
* [create\_continuous](#mlagents_envs.base_env.ActionSpec.create_continuous) |
|
* [create\_discrete](#mlagents_envs.base_env.ActionSpec.create_discrete) |
|
* [DimensionProperty](#mlagents_envs.base_env.DimensionProperty) |
|
* [UNSPECIFIED](#mlagents_envs.base_env.DimensionProperty.UNSPECIFIED) |
|
* [NONE](#mlagents_envs.base_env.DimensionProperty.NONE) |
|
* [TRANSLATIONAL\_EQUIVARIANCE](#mlagents_envs.base_env.DimensionProperty.TRANSLATIONAL_EQUIVARIANCE) |
|
* [VARIABLE\_SIZE](#mlagents_envs.base_env.DimensionProperty.VARIABLE_SIZE) |
|
* [ObservationType](#mlagents_envs.base_env.ObservationType) |
|
* [DEFAULT](#mlagents_envs.base_env.ObservationType.DEFAULT) |
|
* [GOAL\_SIGNAL](#mlagents_envs.base_env.ObservationType.GOAL_SIGNAL) |
|
* [ObservationSpec](#mlagents_envs.base_env.ObservationSpec) |
|
* [BehaviorSpec](#mlagents_envs.base_env.BehaviorSpec) |
|
* [BaseEnv](#mlagents_envs.base_env.BaseEnv) |
|
* [step](#mlagents_envs.base_env.BaseEnv.step) |
|
* [reset](#mlagents_envs.base_env.BaseEnv.reset) |
|
* [close](#mlagents_envs.base_env.BaseEnv.close) |
|
* [behavior\_specs](#mlagents_envs.base_env.BaseEnv.behavior_specs) |
|
* [set\_actions](#mlagents_envs.base_env.BaseEnv.set_actions) |
|
* [set\_action\_for\_agent](#mlagents_envs.base_env.BaseEnv.set_action_for_agent) |
|
* [get\_steps](#mlagents_envs.base_env.BaseEnv.get_steps) |
|
* [mlagents\_envs.environment](#mlagents_envs.environment) |
|
* [UnityEnvironment](#mlagents_envs.environment.UnityEnvironment) |
|
* [\_\_init\_\_](#mlagents_envs.environment.UnityEnvironment.__init__) |
|
* [close](#mlagents_envs.environment.UnityEnvironment.close) |
|
* [mlagents\_envs.registry](#mlagents_envs.registry) |
|
* [mlagents\_envs.registry.unity\_env\_registry](#mlagents_envs.registry.unity_env_registry) |
|
* [UnityEnvRegistry](#mlagents_envs.registry.unity_env_registry.UnityEnvRegistry) |
|
* [register](#mlagents_envs.registry.unity_env_registry.UnityEnvRegistry.register) |
|
* [register\_from\_yaml](#mlagents_envs.registry.unity_env_registry.UnityEnvRegistry.register_from_yaml) |
|
* [clear](#mlagents_envs.registry.unity_env_registry.UnityEnvRegistry.clear) |
|
* [\_\_getitem\_\_](#mlagents_envs.registry.unity_env_registry.UnityEnvRegistry.__getitem__) |
|
* [mlagents\_envs.side\_channel](#mlagents_envs.side_channel) |
|
* [mlagents\_envs.side\_channel.raw\_bytes\_channel](#mlagents_envs.side_channel.raw_bytes_channel) |
|
* [RawBytesChannel](#mlagents_envs.side_channel.raw_bytes_channel.RawBytesChannel) |
|
* [on\_message\_received](#mlagents_envs.side_channel.raw_bytes_channel.RawBytesChannel.on_message_received) |
|
* [get\_and\_clear\_received\_messages](#mlagents_envs.side_channel.raw_bytes_channel.RawBytesChannel.get_and_clear_received_messages) |
|
* [send\_raw\_data](#mlagents_envs.side_channel.raw_bytes_channel.RawBytesChannel.send_raw_data) |
|
* [mlagents\_envs.side\_channel.outgoing\_message](#mlagents_envs.side_channel.outgoing_message) |
|
* [OutgoingMessage](#mlagents_envs.side_channel.outgoing_message.OutgoingMessage) |
|
* [\_\_init\_\_](#mlagents_envs.side_channel.outgoing_message.OutgoingMessage.__init__) |
|
* [write\_bool](#mlagents_envs.side_channel.outgoing_message.OutgoingMessage.write_bool) |
|
* [write\_int32](#mlagents_envs.side_channel.outgoing_message.OutgoingMessage.write_int32) |
|
* [write\_float32](#mlagents_envs.side_channel.outgoing_message.OutgoingMessage.write_float32) |
|
* [write\_float32\_list](#mlagents_envs.side_channel.outgoing_message.OutgoingMessage.write_float32_list) |
|
* [write\_string](#mlagents_envs.side_channel.outgoing_message.OutgoingMessage.write_string) |
|
* [set\_raw\_bytes](#mlagents_envs.side_channel.outgoing_message.OutgoingMessage.set_raw_bytes) |
|
* [mlagents\_envs.side\_channel.engine\_configuration\_channel](#mlagents_envs.side_channel.engine_configuration_channel) |
|
* [EngineConfigurationChannel](#mlagents_envs.side_channel.engine_configuration_channel.EngineConfigurationChannel) |
|
* [on\_message\_received](#mlagents_envs.side_channel.engine_configuration_channel.EngineConfigurationChannel.on_message_received) |
|
* [set\_configuration\_parameters](#mlagents_envs.side_channel.engine_configuration_channel.EngineConfigurationChannel.set_configuration_parameters) |
|
* [set\_configuration](#mlagents_envs.side_channel.engine_configuration_channel.EngineConfigurationChannel.set_configuration) |
|
* [mlagents\_envs.side\_channel.side\_channel\_manager](#mlagents_envs.side_channel.side_channel_manager) |
|
* [SideChannelManager](#mlagents_envs.side_channel.side_channel_manager.SideChannelManager) |
|
* [process\_side\_channel\_message](#mlagents_envs.side_channel.side_channel_manager.SideChannelManager.process_side_channel_message) |
|
* [generate\_side\_channel\_messages](#mlagents_envs.side_channel.side_channel_manager.SideChannelManager.generate_side_channel_messages) |
|
* [mlagents\_envs.side\_channel.stats\_side\_channel](#mlagents_envs.side_channel.stats_side_channel) |
|
* [StatsSideChannel](#mlagents_envs.side_channel.stats_side_channel.StatsSideChannel) |
|
* [on\_message\_received](#mlagents_envs.side_channel.stats_side_channel.StatsSideChannel.on_message_received) |
|
* [get\_and\_reset\_stats](#mlagents_envs.side_channel.stats_side_channel.StatsSideChannel.get_and_reset_stats) |
|
* [mlagents\_envs.side\_channel.incoming\_message](#mlagents_envs.side_channel.incoming_message) |
|
* [IncomingMessage](#mlagents_envs.side_channel.incoming_message.IncomingMessage) |
|
* [\_\_init\_\_](#mlagents_envs.side_channel.incoming_message.IncomingMessage.__init__) |
|
* [read\_bool](#mlagents_envs.side_channel.incoming_message.IncomingMessage.read_bool) |
|
* [read\_int32](#mlagents_envs.side_channel.incoming_message.IncomingMessage.read_int32) |
|
* [read\_float32](#mlagents_envs.side_channel.incoming_message.IncomingMessage.read_float32) |
|
* [read\_float32\_list](#mlagents_envs.side_channel.incoming_message.IncomingMessage.read_float32_list) |
|
* [read\_string](#mlagents_envs.side_channel.incoming_message.IncomingMessage.read_string) |
|
* [get\_raw\_bytes](#mlagents_envs.side_channel.incoming_message.IncomingMessage.get_raw_bytes) |
|
* [mlagents\_envs.side\_channel.float\_properties\_channel](#mlagents_envs.side_channel.float_properties_channel) |
|
* [FloatPropertiesChannel](#mlagents_envs.side_channel.float_properties_channel.FloatPropertiesChannel) |
|
* [on\_message\_received](#mlagents_envs.side_channel.float_properties_channel.FloatPropertiesChannel.on_message_received) |
|
* [set\_property](#mlagents_envs.side_channel.float_properties_channel.FloatPropertiesChannel.set_property) |
|
* [get\_property](#mlagents_envs.side_channel.float_properties_channel.FloatPropertiesChannel.get_property) |
|
* [list\_properties](#mlagents_envs.side_channel.float_properties_channel.FloatPropertiesChannel.list_properties) |
|
* [get\_property\_dict\_copy](#mlagents_envs.side_channel.float_properties_channel.FloatPropertiesChannel.get_property_dict_copy) |
|
* [mlagents\_envs.side\_channel.environment\_parameters\_channel](#mlagents_envs.side_channel.environment_parameters_channel) |
|
* [EnvironmentParametersChannel](#mlagents_envs.side_channel.environment_parameters_channel.EnvironmentParametersChannel) |
|
* [set\_float\_parameter](#mlagents_envs.side_channel.environment_parameters_channel.EnvironmentParametersChannel.set_float_parameter) |
|
* [set\_uniform\_sampler\_parameters](#mlagents_envs.side_channel.environment_parameters_channel.EnvironmentParametersChannel.set_uniform_sampler_parameters) |
|
* [set\_gaussian\_sampler\_parameters](#mlagents_envs.side_channel.environment_parameters_channel.EnvironmentParametersChannel.set_gaussian_sampler_parameters) |
|
* [set\_multirangeuniform\_sampler\_parameters](#mlagents_envs.side_channel.environment_parameters_channel.EnvironmentParametersChannel.set_multirangeuniform_sampler_parameters) |
|
* [mlagents\_envs.side\_channel.side\_channel](#mlagents_envs.side_channel.side_channel) |
|
* [SideChannel](#mlagents_envs.side_channel.side_channel.SideChannel) |
|
* [queue\_message\_to\_send](#mlagents_envs.side_channel.side_channel.SideChannel.queue_message_to_send) |
|
* [on\_message\_received](#mlagents_envs.side_channel.side_channel.SideChannel.on_message_received) |
|
* [channel\_id](#mlagents_envs.side_channel.side_channel.SideChannel.channel_id) |
|
|
|
<a name="mlagents_envs.base_env"></a> |
|
# mlagents\_envs.base\_env |
|
|
|
Python Environment API for the ML-Agents Toolkit |
|
The aim of this API is to expose Agents evolving in a simulation |
|
to perform reinforcement learning on. |
|
This API supports multi-agent scenarios and groups similar Agents (same |
|
observations, actions spaces and behavior) together. These groups of Agents are |
|
identified by their BehaviorName. |
|
For performance reasons, the data of each group of agents is processed in a |
|
batched manner. Agents are identified by a unique AgentId identifier that |
|
allows tracking of Agents across simulation steps. Note that there is no |
|
guarantee that the number or order of the Agents in the state will be |
|
consistent across simulation steps. |
|
A simulation steps corresponds to moving the simulation forward until at least |
|
one agent in the simulation sends its observations to Python again. Since |
|
Agents can request decisions at different frequencies, a simulation step does |
|
not necessarily correspond to a fixed simulation time increment. |
|
|
|
<a name="mlagents_envs.base_env.DecisionStep"></a> |
|
## DecisionStep Objects |
|
|
|
```python |
|
class DecisionStep(NamedTuple) |
|
``` |
|
|
|
Contains the data a single Agent collected since the last |
|
simulation step. |
|
- obs is a list of numpy arrays observations collected by the agent. |
|
- reward is a float. Corresponds to the rewards collected by the agent |
|
since the last simulation step. |
|
- agent_id is an int and an unique identifier for the corresponding Agent. |
|
- action_mask is an optional list of one dimensional array of booleans. |
|
Only available when using multi-discrete actions. |
|
Each array corresponds to an action branch. Each array contains a mask |
|
for each action of the branch. If true, the action is not available for |
|
the agent during this simulation step. |
|
|
|
<a name="mlagents_envs.base_env.DecisionSteps"></a> |
|
## DecisionSteps Objects |
|
|
|
```python |
|
class DecisionSteps(Mapping) |
|
``` |
|
|
|
Contains the data a batch of similar Agents collected since the last |
|
simulation step. Note that all Agents do not necessarily have new |
|
information to send at each simulation step. Therefore, the ordering of |
|
agents and the batch size of the DecisionSteps are not fixed across |
|
simulation steps. |
|
- obs is a list of numpy arrays observations collected by the batch of |
|
agent. Each obs has one extra dimension compared to DecisionStep: the |
|
first dimension of the array corresponds to the batch size of the batch. |
|
- reward is a float vector of length batch size. Corresponds to the |
|
rewards collected by each agent since the last simulation step. |
|
- agent_id is an int vector of length batch size containing unique |
|
identifier for the corresponding Agent. This is used to track Agents |
|
across simulation steps. |
|
- action_mask is an optional list of two dimensional array of booleans. |
|
Only available when using multi-discrete actions. |
|
Each array corresponds to an action branch. The first dimension of each |
|
array is the batch size and the second contains a mask for each action of |
|
the branch. If true, the action is not available for the agent during |
|
this simulation step. |
|
|
|
<a name="mlagents_envs.base_env.DecisionSteps.agent_id_to_index"></a> |
|
#### agent\_id\_to\_index |
|
|
|
```python |
|
| @property |
|
| agent_id_to_index() -> Dict[AgentId, int] |
|
``` |
|
|
|
**Returns**: |
|
|
|
A Dict that maps agent_id to the index of those agents in |
|
this DecisionSteps. |
|
|
|
<a name="mlagents_envs.base_env.DecisionSteps.__getitem__"></a> |
|
#### \_\_getitem\_\_ |
|
|
|
```python |
|
| __getitem__(agent_id: AgentId) -> DecisionStep |
|
``` |
|
|
|
returns the DecisionStep for a specific agent. |
|
|
|
**Arguments**: |
|
|
|
- `agent_id`: The id of the agent |
|
|
|
**Returns**: |
|
|
|
The DecisionStep |
|
|
|
<a name="mlagents_envs.base_env.DecisionSteps.empty"></a> |
|
#### empty |
|
|
|
```python |
|
| @staticmethod |
|
| empty(spec: "BehaviorSpec") -> "DecisionSteps" |
|
``` |
|
|
|
Returns an empty DecisionSteps. |
|
|
|
**Arguments**: |
|
|
|
- `spec`: The BehaviorSpec for the DecisionSteps |
|
|
|
<a name="mlagents_envs.base_env.TerminalStep"></a> |
|
## TerminalStep Objects |
|
|
|
```python |
|
class TerminalStep(NamedTuple) |
|
``` |
|
|
|
Contains the data a single Agent collected when its episode ended. |
|
- obs is a list of numpy arrays observations collected by the agent. |
|
- reward is a float. Corresponds to the rewards collected by the agent |
|
since the last simulation step. |
|
- interrupted is a bool. Is true if the Agent was interrupted since the last |
|
decision step. For example, if the Agent reached the maximum number of steps for |
|
the episode. |
|
- agent_id is an int and an unique identifier for the corresponding Agent. |
|
|
|
<a name="mlagents_envs.base_env.TerminalSteps"></a> |
|
## TerminalSteps Objects |
|
|
|
```python |
|
class TerminalSteps(Mapping) |
|
``` |
|
|
|
Contains the data a batch of Agents collected when their episode |
|
terminated. All Agents present in the TerminalSteps have ended their |
|
episode. |
|
- obs is a list of numpy arrays observations collected by the batch of |
|
agent. Each obs has one extra dimension compared to DecisionStep: the |
|
first dimension of the array corresponds to the batch size of the batch. |
|
- reward is a float vector of length batch size. Corresponds to the |
|
rewards collected by each agent since the last simulation step. |
|
- interrupted is an array of booleans of length batch size. Is true if the |
|
associated Agent was interrupted since the last decision step. For example, if the |
|
Agent reached the maximum number of steps for the episode. |
|
- agent_id is an int vector of length batch size containing unique |
|
identifier for the corresponding Agent. This is used to track Agents |
|
across simulation steps. |
|
|
|
<a name="mlagents_envs.base_env.TerminalSteps.agent_id_to_index"></a> |
|
#### agent\_id\_to\_index |
|
|
|
```python |
|
| @property |
|
| agent_id_to_index() -> Dict[AgentId, int] |
|
``` |
|
|
|
**Returns**: |
|
|
|
A Dict that maps agent_id to the index of those agents in |
|
this TerminalSteps. |
|
|
|
<a name="mlagents_envs.base_env.TerminalSteps.__getitem__"></a> |
|
#### \_\_getitem\_\_ |
|
|
|
```python |
|
| __getitem__(agent_id: AgentId) -> TerminalStep |
|
``` |
|
|
|
returns the TerminalStep for a specific agent. |
|
|
|
**Arguments**: |
|
|
|
- `agent_id`: The id of the agent |
|
|
|
**Returns**: |
|
|
|
obs, reward, done, agent_id and optional action mask for a |
|
specific agent |
|
|
|
<a name="mlagents_envs.base_env.TerminalSteps.empty"></a> |
|
#### empty |
|
|
|
```python |
|
| @staticmethod |
|
| empty(spec: "BehaviorSpec") -> "TerminalSteps" |
|
``` |
|
|
|
Returns an empty TerminalSteps. |
|
|
|
**Arguments**: |
|
|
|
- `spec`: The BehaviorSpec for the TerminalSteps |
|
|
|
<a name="mlagents_envs.base_env.ActionTuple"></a> |
|
## ActionTuple Objects |
|
|
|
```python |
|
class ActionTuple(_ActionTupleBase) |
|
``` |
|
|
|
An object whose fields correspond to actions of different types. |
|
Continuous and discrete actions are numpy arrays of type float32 and |
|
int32, respectively and are type checked on construction. |
|
Dimensions are of (n_agents, continuous_size) and (n_agents, discrete_size), |
|
respectively. Note, this also holds when continuous or discrete size is |
|
zero. |
|
|
|
<a name="mlagents_envs.base_env.ActionTuple.discrete_dtype"></a> |
|
#### discrete\_dtype |
|
|
|
```python |
|
| @property |
|
| discrete_dtype() -> np.dtype |
|
``` |
|
|
|
The dtype of a discrete action. |
|
|
|
<a name="mlagents_envs.base_env.ActionSpec"></a> |
|
## ActionSpec Objects |
|
|
|
```python |
|
class ActionSpec(NamedTuple) |
|
``` |
|
|
|
A NamedTuple containing utility functions and information about the action spaces |
|
for a group of Agents under the same behavior. |
|
- num_continuous_actions is an int corresponding to the number of floats which |
|
constitute the action. |
|
- discrete_branch_sizes is a Tuple of int where each int corresponds to |
|
the number of discrete actions available to the agent on an independent action branch. |
|
|
|
<a name="mlagents_envs.base_env.ActionSpec.is_discrete"></a> |
|
#### is\_discrete |
|
|
|
```python |
|
| is_discrete() -> bool |
|
``` |
|
|
|
Returns true if this Behavior uses discrete actions |
|
|
|
<a name="mlagents_envs.base_env.ActionSpec.is_continuous"></a> |
|
#### is\_continuous |
|
|
|
```python |
|
| is_continuous() -> bool |
|
``` |
|
|
|
Returns true if this Behavior uses continuous actions |
|
|
|
<a name="mlagents_envs.base_env.ActionSpec.discrete_size"></a> |
|
#### discrete\_size |
|
|
|
```python |
|
| @property |
|
| discrete_size() -> int |
|
``` |
|
|
|
Returns a an int corresponding to the number of discrete branches. |
|
|
|
<a name="mlagents_envs.base_env.ActionSpec.empty_action"></a> |
|
#### empty\_action |
|
|
|
```python |
|
| empty_action(n_agents: int) -> ActionTuple |
|
``` |
|
|
|
Generates ActionTuple corresponding to an empty action (all zeros) |
|
for a number of agents. |
|
|
|
**Arguments**: |
|
|
|
- `n_agents`: The number of agents that will have actions generated |
|
|
|
<a name="mlagents_envs.base_env.ActionSpec.random_action"></a> |
|
#### random\_action |
|
|
|
```python |
|
| random_action(n_agents: int) -> ActionTuple |
|
``` |
|
|
|
Generates ActionTuple corresponding to a random action (either discrete |
|
or continuous) for a number of agents. |
|
|
|
**Arguments**: |
|
|
|
- `n_agents`: The number of agents that will have actions generated |
|
|
|
<a name="mlagents_envs.base_env.ActionSpec.create_continuous"></a> |
|
#### create\_continuous |
|
|
|
```python |
|
| @staticmethod |
|
| create_continuous(continuous_size: int) -> "ActionSpec" |
|
``` |
|
|
|
Creates an ActionSpec that is homogenously continuous |
|
|
|
<a name="mlagents_envs.base_env.ActionSpec.create_discrete"></a> |
|
#### create\_discrete |
|
|
|
```python |
|
| @staticmethod |
|
| create_discrete(discrete_branches: Tuple[int]) -> "ActionSpec" |
|
``` |
|
|
|
Creates an ActionSpec that is homogenously discrete |
|
|
|
<a name="mlagents_envs.base_env.DimensionProperty"></a> |
|
## DimensionProperty Objects |
|
|
|
```python |
|
class DimensionProperty(IntFlag) |
|
``` |
|
|
|
The dimension property of a dimension of an observation. |
|
|
|
<a name="mlagents_envs.base_env.DimensionProperty.UNSPECIFIED"></a> |
|
#### UNSPECIFIED |
|
|
|
No properties specified. |
|
|
|
<a name="mlagents_envs.base_env.DimensionProperty.NONE"></a> |
|
#### NONE |
|
|
|
No Property of the observation in that dimension. Observation can be processed with |
|
Fully connected networks. |
|
|
|
<a name="mlagents_envs.base_env.DimensionProperty.TRANSLATIONAL_EQUIVARIANCE"></a> |
|
#### TRANSLATIONAL\_EQUIVARIANCE |
|
|
|
Means it is suitable to do a convolution in this dimension. |
|
|
|
<a name="mlagents_envs.base_env.DimensionProperty.VARIABLE_SIZE"></a> |
|
#### VARIABLE\_SIZE |
|
|
|
Means that there can be a variable number of observations in this dimension. |
|
The observations are unordered. |
|
|
|
<a name="mlagents_envs.base_env.ObservationType"></a> |
|
## ObservationType Objects |
|
|
|
```python |
|
class ObservationType(Enum) |
|
``` |
|
|
|
An Enum which defines the type of information carried in the observation |
|
of the agent. |
|
|
|
<a name="mlagents_envs.base_env.ObservationType.DEFAULT"></a> |
|
#### DEFAULT |
|
|
|
Observation information is generic. |
|
|
|
<a name="mlagents_envs.base_env.ObservationType.GOAL_SIGNAL"></a> |
|
#### GOAL\_SIGNAL |
|
|
|
Observation contains goal information for current task. |
|
|
|
<a name="mlagents_envs.base_env.ObservationSpec"></a> |
|
## ObservationSpec Objects |
|
|
|
```python |
|
class ObservationSpec(NamedTuple) |
|
``` |
|
|
|
A NamedTuple containing information about the observation of Agents. |
|
- shape is a Tuple of int : It corresponds to the shape of |
|
an observation's dimensions. |
|
- dimension_property is a Tuple of DimensionProperties flag, one flag for each |
|
dimension. |
|
- observation_type is an enum of ObservationType. |
|
|
|
<a name="mlagents_envs.base_env.BehaviorSpec"></a> |
|
## BehaviorSpec Objects |
|
|
|
```python |
|
class BehaviorSpec(NamedTuple) |
|
``` |
|
|
|
A NamedTuple containing information about the observation and action |
|
spaces for a group of Agents under the same behavior. |
|
- observation_specs is a List of ObservationSpec NamedTuple containing |
|
information about the information of the Agent's observations such as their shapes. |
|
The order of the ObservationSpec is the same as the order of the observations of an |
|
agent. |
|
- action_spec is an ActionSpec NamedTuple. |
|
|
|
<a name="mlagents_envs.base_env.BaseEnv"></a> |
|
## BaseEnv Objects |
|
|
|
```python |
|
class BaseEnv(ABC) |
|
``` |
|
|
|
<a name="mlagents_envs.base_env.BaseEnv.step"></a> |
|
#### step |
|
|
|
```python |
|
| @abstractmethod |
|
| step() -> None |
|
``` |
|
|
|
Signals the environment that it must move the simulation forward |
|
by one step. |
|
|
|
<a name="mlagents_envs.base_env.BaseEnv.reset"></a> |
|
#### reset |
|
|
|
```python |
|
| @abstractmethod |
|
| reset() -> None |
|
``` |
|
|
|
Signals the environment that it must reset the simulation. |
|
|
|
<a name="mlagents_envs.base_env.BaseEnv.close"></a> |
|
#### close |
|
|
|
```python |
|
| @abstractmethod |
|
| close() -> None |
|
``` |
|
|
|
Signals the environment that it must close. |
|
|
|
<a name="mlagents_envs.base_env.BaseEnv.behavior_specs"></a> |
|
#### behavior\_specs |
|
|
|
```python |
|
| @property |
|
| @abstractmethod |
|
| behavior_specs() -> MappingType[str, BehaviorSpec] |
|
``` |
|
|
|
Returns a Mapping from behavior names to behavior specs. |
|
Agents grouped under the same behavior name have the same action and |
|
observation specs, and are expected to behave similarly in the |
|
environment. |
|
Note that new keys can be added to this mapping as new policies are instantiated. |
|
|
|
<a name="mlagents_envs.base_env.BaseEnv.set_actions"></a> |
|
#### set\_actions |
|
|
|
```python |
|
| @abstractmethod |
|
| set_actions(behavior_name: BehaviorName, action: ActionTuple) -> None |
|
``` |
|
|
|
Sets the action for all of the agents in the simulation for the next |
|
step. The Actions must be in the same order as the order received in |
|
the DecisionSteps. |
|
|
|
**Arguments**: |
|
|
|
- `behavior_name`: The name of the behavior the agents are part of |
|
- `action`: ActionTuple tuple of continuous and/or discrete action. |
|
Actions are np.arrays with dimensions (n_agents, continuous_size) and |
|
(n_agents, discrete_size), respectively. |
|
|
|
<a name="mlagents_envs.base_env.BaseEnv.set_action_for_agent"></a> |
|
#### set\_action\_for\_agent |
|
|
|
```python |
|
| @abstractmethod |
|
| set_action_for_agent(behavior_name: BehaviorName, agent_id: AgentId, action: ActionTuple) -> None |
|
``` |
|
|
|
Sets the action for one of the agents in the simulation for the next |
|
step. |
|
|
|
**Arguments**: |
|
|
|
- `behavior_name`: The name of the behavior the agent is part of |
|
- `agent_id`: The id of the agent the action is set for |
|
- `action`: ActionTuple tuple of continuous and/or discrete action |
|
Actions are np.arrays with dimensions (1, continuous_size) and |
|
(1, discrete_size), respectively. Note, this initial dimensions of 1 is because |
|
this action is meant for a single agent. |
|
|
|
<a name="mlagents_envs.base_env.BaseEnv.get_steps"></a> |
|
#### get\_steps |
|
|
|
```python |
|
| @abstractmethod |
|
| get_steps(behavior_name: BehaviorName) -> Tuple[DecisionSteps, TerminalSteps] |
|
``` |
|
|
|
Retrieves the steps of the agents that requested a step in the |
|
simulation. |
|
|
|
**Arguments**: |
|
|
|
- `behavior_name`: The name of the behavior the agents are part of |
|
|
|
**Returns**: |
|
|
|
A tuple containing : |
|
- A DecisionSteps NamedTuple containing the observations, |
|
the rewards, the agent ids and the action masks for the Agents |
|
of the specified behavior. These Agents need an action this step. |
|
- A TerminalSteps NamedTuple containing the observations, |
|
rewards, agent ids and interrupted flags of the agents that had their |
|
episode terminated last step. |
|
|
|
<a name="mlagents_envs.environment"></a> |
|
# mlagents\_envs.environment |
|
|
|
<a name="mlagents_envs.environment.UnityEnvironment"></a> |
|
## UnityEnvironment Objects |
|
|
|
```python |
|
class UnityEnvironment(BaseEnv) |
|
``` |
|
|
|
<a name="mlagents_envs.environment.UnityEnvironment.__init__"></a> |
|
#### \_\_init\_\_ |
|
|
|
```python |
|
| __init__(file_name: Optional[str] = None, worker_id: int = 0, base_port: Optional[int] = None, seed: int = 0, no_graphics: bool = False, timeout_wait: int = 60, additional_args: Optional[List[str]] = None, side_channels: Optional[List[SideChannel]] = None, log_folder: Optional[str] = None, num_areas: int = 1) |
|
``` |
|
|
|
Starts a new unity environment and establishes a connection with the environment. |
|
Notice: Currently communication between Unity and Python takes place over an open socket without authentication. |
|
Ensure that the network where training takes place is secure. |
|
|
|
:string file_name: Name of Unity environment binary. |
|
:int base_port: Baseline port number to connect to Unity environment over. worker_id increments over this. |
|
If no environment is specified (i.e. file_name is None), the DEFAULT_EDITOR_PORT will be used. |
|
:int worker_id: Offset from base_port. Used for training multiple environments simultaneously. |
|
:bool no_graphics: Whether to run the Unity simulator in no-graphics mode |
|
:int timeout_wait: Time (in seconds) to wait for connection from environment. |
|
:list args: Addition Unity command line arguments |
|
:list side_channels: Additional side channel for no-rl communication with Unity |
|
:str log_folder: Optional folder to write the Unity Player log file into. Requires absolute path. |
|
|
|
<a name="mlagents_envs.environment.UnityEnvironment.close"></a> |
|
#### close |
|
|
|
```python |
|
| close() |
|
``` |
|
|
|
Sends a shutdown signal to the unity environment, and closes the socket connection. |
|
|
|
<a name="mlagents_envs.registry"></a> |
|
# mlagents\_envs.registry |
|
|
|
<a name="mlagents_envs.registry.unity_env_registry"></a> |
|
# mlagents\_envs.registry.unity\_env\_registry |
|
|
|
<a name="mlagents_envs.registry.unity_env_registry.UnityEnvRegistry"></a> |
|
## UnityEnvRegistry Objects |
|
|
|
```python |
|
class UnityEnvRegistry(Mapping) |
|
``` |
|
|
|
### UnityEnvRegistry |
|
Provides a library of Unity environments that can be launched without the need |
|
of downloading the Unity Editor. |
|
The UnityEnvRegistry implements a Map, to access an entry of the Registry, use: |
|
```python |
|
registry = UnityEnvRegistry() |
|
entry = registry[<environment_identifyier>] |
|
``` |
|
An entry has the following properties : |
|
* `identifier` : Uniquely identifies this environment |
|
* `expected_reward` : Corresponds to the reward an agent must obtained for the task |
|
to be considered completed. |
|
* `description` : A human readable description of the environment. |
|
|
|
To launch a Unity environment from a registry entry, use the `make` method: |
|
```python |
|
registry = UnityEnvRegistry() |
|
env = registry[<environment_identifyier>].make() |
|
``` |
|
|
|
<a name="mlagents_envs.registry.unity_env_registry.UnityEnvRegistry.register"></a> |
|
#### register |
|
|
|
```python |
|
| register(new_entry: BaseRegistryEntry) -> None |
|
``` |
|
|
|
Registers a new BaseRegistryEntry to the registry. The |
|
BaseRegistryEntry.identifier value will be used as indexing key. |
|
If two are more environments are registered under the same key, the most |
|
recentry added will replace the others. |
|
|
|
<a name="mlagents_envs.registry.unity_env_registry.UnityEnvRegistry.register_from_yaml"></a> |
|
#### register\_from\_yaml |
|
|
|
```python |
|
| register_from_yaml(path_to_yaml: str) -> None |
|
``` |
|
|
|
Registers the environments listed in a yaml file (either local or remote). Note |
|
that the entries are registered lazily: the registration will only happen when |
|
an environment is accessed. |
|
The yaml file must have the following format : |
|
```yaml |
|
environments: |
|
- <identifier of the first environment>: |
|
expected_reward: <expected reward of the environment> |
|
description: | <a multi line description of the environment> |
|
<continued multi line description> |
|
linux_url: <The url for the Linux executable zip file> |
|
darwin_url: <The url for the OSX executable zip file> |
|
win_url: <The url for the Windows executable zip file> |
|
|
|
- <identifier of the second environment>: |
|
expected_reward: <expected reward of the environment> |
|
description: | <a multi line description of the environment> |
|
<continued multi line description> |
|
linux_url: <The url for the Linux executable zip file> |
|
darwin_url: <The url for the OSX executable zip file> |
|
win_url: <The url for the Windows executable zip file> |
|
|
|
- ... |
|
``` |
|
|
|
**Arguments**: |
|
|
|
- `path_to_yaml`: A local path or url to the yaml file |
|
|
|
<a name="mlagents_envs.registry.unity_env_registry.UnityEnvRegistry.clear"></a> |
|
#### clear |
|
|
|
```python |
|
| clear() -> None |
|
``` |
|
|
|
Deletes all entries in the registry. |
|
|
|
<a name="mlagents_envs.registry.unity_env_registry.UnityEnvRegistry.__getitem__"></a> |
|
#### \_\_getitem\_\_ |
|
|
|
```python |
|
| __getitem__(identifier: str) -> BaseRegistryEntry |
|
``` |
|
|
|
Returns the BaseRegistryEntry with the provided identifier. BaseRegistryEntry |
|
can then be used to make a Unity Environment. |
|
|
|
**Arguments**: |
|
|
|
- `identifier`: The identifier of the BaseRegistryEntry |
|
|
|
**Returns**: |
|
|
|
The associated BaseRegistryEntry |
|
|
|
<a name="mlagents_envs.side_channel"></a> |
|
# mlagents\_envs.side\_channel |
|
|
|
<a name="mlagents_envs.side_channel.raw_bytes_channel"></a> |
|
# mlagents\_envs.side\_channel.raw\_bytes\_channel |
|
|
|
<a name="mlagents_envs.side_channel.raw_bytes_channel.RawBytesChannel"></a> |
|
## RawBytesChannel Objects |
|
|
|
```python |
|
class RawBytesChannel(SideChannel) |
|
``` |
|
|
|
This is an example of what the SideChannel for raw bytes exchange would |
|
look like. Is meant to be used for general research purpose. |
|
|
|
<a name="mlagents_envs.side_channel.raw_bytes_channel.RawBytesChannel.on_message_received"></a> |
|
#### on\_message\_received |
|
|
|
```python |
|
| on_message_received(msg: IncomingMessage) -> None |
|
``` |
|
|
|
Is called by the environment to the side channel. Can be called |
|
multiple times per step if multiple messages are meant for that |
|
SideChannel. |
|
|
|
<a name="mlagents_envs.side_channel.raw_bytes_channel.RawBytesChannel.get_and_clear_received_messages"></a> |
|
#### get\_and\_clear\_received\_messages |
|
|
|
```python |
|
| get_and_clear_received_messages() -> List[bytes] |
|
``` |
|
|
|
returns a list of bytearray received from the environment. |
|
|
|
<a name="mlagents_envs.side_channel.raw_bytes_channel.RawBytesChannel.send_raw_data"></a> |
|
#### send\_raw\_data |
|
|
|
```python |
|
| send_raw_data(data: bytearray) -> None |
|
``` |
|
|
|
Queues a message to be sent by the environment at the next call to |
|
step. |
|
|
|
<a name="mlagents_envs.side_channel.outgoing_message"></a> |
|
# mlagents\_envs.side\_channel.outgoing\_message |
|
|
|
<a name="mlagents_envs.side_channel.outgoing_message.OutgoingMessage"></a> |
|
## OutgoingMessage Objects |
|
|
|
```python |
|
class OutgoingMessage() |
|
``` |
|
|
|
Utility class for forming the message that is written to a SideChannel. |
|
All data is written in little-endian format using the struct module. |
|
|
|
<a name="mlagents_envs.side_channel.outgoing_message.OutgoingMessage.__init__"></a> |
|
#### \_\_init\_\_ |
|
|
|
```python |
|
| __init__() |
|
``` |
|
|
|
Create an OutgoingMessage with an empty buffer. |
|
|
|
<a name="mlagents_envs.side_channel.outgoing_message.OutgoingMessage.write_bool"></a> |
|
#### write\_bool |
|
|
|
```python |
|
| write_bool(b: bool) -> None |
|
``` |
|
|
|
Append a boolean value. |
|
|
|
<a name="mlagents_envs.side_channel.outgoing_message.OutgoingMessage.write_int32"></a> |
|
#### write\_int32 |
|
|
|
```python |
|
| write_int32(i: int) -> None |
|
``` |
|
|
|
Append an integer value. |
|
|
|
<a name="mlagents_envs.side_channel.outgoing_message.OutgoingMessage.write_float32"></a> |
|
#### write\_float32 |
|
|
|
```python |
|
| write_float32(f: float) -> None |
|
``` |
|
|
|
Append a float value. It will be truncated to 32-bit precision. |
|
|
|
<a name="mlagents_envs.side_channel.outgoing_message.OutgoingMessage.write_float32_list"></a> |
|
#### write\_float32\_list |
|
|
|
```python |
|
| write_float32_list(float_list: List[float]) -> None |
|
``` |
|
|
|
Append a list of float values. They will be truncated to 32-bit precision. |
|
|
|
<a name="mlagents_envs.side_channel.outgoing_message.OutgoingMessage.write_string"></a> |
|
#### write\_string |
|
|
|
```python |
|
| write_string(s: str) -> None |
|
``` |
|
|
|
Append a string value. Internally, it will be encoded to ascii, and the |
|
encoded length will also be written to the message. |
|
|
|
<a name="mlagents_envs.side_channel.outgoing_message.OutgoingMessage.set_raw_bytes"></a> |
|
#### set\_raw\_bytes |
|
|
|
```python |
|
| set_raw_bytes(buffer: bytearray) -> None |
|
``` |
|
|
|
Set the internal buffer to a new bytearray. This will overwrite any existing data. |
|
|
|
**Arguments**: |
|
|
|
- `buffer`: |
|
|
|
**Returns**: |
|
|
|
|
|
|
|
<a name="mlagents_envs.side_channel.engine_configuration_channel"></a> |
|
# mlagents\_envs.side\_channel.engine\_configuration\_channel |
|
|
|
<a name="mlagents_envs.side_channel.engine_configuration_channel.EngineConfigurationChannel"></a> |
|
## EngineConfigurationChannel Objects |
|
|
|
```python |
|
class EngineConfigurationChannel(SideChannel) |
|
``` |
|
|
|
This is the SideChannel for engine configuration exchange. The data in the |
|
engine configuration is as follows : |
|
- int width; |
|
- int height; |
|
- int qualityLevel; |
|
- float timeScale; |
|
- int targetFrameRate; |
|
- int captureFrameRate; |
|
|
|
<a name="mlagents_envs.side_channel.engine_configuration_channel.EngineConfigurationChannel.on_message_received"></a> |
|
#### on\_message\_received |
|
|
|
```python |
|
| on_message_received(msg: IncomingMessage) -> None |
|
``` |
|
|
|
Is called by the environment to the side channel. Can be called |
|
multiple times per step if multiple messages are meant for that |
|
SideChannel. |
|
Note that Python should never receive an engine configuration from |
|
Unity |
|
|
|
<a name="mlagents_envs.side_channel.engine_configuration_channel.EngineConfigurationChannel.set_configuration_parameters"></a> |
|
#### set\_configuration\_parameters |
|
|
|
```python |
|
| set_configuration_parameters(width: Optional[int] = None, height: Optional[int] = None, quality_level: Optional[int] = None, time_scale: Optional[float] = None, target_frame_rate: Optional[int] = None, capture_frame_rate: Optional[int] = None) -> None |
|
``` |
|
|
|
Sets the engine configuration. Takes as input the configurations of the |
|
engine. |
|
|
|
**Arguments**: |
|
|
|
- `width`: Defines the width of the display. (Must be set alongside height) |
|
- `height`: Defines the height of the display. (Must be set alongside width) |
|
- `quality_level`: Defines the quality level of the simulation. |
|
- `time_scale`: Defines the multiplier for the deltatime in the |
|
simulation. If set to a higher value, time will pass faster in the |
|
simulation but the physics might break. |
|
- `target_frame_rate`: Instructs simulation to try to render at a |
|
specified frame rate. |
|
- `capture_frame_rate`: Instructs the simulation to consider time between |
|
updates to always be constant, regardless of the actual frame rate. |
|
|
|
<a name="mlagents_envs.side_channel.engine_configuration_channel.EngineConfigurationChannel.set_configuration"></a> |
|
#### set\_configuration |
|
|
|
```python |
|
| set_configuration(config: EngineConfig) -> None |
|
``` |
|
|
|
Sets the engine configuration. Takes as input an EngineConfig. |
|
|
|
<a name="mlagents_envs.side_channel.side_channel_manager"></a> |
|
# mlagents\_envs.side\_channel.side\_channel\_manager |
|
|
|
<a name="mlagents_envs.side_channel.side_channel_manager.SideChannelManager"></a> |
|
## SideChannelManager Objects |
|
|
|
```python |
|
class SideChannelManager() |
|
``` |
|
|
|
<a name="mlagents_envs.side_channel.side_channel_manager.SideChannelManager.process_side_channel_message"></a> |
|
#### process\_side\_channel\_message |
|
|
|
```python |
|
| process_side_channel_message(data: bytes) -> None |
|
``` |
|
|
|
Separates the data received from Python into individual messages for each |
|
registered side channel and calls on_message_received on them. |
|
|
|
**Arguments**: |
|
|
|
- `data`: The packed message sent by Unity |
|
|
|
<a name="mlagents_envs.side_channel.side_channel_manager.SideChannelManager.generate_side_channel_messages"></a> |
|
#### generate\_side\_channel\_messages |
|
|
|
```python |
|
| generate_side_channel_messages() -> bytearray |
|
``` |
|
|
|
Gathers the messages that the registered side channels will send to Unity |
|
and combines them into a single message ready to be sent. |
|
|
|
<a name="mlagents_envs.side_channel.stats_side_channel"></a> |
|
# mlagents\_envs.side\_channel.stats\_side\_channel |
|
|
|
<a name="mlagents_envs.side_channel.stats_side_channel.StatsSideChannel"></a> |
|
## StatsSideChannel Objects |
|
|
|
```python |
|
class StatsSideChannel(SideChannel) |
|
``` |
|
|
|
Side channel that receives (string, float) pairs from the environment, so that they can eventually |
|
be passed to a StatsReporter. |
|
|
|
<a name="mlagents_envs.side_channel.stats_side_channel.StatsSideChannel.on_message_received"></a> |
|
#### on\_message\_received |
|
|
|
```python |
|
| on_message_received(msg: IncomingMessage) -> None |
|
``` |
|
|
|
Receive the message from the environment, and save it for later retrieval. |
|
|
|
**Arguments**: |
|
|
|
- `msg`: |
|
|
|
**Returns**: |
|
|
|
|
|
|
|
<a name="mlagents_envs.side_channel.stats_side_channel.StatsSideChannel.get_and_reset_stats"></a> |
|
#### get\_and\_reset\_stats |
|
|
|
```python |
|
| get_and_reset_stats() -> EnvironmentStats |
|
``` |
|
|
|
Returns the current stats, and resets the internal storage of the stats. |
|
|
|
**Returns**: |
|
|
|
|
|
|
|
<a name="mlagents_envs.side_channel.incoming_message"></a> |
|
# mlagents\_envs.side\_channel.incoming\_message |
|
|
|
<a name="mlagents_envs.side_channel.incoming_message.IncomingMessage"></a> |
|
## IncomingMessage Objects |
|
|
|
```python |
|
class IncomingMessage() |
|
``` |
|
|
|
Utility class for reading the message written to a SideChannel. |
|
Values must be read in the order they were written. |
|
|
|
<a name="mlagents_envs.side_channel.incoming_message.IncomingMessage.__init__"></a> |
|
#### \_\_init\_\_ |
|
|
|
```python |
|
| __init__(buffer: bytes, offset: int = 0) |
|
``` |
|
|
|
Create a new IncomingMessage from the bytes. |
|
|
|
<a name="mlagents_envs.side_channel.incoming_message.IncomingMessage.read_bool"></a> |
|
#### read\_bool |
|
|
|
```python |
|
| read_bool(default_value: bool = False) -> bool |
|
``` |
|
|
|
Read a boolean value from the message buffer. |
|
|
|
**Arguments**: |
|
|
|
- `default_value`: Default value to use if the end of the message is reached. |
|
|
|
**Returns**: |
|
|
|
The value read from the message, or the default value if the end was reached. |
|
|
|
<a name="mlagents_envs.side_channel.incoming_message.IncomingMessage.read_int32"></a> |
|
#### read\_int32 |
|
|
|
```python |
|
| read_int32(default_value: int = 0) -> int |
|
``` |
|
|
|
Read an integer value from the message buffer. |
|
|
|
**Arguments**: |
|
|
|
- `default_value`: Default value to use if the end of the message is reached. |
|
|
|
**Returns**: |
|
|
|
The value read from the message, or the default value if the end was reached. |
|
|
|
<a name="mlagents_envs.side_channel.incoming_message.IncomingMessage.read_float32"></a> |
|
#### read\_float32 |
|
|
|
```python |
|
| read_float32(default_value: float = 0.0) -> float |
|
``` |
|
|
|
Read a float value from the message buffer. |
|
|
|
**Arguments**: |
|
|
|
- `default_value`: Default value to use if the end of the message is reached. |
|
|
|
**Returns**: |
|
|
|
The value read from the message, or the default value if the end was reached. |
|
|
|
<a name="mlagents_envs.side_channel.incoming_message.IncomingMessage.read_float32_list"></a> |
|
#### read\_float32\_list |
|
|
|
```python |
|
| read_float32_list(default_value: List[float] = None) -> List[float] |
|
``` |
|
|
|
Read a list of float values from the message buffer. |
|
|
|
**Arguments**: |
|
|
|
- `default_value`: Default value to use if the end of the message is reached. |
|
|
|
**Returns**: |
|
|
|
The value read from the message, or the default value if the end was reached. |
|
|
|
<a name="mlagents_envs.side_channel.incoming_message.IncomingMessage.read_string"></a> |
|
#### read\_string |
|
|
|
```python |
|
| read_string(default_value: str = "") -> str |
|
``` |
|
|
|
Read a string value from the message buffer. |
|
|
|
**Arguments**: |
|
|
|
- `default_value`: Default value to use if the end of the message is reached. |
|
|
|
**Returns**: |
|
|
|
The value read from the message, or the default value if the end was reached. |
|
|
|
<a name="mlagents_envs.side_channel.incoming_message.IncomingMessage.get_raw_bytes"></a> |
|
#### get\_raw\_bytes |
|
|
|
```python |
|
| get_raw_bytes() -> bytes |
|
``` |
|
|
|
Get a copy of the internal bytes used by the message. |
|
|
|
<a name="mlagents_envs.side_channel.float_properties_channel"></a> |
|
# mlagents\_envs.side\_channel.float\_properties\_channel |
|
|
|
<a name="mlagents_envs.side_channel.float_properties_channel.FloatPropertiesChannel"></a> |
|
## FloatPropertiesChannel Objects |
|
|
|
```python |
|
class FloatPropertiesChannel(SideChannel) |
|
``` |
|
|
|
This is the SideChannel for float properties shared with Unity. |
|
You can modify the float properties of an environment with the commands |
|
set_property, get_property and list_properties. |
|
|
|
<a name="mlagents_envs.side_channel.float_properties_channel.FloatPropertiesChannel.on_message_received"></a> |
|
#### on\_message\_received |
|
|
|
```python |
|
| on_message_received(msg: IncomingMessage) -> None |
|
``` |
|
|
|
Is called by the environment to the side channel. Can be called |
|
multiple times per step if multiple messages are meant for that |
|
SideChannel. |
|
|
|
<a name="mlagents_envs.side_channel.float_properties_channel.FloatPropertiesChannel.set_property"></a> |
|
#### set\_property |
|
|
|
```python |
|
| set_property(key: str, value: float) -> None |
|
``` |
|
|
|
Sets a property in the Unity Environment. |
|
|
|
**Arguments**: |
|
|
|
- `key`: The string identifier of the property. |
|
- `value`: The float value of the property. |
|
|
|
<a name="mlagents_envs.side_channel.float_properties_channel.FloatPropertiesChannel.get_property"></a> |
|
#### get\_property |
|
|
|
```python |
|
| get_property(key: str) -> Optional[float] |
|
``` |
|
|
|
Gets a property in the Unity Environment. If the property was not |
|
found, will return None. |
|
|
|
**Arguments**: |
|
|
|
- `key`: The string identifier of the property. |
|
|
|
**Returns**: |
|
|
|
The float value of the property or None. |
|
|
|
<a name="mlagents_envs.side_channel.float_properties_channel.FloatPropertiesChannel.list_properties"></a> |
|
#### list\_properties |
|
|
|
```python |
|
| list_properties() -> List[str] |
|
``` |
|
|
|
Returns a list of all the string identifiers of the properties |
|
currently present in the Unity Environment. |
|
|
|
<a name="mlagents_envs.side_channel.float_properties_channel.FloatPropertiesChannel.get_property_dict_copy"></a> |
|
#### get\_property\_dict\_copy |
|
|
|
```python |
|
| get_property_dict_copy() -> Dict[str, float] |
|
``` |
|
|
|
Returns a copy of the float properties. |
|
|
|
**Returns**: |
|
|
|
|
|
|
|
<a name="mlagents_envs.side_channel.environment_parameters_channel"></a> |
|
# mlagents\_envs.side\_channel.environment\_parameters\_channel |
|
|
|
<a name="mlagents_envs.side_channel.environment_parameters_channel.EnvironmentParametersChannel"></a> |
|
## EnvironmentParametersChannel Objects |
|
|
|
```python |
|
class EnvironmentParametersChannel(SideChannel) |
|
``` |
|
|
|
This is the SideChannel for sending environment parameters to Unity. |
|
You can send parameters to an environment with the command |
|
set_float_parameter. |
|
|
|
<a name="mlagents_envs.side_channel.environment_parameters_channel.EnvironmentParametersChannel.set_float_parameter"></a> |
|
#### set\_float\_parameter |
|
|
|
```python |
|
| set_float_parameter(key: str, value: float) -> None |
|
``` |
|
|
|
Sets a float environment parameter in the Unity Environment. |
|
|
|
**Arguments**: |
|
|
|
- `key`: The string identifier of the parameter. |
|
- `value`: The float value of the parameter. |
|
|
|
<a name="mlagents_envs.side_channel.environment_parameters_channel.EnvironmentParametersChannel.set_uniform_sampler_parameters"></a> |
|
#### set\_uniform\_sampler\_parameters |
|
|
|
```python |
|
| set_uniform_sampler_parameters(key: str, min_value: float, max_value: float, seed: int) -> None |
|
``` |
|
|
|
Sets a uniform environment parameter sampler. |
|
|
|
**Arguments**: |
|
|
|
- `key`: The string identifier of the parameter. |
|
- `min_value`: The minimum of the sampling distribution. |
|
- `max_value`: The maximum of the sampling distribution. |
|
- `seed`: The random seed to initialize the sampler. |
|
|
|
<a name="mlagents_envs.side_channel.environment_parameters_channel.EnvironmentParametersChannel.set_gaussian_sampler_parameters"></a> |
|
#### set\_gaussian\_sampler\_parameters |
|
|
|
```python |
|
| set_gaussian_sampler_parameters(key: str, mean: float, st_dev: float, seed: int) -> None |
|
``` |
|
|
|
Sets a gaussian environment parameter sampler. |
|
|
|
**Arguments**: |
|
|
|
- `key`: The string identifier of the parameter. |
|
- `mean`: The mean of the sampling distribution. |
|
- `st_dev`: The standard deviation of the sampling distribution. |
|
- `seed`: The random seed to initialize the sampler. |
|
|
|
<a name="mlagents_envs.side_channel.environment_parameters_channel.EnvironmentParametersChannel.set_multirangeuniform_sampler_parameters"></a> |
|
#### set\_multirangeuniform\_sampler\_parameters |
|
|
|
```python |
|
| set_multirangeuniform_sampler_parameters(key: str, intervals: List[Tuple[float, float]], seed: int) -> None |
|
``` |
|
|
|
Sets a multirangeuniform environment parameter sampler. |
|
|
|
**Arguments**: |
|
|
|
- `key`: The string identifier of the parameter. |
|
- `intervals`: The lists of min and max that define each uniform distribution. |
|
- `seed`: The random seed to initialize the sampler. |
|
|
|
<a name="mlagents_envs.side_channel.side_channel"></a> |
|
# mlagents\_envs.side\_channel.side\_channel |
|
|
|
<a name="mlagents_envs.side_channel.side_channel.SideChannel"></a> |
|
## SideChannel Objects |
|
|
|
```python |
|
class SideChannel(ABC) |
|
``` |
|
|
|
The side channel just get access to a bytes buffer that will be shared |
|
between C# and Python. For example, We will create a specific side channel |
|
for properties that will be a list of string (fixed size) to float number, |
|
that can be modified by both C# and Python. All side channels are passed |
|
to the Env object at construction. |
|
|
|
<a name="mlagents_envs.side_channel.side_channel.SideChannel.queue_message_to_send"></a> |
|
#### queue\_message\_to\_send |
|
|
|
```python |
|
| queue_message_to_send(msg: OutgoingMessage) -> None |
|
``` |
|
|
|
Queues a message to be sent by the environment at the next call to |
|
step. |
|
|
|
<a name="mlagents_envs.side_channel.side_channel.SideChannel.on_message_received"></a> |
|
#### on\_message\_received |
|
|
|
```python |
|
| @abstractmethod |
|
| on_message_received(msg: IncomingMessage) -> None |
|
``` |
|
|
|
Is called by the environment to the side channel. Can be called |
|
multiple times per step if multiple messages are meant for that |
|
SideChannel. |
|
|
|
<a name="mlagents_envs.side_channel.side_channel.SideChannel.channel_id"></a> |
|
#### channel\_id |
|
|
|
```python |
|
| @property |
|
| channel_id() -> uuid.UUID |
|
``` |
|
|
|
**Returns**: |
|
|
|
The type of side channel used. Will influence how the data is |
|
processed in the environment. |
|
|