Skip to content

Commit edd3a5a

Browse files
authored
Make IActuator implement IHeuristicProvider. (#5110)
1 parent 8f2f73f commit edd3a5a

File tree

6 files changed

+7
-6
lines changed

6 files changed

+7
-6
lines changed

com.unity.ml-agents.extensions/Runtime/Input/InputActionActuator.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace Unity.MLAgents.Extensions.Input
1414
/// <see cref="Agent"/>'s <see cref="BehaviorParameters"/> indicate that the Agent is running in Heuristic Mode,
1515
/// this Actuator will write actions from the <see cref="InputSystem"/> to the <see cref="ActionBuffers"/> object.
1616
/// </summary>
17-
public class InputActionActuator : IActuator, IHeuristicProvider, IBuiltInActuator
17+
public class InputActionActuator : IActuator, IBuiltInActuator
1818
{
1919
readonly BehaviorParameters m_BehaviorParameters;
2020
readonly InputAction m_Action;

com.unity.ml-agents/CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ and this project adheres to
1313
- The interface for disabling discrete actions in `IDiscreteActionMask` has changed.
1414
`WriteMask(int branch, IEnumerable<int> actionIndices)` was replaced with
1515
`SetActionEnabled(int branch, int actionIndex, bool isEnabled)`. See the
16+
- IActuator now implements IHeuristicProvider. (#5110)
1617
[Migration Guide](https://github.com/Unity-Technologies/ml-agents/blob/release_14_docs/docs/Migrating.md) for more
1718
details. (#5060)
1819
#### ml-agents / ml-agents-envs / gym-unity (Python)

com.unity.ml-agents/Runtime/Actuators/ActuatorManager.cs

+1-3
Original file line numberDiff line numberDiff line change
@@ -244,9 +244,7 @@ public void ApplyHeuristic(in ActionBuffers actionBuffersOut)
244244
discreteStart,
245245
numDiscreteActions);
246246
}
247-
248-
var heuristic = actuator as IHeuristicProvider;
249-
heuristic?.Heuristic(new ActionBuffers(continuousActions, discreteActions));
247+
actuator.Heuristic(new ActionBuffers(continuousActions, discreteActions));
250248
continuousStart += numContinuousActions;
251249
discreteStart += numDiscreteActions;
252250
}

com.unity.ml-agents/Runtime/Actuators/IActuator.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ namespace Unity.MLAgents.Actuators
33
/// <summary>
44
/// Abstraction that facilitates the execution of actions.
55
/// </summary>
6-
public interface IActuator : IActionReceiver
6+
public interface IActuator : IActionReceiver, IHeuristicProvider
77
{
88
/// <summary>
99
/// The specification of the actions for this IActuator.

com.unity.ml-agents/Runtime/Actuators/VectorActuator.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace Unity.MLAgents.Actuators
55
/// <summary>
66
/// IActuator implementation that forwards calls to an <see cref="IActionReceiver"/> and an <see cref="IHeuristicProvider"/>.
77
/// </summary>
8-
internal class VectorActuator : IActuator, IHeuristicProvider, IBuiltInActuator
8+
internal class VectorActuator : IActuator, IBuiltInActuator
99
{
1010
IActionReceiver m_ActionReceiver;
1111
IHeuristicProvider m_HeuristicProvider;

docs/Migrating.md

+2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ public override void WriteDiscreteActionMask(IDiscreteActionMask actionMask)
4141
actionMask.SetActionEnabled(branch, 3, false);
4242
}
4343
```
44+
- The `IActuator` interface now implements `IHeuristicProvider`. Please add the corresponding `Heuristic(in ActionBuffers)`
45+
method to your custom Actuator classes.
4446

4547
## Migrating to Release 13
4648
### Implementing IHeuristic in your IActuator implementations

0 commit comments

Comments
 (0)