public void TestEverythingMismatch()
        {
            var validator   = new SensorShapeValidator();
            var sensorList1 = new List <ISensor>()
            {
                new DummySensor(1), new DummySensor(2, 3), new DummySensor(4, 5, 6)
            };

            validator.ValidateSensors(sensorList1);

            var sensorList2 = new List <ISensor>()
            {
                new DummySensor(1), new DummySensor(9)
            };

            LogAssert.Expect(LogType.Assert, "Number of Sensors must match. 3 != 2");
            LogAssert.Expect(LogType.Assert, "Sensor dimensions must match.");
            LogAssert.Expect(LogType.Assert, "Sensor sizes must match.");
            validator.ValidateSensors(sensorList2);

            // Add the sensors in the other order
            validator = new SensorShapeValidator();
            validator.ValidateSensors(sensorList2);
            LogAssert.Expect(LogType.Assert, "Number of Sensors must match. 2 != 3");
            LogAssert.Expect(LogType.Assert, "Sensor dimensions must match.");
            LogAssert.Expect(LogType.Assert, "Sensor sizes must match.");
            validator.ValidateSensors(sensorList1);
        }
        public void TestShapesAgree()
        {
            var validator   = new SensorShapeValidator();
            var sensorList1 = new List <ISensor>()
            {
                new DummySensor(1), new DummySensor(2, 3), new DummySensor(4, 5, 6)
            };

            validator.ValidateSensors(sensorList1);

            var sensorList2 = new List <ISensor>()
            {
                new DummySensor(1), new DummySensor(2, 3), new DummySensor(4, 5, 6)
            };

            validator.ValidateSensors(sensorList2);
        }
Beispiel #3
0
        /// <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);
            }
        }
        public void TestSizeMismatch()
        {
            var validator   = new SensorShapeValidator();
            var sensorList1 = new List <ISensor>()
            {
                new DummySensor(1), new DummySensor(2, 3), new DummySensor(4, 5, 6)
            };

            validator.ValidateSensors(sensorList1);

            var sensorList2 = new List <ISensor>()
            {
                new DummySensor(1), new DummySensor(2, 3), new DummySensor(4, 5, 7)
            };

            LogAssert.Expect(LogType.Assert, "Sensor sizes must match.");
            validator.ValidateSensors(sensorList2);

            // Add the sensors in the other order
            validator = new SensorShapeValidator();
            validator.ValidateSensors(sensorList2);
            LogAssert.Expect(LogType.Assert, "Sensor sizes must match.");
            validator.ValidateSensors(sensorList1);
        }