public void TestDefaultAgentInfoToProto() { // Should be able to convert a default instance to proto. var agentInfo = new AgentInfo(); var pairProto = agentInfo.ToInfoActionPairProto(); pairProto.AgentInfo.Observations.Add(new ObservationProto { CompressedData = ByteString.Empty, CompressionType = CompressionTypeProto.None, FloatData = new ObservationProto.Types.FloatData(), ObservationType = ObservationTypeProto.Default, Name = "Sensor" }); pairProto.AgentInfo.Observations[0].Shape.Add(0); pairProto.GetObservationSummaries(); agentInfo.ToAgentInfoProto(); agentInfo.groupId = 1; Academy.Instance.TrainerCapabilities = new UnityRLCapabilities { BaseRLCapabilities = true, MultiAgentGroups = false }; agentInfo.ToAgentInfoProto(); LogAssert.Expect(LogType.Warning, new Regex(".+")); Academy.Instance.TrainerCapabilities = new UnityRLCapabilities { BaseRLCapabilities = true, MultiAgentGroups = true }; agentInfo.ToAgentInfoProto(); }
public void TestDefaultAgentInfoToProto() { // Should be able to convert a default instance to proto. var agentInfo = new AgentInfo(); agentInfo.ToInfoActionPairProto(); agentInfo.ToAgentInfoProto(); }
/// <summary> /// Converts a AgentInfo to a protobuf generated AgentInfoActionPairProto /// </summary> /// <returns>The protobuf version of the AgentInfoActionPairProto.</returns> public static AgentInfoActionPairProto ToInfoActionPairProto(this AgentInfo ai) { var agentInfoProto = ai.ToAgentInfoProto(); var agentActionProto = new AgentActionProto { VectorActions = { ai.storedVectorActions } }; return(new AgentInfoActionPairProto { AgentInfo = agentInfoProto, ActionInfo = agentActionProto }); }
/// <summary> /// Converts a AgentInfo to a protobuf generated AgentInfoActionPairProto /// </summary> /// <returns>The protobuf version of the AgentInfoActionPairProto.</returns> public static AgentInfoActionPairProto ToInfoActionPairProto(this AgentInfo ai) { var agentInfoProto = ai.ToAgentInfoProto(); var agentActionProto = new AgentActionProto(); if (ai.storedVectorActions != null) { agentActionProto.VectorActions.AddRange(ai.storedVectorActions); } return(new AgentInfoActionPairProto { AgentInfo = agentInfoProto, ActionInfo = agentActionProto }); }
/// <summary> /// Sends the observations of one Agent. /// </summary> /// <param name="behaviorName">Batch Key.</param> /// <param name="info">Agent info.</param> /// <param name="sensors">Sensors that will produce the observations</param> public void PutObservations(string behaviorName, AgentInfo info, List <ISensor> sensors) { #if DEBUG if (!m_SensorShapeValidators.ContainsKey(behaviorName)) { m_SensorShapeValidators[behaviorName] = new SensorShapeValidator(); } m_SensorShapeValidators[behaviorName].ValidateSensors(sensors); #endif using (TimerStack.Instance.Scoped("AgentInfo.ToProto")) { var agentInfoProto = info.ToAgentInfoProto(); using (TimerStack.Instance.Scoped("GenerateSensorData")) { foreach (var sensor in sensors) { var obsProto = sensor.GetObservationProto(m_ObservationWriter); agentInfoProto.Observations.Add(obsProto); } } m_CurrentUnityRlOutput.AgentInfos[behaviorName].Value.Add(agentInfoProto); } m_NeedCommunicateThisStep = true; if (!m_OrderedAgentsRequestingDecisions.ContainsKey(behaviorName)) { m_OrderedAgentsRequestingDecisions[behaviorName] = new List <int>(); } if (!info.done) { m_OrderedAgentsRequestingDecisions[behaviorName].Add(info.episodeId); } if (!m_LastActionsReceived.ContainsKey(behaviorName)) { m_LastActionsReceived[behaviorName] = new Dictionary <int, ActionBuffers>(); } m_LastActionsReceived[behaviorName][info.episodeId] = ActionBuffers.Empty; if (info.done) { m_LastActionsReceived[behaviorName].Remove(info.episodeId); } }
/// <summary> /// Converts a AgentInfo to a protobuf generated AgentInfoActionPairProto /// </summary> /// <returns>The protobuf version of the AgentInfoActionPairProto.</returns> public static AgentInfoActionPairProto ToInfoActionPairProto(this AgentInfo ai) { var agentInfoProto = ai.ToAgentInfoProto(); var agentActionProto = new AgentActionProto(); if (!ai.storedActions.IsEmpty()) { if (!ai.storedActions.ContinuousActions.IsEmpty()) { agentActionProto.ContinuousActions.AddRange(ai.storedActions.ContinuousActions.Array); } if (!ai.storedActions.DiscreteActions.IsEmpty()) { agentActionProto.DiscreteActions.AddRange(ai.storedActions.DiscreteActions.Array); } } return(new AgentInfoActionPairProto { AgentInfo = agentInfoProto, ActionInfo = agentActionProto }); }