using System; | |
using System.Collections.Generic; | |
using Unity.MLAgents.SideChannels; | |
namespace Unity.MLAgents | |
{ | |
/// <summary> | |
/// A container for the Environment Parameters that may be modified during training. | |
/// The keys for those parameters are defined in the trainer configurations and the | |
/// the values are generated from the training process in features such as Curriculum Learning | |
/// and Environment Parameter Randomization. | |
/// | |
/// One current assumption for all the environment parameters is that they are of type float. | |
/// </summary> | |
public sealed class EnvironmentParameters | |
{ | |
/// <summary> | |
/// The side channel that is used to receive the new parameter values. | |
/// </summary> | |
readonly EnvironmentParametersChannel m_Channel; | |
/// <summary> | |
/// Constructor. | |
/// </summary> | |
internal EnvironmentParameters() | |
{ | |
m_Channel = new EnvironmentParametersChannel(); | |
SideChannelManager.RegisterSideChannel(m_Channel); | |
} | |
/// <summary> | |
/// Returns the parameter value for the specified key. Returns the default value provided | |
/// if this parameter key does not have a value. Only returns a parameter value if it is | |
/// of type float. | |
/// </summary> | |
/// <param name="key">The parameter key</param> | |
/// <param name="defaultValue">Default value for this parameter.</param> | |
/// <returns></returns> | |
public float GetWithDefault(string key, float defaultValue) | |
{ | |
return m_Channel.GetWithDefault(key, defaultValue); | |
} | |
/// <summary> | |
/// Registers a callback action for the provided parameter key. Will overwrite any | |
/// existing action for that parameter. The callback will be called whenever the parameter | |
/// receives a value from the training process. | |
/// </summary> | |
/// <param name="key">The parameter key</param> | |
/// <param name="action">The callback action</param> | |
public void RegisterCallback(string key, Action<float> action) | |
{ | |
m_Channel.RegisterCallback(key, action); | |
} | |
/// <summary> | |
/// Returns a list of all the parameter keys that have received values. | |
/// </summary> | |
/// <returns>List of parameter keys.</returns> | |
public IList<string> Keys() | |
{ | |
return m_Channel.ListParameters(); | |
} | |
internal void Dispose() | |
{ | |
SideChannelManager.UnregisterSideChannel(m_Channel); | |
} | |
} | |
} | |