public void TestEnsureBufferSizeContinuous() { var manager = new ActuatorManager(); var actuator1 = new TestActuator(ActionSpec.MakeContinuous(10), "actuator1"); var actuator2 = new TestActuator(ActionSpec.MakeContinuous(2), "actuator2"); manager.Add(actuator1); manager.Add(actuator2); var actuator1ActionSpaceDef = actuator1.ActionSpec; var actuator2ActionSpaceDef = actuator2.ActionSpec; manager.ReadyActuatorsForExecution(new[] { actuator1, actuator2 }, actuator1ActionSpaceDef.NumContinuousActions + actuator2ActionSpaceDef.NumContinuousActions, actuator1ActionSpaceDef.SumOfDiscreteBranchSizes + actuator2ActionSpaceDef.SumOfDiscreteBranchSizes, actuator1ActionSpaceDef.NumDiscreteActions + actuator2ActionSpaceDef.NumDiscreteActions); manager.UpdateActions(new ActionBuffers(new[] { 0f, 1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f, 9f, 10f, 11f }, Array.Empty <int>())); Assert.IsTrue(12 == manager.NumContinuousActions); Assert.IsTrue(0 == manager.NumDiscreteActions); Assert.IsTrue(0 == manager.SumOfDiscreteBranchSizes); Assert.IsTrue(12 == manager.StoredActions.ContinuousActions.Length); Assert.IsTrue(0 == manager.StoredActions.DiscreteActions.Length); }
public void TestEnsureBufferDiscrete() { var manager = new ActuatorManager(); var actuator1 = new TestActuator(ActionSpec.MakeDiscrete(new[] { 1, 2, 3, 4 }), "actuator1"); var actuator2 = new TestActuator(ActionSpec.MakeDiscrete(new[] { 1, 1, 1 }), "actuator2"); manager.Add(actuator1); manager.Add(actuator2); var actuator1ActionSpaceDef = actuator1.ActionSpec; var actuator2ActionSpaceDef = actuator2.ActionSpec; manager.ReadyActuatorsForExecution(new[] { actuator1, actuator2 }, actuator1ActionSpaceDef.NumContinuousActions + actuator2ActionSpaceDef.NumContinuousActions, actuator1ActionSpaceDef.SumOfDiscreteBranchSizes + actuator2ActionSpaceDef.SumOfDiscreteBranchSizes, actuator1ActionSpaceDef.NumDiscreteActions + actuator2ActionSpaceDef.NumDiscreteActions); manager.UpdateActions(new ActionBuffers(Array.Empty <float>(), new[] { 0, 1, 2, 3, 4, 5, 6 })); Assert.IsTrue(0 == manager.NumContinuousActions); Assert.IsTrue(7 == manager.NumDiscreteActions); Assert.IsTrue(13 == manager.SumOfDiscreteBranchSizes); Assert.IsTrue(0 == manager.StoredActions.ContinuousActions.Length); Assert.IsTrue(7 == manager.StoredActions.DiscreteActions.Length); }
public void TestFailOnSameActuatorName() { var manager = new ActuatorManager(); var actuator1 = new TestActuator(ActionSpec.MakeContinuous(3), "actuator1"); var actuator2 = new TestActuator(ActionSpec.MakeContinuous(3), "actuator1"); manager.Add(actuator1); manager.Add(actuator2); manager.ReadyActuatorsForExecution(new[] { actuator1, actuator2 }, 3, 10, 4); LogAssert.Expect(LogType.Assert, "Actuator names must be unique."); }
public void TestAllowMixedActions() { // Make sure discrete + continuous actuators are allowed. var manager = new ActuatorManager(); var actuator1 = new TestActuator(ActionSpec.MakeDiscrete(new[] { 1, 2, 3, 4 }), "actuator1"); var actuator2 = new TestActuator(ActionSpec.MakeContinuous(3), "actuator2"); manager.Add(actuator1); manager.Add(actuator2); manager.ReadyActuatorsForExecution(new[] { actuator1, actuator2 }, 3, 10, 4); }
public void TestFailOnMixedActionSpace() { var manager = new ActuatorManager(); var actuator1 = new TestActuator(ActionSpec.MakeDiscrete(new[] { 1, 2, 3, 4 }), "actuator1"); var actuator2 = new TestActuator(ActionSpec.MakeContinuous(3), "actuator2"); manager.Add(actuator1); manager.Add(actuator2); LogAssert.Expect(LogType.Assert, "Actuators on the same Agent must have the same action SpaceType."); manager.ReadyActuatorsForExecution(new[] { actuator1, actuator2 }, 3, 10, 4); }