Example #1
0
        public void TestRunModel_deterministic()
        {
            var actionSpec  = GetContinuous2vis8vec2actionActionSpec();
            var modelRunner = new ModelRunner(deterministicContinuousNNModel, actionSpec, InferenceDevice.Burst);
            var sensor_8    = new Sensors.VectorSensor(8, "VectorSensor8");
            var info1       = new AgentInfo();
            var obs         = new[]
            {
                sensor_8,
                sensor_21_20_3.CreateSensors()[0],
                sensor_20_22_3.CreateSensors()[0]
            }.ToList();
            var deterministicModelRunner = new ModelRunner(deterministicContinuousNNModel, actionSpec, InferenceDevice.Burst,
                                                           deterministicInference: true);

            info1.episodeId = 1;
            deterministicModelRunner.PutObservations(info1, obs);
            deterministicModelRunner.DecideBatch();
            var deterministicAction1 = (float[])deterministicModelRunner.GetAction(1).ContinuousActions.Array.Clone();

            deterministicModelRunner.PutObservations(info1, obs);
            deterministicModelRunner.DecideBatch();
            var deterministicAction2 = (float[])deterministicModelRunner.GetAction(1).ContinuousActions.Array.Clone();

            // Deterministic action selection should output same action everytime
            Assert.IsTrue(Enumerable.SequenceEqual(deterministicAction1, deterministicAction2, new FloatThresholdComparer(0.001f)));
            modelRunner.Dispose();
        }
        public void TestRunModel()
        {
            var actionSpec  = GetContinuous2vis8vec2actionActionSpec();
            var modelRunner = new ModelRunner(continuousONNXModel, actionSpec, InferenceDevice.Burst);
            var sensor_8    = new Sensors.VectorSensor(8, "VectorSensor8");
            var info1       = new AgentInfo();

            info1.episodeId = 1;
            modelRunner.PutObservations(info1, new[] {
                sensor_8,
                sensor_21_20_3.CreateSensors()[0],
                sensor_20_22_3.CreateSensors()[0]
            }.ToList());
            var info2 = new AgentInfo();

            info2.episodeId = 2;
            modelRunner.PutObservations(info2, new[] {
                sensor_8,
                sensor_21_20_3.CreateSensors()[0],
                sensor_20_22_3.CreateSensors()[0]
            }.ToList());

            modelRunner.DecideBatch();

            Assert.IsFalse(modelRunner.GetAction(1).Equals(ActionBuffers.Empty));
            Assert.IsFalse(modelRunner.GetAction(2).Equals(ActionBuffers.Empty));
            Assert.IsTrue(modelRunner.GetAction(3).Equals(ActionBuffers.Empty));
            Assert.AreEqual(actionSpec.NumDiscreteActions, modelRunner.GetAction(1).DiscreteActions.Length);
            modelRunner.Dispose();
        }
Example #3
0
        public void TestRunModel_stochastic()
        {
            var actionSpec = GetContinuous2vis8vec2actionActionSpec();
            // deterministicInference = false by default
            var modelRunner = new ModelRunner(deterministicContinuousNNModel, actionSpec, InferenceDevice.Burst);
            var sensor_8    = new Sensors.VectorSensor(8, "VectorSensor8");
            var info1       = new AgentInfo();
            var obs         = new[]
            {
                sensor_8,
                sensor_21_20_3.CreateSensors()[0],
                sensor_20_22_3.CreateSensors()[0]
            }.ToList();

            info1.episodeId = 1;
            modelRunner.PutObservations(info1, obs);
            modelRunner.DecideBatch();
            var stochAction1 = (float[])modelRunner.GetAction(1).ContinuousActions.Array.Clone();

            modelRunner.PutObservations(info1, obs);
            modelRunner.DecideBatch();
            var stochAction2 = (float[])modelRunner.GetAction(1).ContinuousActions.Array.Clone();

            // Stochastic action selection should output randomly different action values with same obs
            Assert.IsFalse(Enumerable.SequenceEqual(stochAction1, stochAction2, new FloatThresholdComparer(0.001f)));
            modelRunner.Dispose();
        }