using System; | |
using System.Collections.Generic; | |
using Unity.MLAgents.Actuators; | |
using Unity.MLAgents.Sensors; | |
namespace Unity.MLAgents.Policies | |
{ | |
/// <summary> | |
/// IPolicy is connected to a single Agent. Each time the agent needs | |
/// a decision, it will request a decision to the Policy. The decision | |
/// will not be taken immediately but will be taken before or when | |
/// DecideAction is called. | |
/// </summary> | |
internal interface IPolicy : IDisposable | |
{ | |
/// <summary> | |
/// Signals the Brain that the Agent needs a Decision. The Policy | |
/// will make the decision at a later time to allow possible | |
/// batching of requests. | |
/// </summary> | |
/// <param name="info"></param> | |
/// <param name="sensors"></param> | |
void RequestDecision(AgentInfo info, List<ISensor> sensors); | |
/// <summary> | |
/// Signals the Policy that if the Decision has not been taken yet, | |
/// it must be taken now. The Brain is expected to update the actions | |
/// of the Agents at this point the latest. | |
/// </summary> | |
ref readonly ActionBuffers DecideAction(); | |
} | |
} | |