AnnaMats's picture
Second Push
05c9ac2
namespace Unity.MLAgents.Actuators
{
/// <summary>
/// Abstraction that facilitates the execution of actions.
/// </summary>
public interface IActuator : IActionReceiver, IHeuristicProvider
{
/// <summary>
/// The specification of the actions for this IActuator.
/// </summary>
/// <seealso cref="ActionSpec"/>
ActionSpec ActionSpec { get; }
/// <summary>
/// Gets the name of this IActuator which will be used to sort it.
/// </summary>
/// <returns></returns>
string Name { get; }
/// <summary>
/// Resets the internal state of the actuator. This is called at the end of an Agent's episode.
/// Most implementations can leave this empty.
/// </summary>
void ResetData();
}
/// <summary>
/// Helper methods to be shared by all classes that implement <see cref="IActuator"/>.
/// </summary>
public static class IActuatorExtensions
{
/// <summary>
/// Returns the number of discrete branches + the number of continuous actions.
/// </summary>
/// <param name="actuator"></param>
/// <returns></returns>
public static int TotalNumberOfActions(this IActuator actuator)
{
return actuator.ActionSpec.NumContinuousActions + actuator.ActionSpec.NumDiscreteActions;
}
}
}