public void TestRemove() { var manager = new ActuatorManager(); var actuator1 = new TestActuator(ActionSpec.MakeDiscrete(new[] { 1, 2, 3 }), "actuator1"); var actuator2 = new TestActuator(ActionSpec.MakeDiscrete(new[] { 1, 2, 3 }), "actuator2"); manager.Add(actuator1); manager.Add(actuator2); Assert.IsTrue(manager.NumDiscreteActions == 6); Assert.IsTrue(manager.SumOfDiscreteBranchSizes == 12); manager.Remove(actuator2); Assert.IsTrue(manager.NumDiscreteActions == 3); Assert.IsTrue(manager.SumOfDiscreteBranchSizes == 6); manager.Remove(null); Assert.IsTrue(manager.NumDiscreteActions == 3); Assert.IsTrue(manager.SumOfDiscreteBranchSizes == 6); manager.RemoveAt(0); Assert.IsTrue(manager.NumDiscreteActions == 0); Assert.IsTrue(manager.SumOfDiscreteBranchSizes == 0); }
public void TestWriteDiscreteActionMask() { var manager = new ActuatorManager(2); var va1 = new TestActuator(ActionSpec.MakeDiscrete(new[] { 1, 2, 3 }), "name"); var va2 = new TestActuator(ActionSpec.MakeDiscrete(new[] { 3, 2, 1 }), "name1"); manager.Add(va1); manager.Add(va2); var groundTruthMask = new[] { false, true, false, false, true, true, true, false, true, false, true, false }; va1.Masks = new[] { Array.Empty <int>(), new[] { 0 }, new[] { 1, 2 } }; va2.Masks = new[] { new[] { 0, 2 }, new[] { 1 }, Array.Empty <int>() }; manager.WriteActionMask(); Assert.IsTrue(groundTruthMask.SequenceEqual(manager.DiscreteActionMask.GetMask())); }
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); }
internal IPolicy GeneratePolicy(ActionSpec actionSpec, ActuatorManager actuatorManager) { switch (m_BehaviorType) { case BehaviorType.HeuristicOnly: return new HeuristicPolicy(actuatorManager, actionSpec); case BehaviorType.InferenceOnly: { if (m_Model == null) { var behaviorType = BehaviorType.InferenceOnly.ToString(); throw new UnityAgentsException( $"Can't use Behavior Type {behaviorType} without a model. " + "Either assign a model, or change to a different Behavior Type." ); } return new BarracudaPolicy(actionSpec, m_Model, m_InferenceDevice, m_BehaviorName); } case BehaviorType.Default: if (Academy.Instance.IsCommunicatorOn) { return new RemotePolicy(actionSpec, FullyQualifiedBehaviorName); } if (m_Model != null) { return new BarracudaPolicy(actionSpec, m_Model, m_InferenceDevice, m_BehaviorName); } else { return new HeuristicPolicy(actuatorManager, actionSpec); } default: return new HeuristicPolicy(actuatorManager, actionSpec); } }
/// <inheritdoc /> public HeuristicPolicy(ActuatorManager actuatorManager, ActionSpec actionSpec) { m_ActuatorManager = actuatorManager; var numContinuousActions = actionSpec.NumContinuousActions; var numDiscreteActions = actionSpec.NumDiscreteActions; var continuousDecision = new ActionSegment <float>(new float[numContinuousActions], 0, numContinuousActions); var discreteDecision = new ActionSegment <int>(new int[numDiscreteActions], 0, numDiscreteActions); m_ActionBuffers = new ActionBuffers(continuousDecision, discreteDecision); }
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 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); }
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); }
/// <summary> /// Initializes the singleton instance of the class /// </summary> static Context() { AppQuit = false; AppWindowPosition = Windows.WindowPosition.TopRight; _actuatorManager = ActuatorManager.Instance; _agentManager = AgentManager.Instance; _panelManager = PanelManager.Instance; _ttsManager = TTSManager.Instance; _automationEventManager = AutomationEventManager.Instance; _wordPredictionManager = WordPredictionManager.Instance; _spellCheckManager = SpellCheckManager.Instance; _themeManager = ThemeManager.Instance; }
public void TestIndexSet() { var manager = new ActuatorManager(); var actuator1 = new TestActuator(ActionSpec.MakeDiscrete(new[] { 1, 2, 3, 4 }), "actuator1"); var actuator2 = new TestActuator(ActionSpec.MakeDiscrete(new[] { 1, 2, 3 }), "actuator2"); manager.Add(actuator1); Assert.IsTrue(manager.NumDiscreteActions == 4); Assert.IsTrue(manager.SumOfDiscreteBranchSizes == 10); manager[0] = actuator2; Assert.IsTrue(manager.NumDiscreteActions == 3); Assert.IsTrue(manager.SumOfDiscreteBranchSizes == 6); }
/// <summary> /// Initializes the singleton instance of the class /// </summary> static Context() { AppQuit = false; AppWindowPosition = Windows.WindowPosition.MiddleRight; //Initialize all the manager singleton objects _actuatorManager = ActuatorManager.Instance; _agentManager = AgentManager.Instance; _panelManager = PanelManager.Instance; _ttsManager = TTSManager.Instance; _automationEventManager = AutomationEventManager.Instance; _wordPredictionManager = WordPredictionManager.Instance; _spellCheckManager = SpellCheckManager.Instance; _themeManager = ThemeManager.Instance; }
public void TestUpdateActionsContinuous() { var manager = new ActuatorManager(); var actuator1 = new TestActuator(ActionSpec.MakeContinuous(3), "actuator1"); var actuator2 = new TestActuator(ActionSpec.MakeContinuous(3), "actuator2"); manager.Add(actuator1); manager.Add(actuator2); var continuousActionBuffer = new[] { 0f, 1f, 2f, 3f, 4f, 5f }; manager.UpdateActions(new ActionBuffers(continuousActionBuffer, Array.Empty <int>())); Assert.IsTrue(manager.StoredActions.ContinuousActions.SequenceEqual(continuousActionBuffer)); }
public void TestSortActuators(string culture) { List <IActuator> actuators = new List <IActuator>(); var actuator0 = new TestActuator(ActionSpec.MakeContinuous(2), "Apple"); var actuator1 = new TestActuator(ActionSpec.MakeContinuous(2), "Æble"); actuators.Add(actuator0); actuators.Add(actuator1); var originalCulture = CultureInfo.CurrentCulture; CultureInfo.CurrentCulture = new CultureInfo(culture); ActuatorManager.SortActuators(actuators); CultureInfo.CurrentCulture = originalCulture; Assert.AreEqual(actuator1, actuators[0]); Assert.AreEqual(actuator0, actuators[1]); }
public void TestHeuristic() { var manager = new ActuatorManager(2); var va1 = new TestActuator(ActionSpec.MakeDiscrete(1, 2, 3), "name"); var va2 = new TestActuator(ActionSpec.MakeDiscrete(3, 2, 1, 8), "name1"); manager.Add(va1); manager.Add(va2); var actionBuf = new ActionBuffers(Array.Empty <float>(), new[] { 0, 0, 0, 0, 0, 0, 0 }); manager.ApplyHeuristic(actionBuf); Assert.IsTrue(va1.m_HeuristicCalled); Assert.AreEqual(va1.m_DiscreteBufferSize, 3); Assert.IsTrue(va2.m_HeuristicCalled); Assert.AreEqual(va2.m_DiscreteBufferSize, 4); }
public void TestUpdateActionsDiscrete() { var manager = new ActuatorManager(); var actuator1 = new TestActuator(ActionSpec.MakeDiscrete(new[] { 1, 2, 3 }), "actuator1"); var actuator2 = new TestActuator(ActionSpec.MakeDiscrete(new[] { 1, 2, 3 }), "actuator2"); manager.Add(actuator1); manager.Add(actuator2); var discreteActionBuffer = new[] { 0, 1, 2, 3, 4, 5 }; manager.UpdateActions(new ActionBuffers(Array.Empty <float>(), discreteActionBuffer)); Debug.Log(manager.StoredActions.DiscreteActions); Debug.Log(discreteActionBuffer); Assert.IsTrue(manager.StoredActions.DiscreteActions.SequenceEqual(discreteActionBuffer)); }
public void TestExecuteActionsDiscrete() { 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 discreteActionBuffer = new[] { 0, 1, 2, 3, 4, 5, 6 }; manager.UpdateActions(new ActionBuffers(Array.Empty <float>(), discreteActionBuffer)); manager.ExecuteActions(); var actuator1Actions = actuator1.LastActionBuffer.DiscreteActions; var actuator2Actions = actuator2.LastActionBuffer.DiscreteActions; TestSegmentEquality(actuator1Actions, discreteActionBuffer); TestSegmentEquality(actuator2Actions, discreteActionBuffer); }
public void TestExecuteActionsContinuous() { var manager = new ActuatorManager(); var actuator1 = new TestActuator(ActionSpec.MakeContinuous(3), "actuator1"); var actuator2 = new TestActuator(ActionSpec.MakeContinuous(3), "actuator2"); manager.Add(actuator1); manager.Add(actuator2); var continuousActionBuffer = new[] { 0f, 1f, 2f, 3f, 4f, 5f }; manager.UpdateActions(new ActionBuffers(continuousActionBuffer, Array.Empty <int>())); manager.ExecuteActions(); var actuator1Actions = actuator1.LastActionBuffer.ContinuousActions; var actuator2Actions = actuator2.LastActionBuffer.ContinuousActions; TestSegmentEquality(actuator1Actions, continuousActionBuffer); TestSegmentEquality(actuator2Actions, continuousActionBuffer); }