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(); }
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(); }