| | using UnityEngine.Profiling; |
| |
|
| | namespace Unity.MLAgents.Actuators |
| | { |
| | |
| | |
| | |
| | internal class VectorActuator : IActuator, IBuiltInActuator |
| | { |
| | IActionReceiver m_ActionReceiver; |
| | IHeuristicProvider m_HeuristicProvider; |
| |
|
| | ActionBuffers m_ActionBuffers; |
| | internal ActionBuffers ActionBuffers |
| | { |
| | get => m_ActionBuffers; |
| | private set => m_ActionBuffers = value; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public VectorActuator(IActionReceiver actionReceiver, |
| | ActionSpec actionSpec, |
| | string name = "VectorActuator") |
| | : this(actionReceiver, actionReceiver as IHeuristicProvider, actionSpec, name) { } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public VectorActuator(IActionReceiver actionReceiver, |
| | IHeuristicProvider heuristicProvider, |
| | ActionSpec actionSpec, |
| | string name = "VectorActuator") |
| | { |
| | m_ActionReceiver = actionReceiver; |
| | m_HeuristicProvider = heuristicProvider; |
| | ActionSpec = actionSpec; |
| | string suffix; |
| | if (actionSpec.NumContinuousActions == 0) |
| | { |
| | suffix = "-Discrete"; |
| | } |
| | else if (actionSpec.NumDiscreteActions == 0) |
| | { |
| | suffix = "-Continuous"; |
| | } |
| | else |
| | { |
| | suffix = $"-Continuous-{actionSpec.NumContinuousActions}-Discrete-{actionSpec.NumDiscreteActions}"; |
| | } |
| | Name = name + suffix; |
| | } |
| |
|
| | |
| | public void ResetData() |
| | { |
| | m_ActionBuffers = ActionBuffers.Empty; |
| | } |
| |
|
| | |
| | public void OnActionReceived(ActionBuffers actionBuffers) |
| | { |
| | Profiler.BeginSample("VectorActuator.OnActionReceived"); |
| | m_ActionBuffers = actionBuffers; |
| | m_ActionReceiver.OnActionReceived(m_ActionBuffers); |
| | Profiler.EndSample(); |
| | } |
| |
|
| | public void Heuristic(in ActionBuffers actionBuffersOut) |
| | { |
| | Profiler.BeginSample("VectorActuator.Heuristic"); |
| | m_HeuristicProvider?.Heuristic(actionBuffersOut); |
| | Profiler.EndSample(); |
| | } |
| |
|
| | |
| | public void WriteDiscreteActionMask(IDiscreteActionMask actionMask) |
| | { |
| | m_ActionReceiver.WriteDiscreteActionMask(actionMask); |
| | } |
| |
|
| | |
| | public ActionSpec ActionSpec { get; } |
| |
|
| | |
| | public string Name { get; } |
| |
|
| | |
| | public virtual BuiltInActuatorType GetBuiltInActuatorType() |
| | { |
| | return BuiltInActuatorType.VectorActuator; |
| | } |
| | } |
| | } |
| |
|