public void ApplyContinuousActionOutput() { var inputTensor = new TensorProxy() { shape = new long[] { 2, 3 }, data = new Tensor(2, 3, new float[] { 1, 2, 3, 4, 5, 6 }) }; var applier = new ContinuousActionOutputApplier(); var agentIds = new List<int>() { 0, 1 }; // Dictionary from AgentId to Action var actionDict = new Dictionary<int, float[]>() { { 0, null }, { 1, null } }; applier.Apply(inputTensor, agentIds, actionDict); Assert.AreEqual(actionDict[0][0], 1); Assert.AreEqual(actionDict[0][1], 2); Assert.AreEqual(actionDict[0][2], 3); Assert.AreEqual(actionDict[1][0], 4); Assert.AreEqual(actionDict[1][1], 5); Assert.AreEqual(actionDict[1][2], 6); }
public void ApplyContinuousActionOutput() { var inputTensor = new TensorProxy() { shape = new long[] { 2, 3 }, data = new Tensor(2, 3, new float[] { 1, 2, 3, 4, 5, 6 }) }; var agentInfos = GetFakeAgentInfos(); var applier = new ContinuousActionOutputApplier(); applier.Apply(inputTensor, agentInfos); var agents = agentInfos; var agent = agents[0] as TestAgent; Assert.NotNull(agent); var action = agent.GetAction(); Assert.AreEqual(action.vectorActions[0], 1); Assert.AreEqual(action.vectorActions[1], 2); Assert.AreEqual(action.vectorActions[2], 3); agent = agents[1] as TestAgent; Assert.NotNull(agent); action = agent.GetAction(); Assert.AreEqual(action.vectorActions[0], 4); Assert.AreEqual(action.vectorActions[1], 5); Assert.AreEqual(action.vectorActions[2], 6); }
public void ApplyContinuousActionOutput() { var actionSpec = ActionSpec.MakeContinuous(3); var inputTensor = new TensorProxy() { shape = new long[] { 2, 3 }, data = new Tensor(2, 3, new float[] { 1, 2, 3, 4, 5, 6 }) }; var applier = new ContinuousActionOutputApplier(actionSpec); var agentIds = new List <int>() { 0, 1 }; // Dictionary from AgentId to Action var actionDict = new Dictionary <int, ActionBuffers>() { { 0, ActionBuffers.Empty }, { 1, ActionBuffers.Empty } }; applier.Apply(inputTensor, agentIds, actionDict); Assert.AreEqual(actionDict[0].ContinuousActions[0], 1); Assert.AreEqual(actionDict[0].ContinuousActions[1], 2); Assert.AreEqual(actionDict[0].ContinuousActions[2], 3); Assert.AreEqual(actionDict[1].ContinuousActions[0], 4); Assert.AreEqual(actionDict[1].ContinuousActions[1], 5); Assert.AreEqual(actionDict[1].ContinuousActions[2], 6); }
public void ApplyContinuousActionOutput() { var inputTensor = new TensorProxy() { shape = new long[] { 2, 3 }, data = new Tensor(2, 3, new float[] { 1, 2, 3, 4, 5, 6 }) }; var applier = new ContinuousActionOutputApplier(); var action0 = new AgentAction(); var action1 = new AgentAction(); var callbacks = new List <AgentIdActionPair>() { new AgentIdActionPair { agentId = 0, action = (a) => action0 = a }, new AgentIdActionPair { agentId = 1, action = (a) => action1 = a } }; applier.Apply(inputTensor, callbacks); Assert.AreEqual(action0.vectorActions[0], 1); Assert.AreEqual(action0.vectorActions[1], 2); Assert.AreEqual(action0.vectorActions[2], 3); Assert.AreEqual(action1.vectorActions[0], 4); Assert.AreEqual(action1.vectorActions[1], 5); Assert.AreEqual(action1.vectorActions[2], 6); }
public void ApplyContinuousActionOutput() { var inputTensor = new Tensor() { Shape = new long[] { 2, 3 }, Data = new float[, ] { { 1, 2, 3 }, { 4, 5, 6 } } }; var agentInfos = GetFakeAgentInfos(); var applier = new ContinuousActionOutputApplier(); applier.Apply(inputTensor, agentInfos); var agents = agentInfos.Keys.ToList(); var agent = agents[0] as TestAgent; var action = agent.GetAction(); Assert.AreEqual(action.vectorActions[0], 1); Assert.AreEqual(action.vectorActions[1], 2); Assert.AreEqual(action.vectorActions[2], 3); agent = agents[1] as TestAgent; action = agent.GetAction(); Assert.AreEqual(action.vectorActions[0], 4); Assert.AreEqual(action.vectorActions[1], 5); Assert.AreEqual(action.vectorActions[2], 6); }
public void ApplyHybridActionOutput() { var actionSpec = new ActionSpec(3, new[] { 2, 3 }); var continuousInputTensor = new TensorProxy() { shape = new long[] { 2, 3 }, data = new Tensor(2, 3, new float[] { 1, 2, 3, 4, 5, 6 }) }; var discreteInputTensor = new TensorProxy() { shape = new long[] { 2, 2 }, data = new Tensor( 2, 2, new[] { 1f, 1f, 1f, 2f }), }; var continuousApplier = new ContinuousActionOutputApplier(actionSpec); var alloc = new TensorCachingAllocator(); var discreteApplier = new DiscreteActionOutputApplier(actionSpec, 0, alloc); var agentIds = new List <int>() { 0, 1 }; // Dictionary from AgentId to Action var actionDict = new Dictionary <int, ActionBuffers>() { { 0, ActionBuffers.Empty }, { 1, ActionBuffers.Empty } }; continuousApplier.Apply(continuousInputTensor, agentIds, actionDict); discreteApplier.Apply(discreteInputTensor, agentIds, actionDict); Assert.AreEqual(actionDict[0].ContinuousActions[0], 1); Assert.AreEqual(actionDict[0].ContinuousActions[1], 2); Assert.AreEqual(actionDict[0].ContinuousActions[2], 3); Assert.AreEqual(actionDict[0].DiscreteActions[0], 1); Assert.AreEqual(actionDict[0].DiscreteActions[1], 1); Assert.AreEqual(actionDict[1].ContinuousActions[0], 4); Assert.AreEqual(actionDict[1].ContinuousActions[1], 5); Assert.AreEqual(actionDict[1].ContinuousActions[2], 6); Assert.AreEqual(actionDict[1].DiscreteActions[0], 1); Assert.AreEqual(actionDict[1].DiscreteActions[1], 2); alloc.Dispose(); }