static List <TestAgent> GetFakeAgents(ObservableAttributeOptions observableAttributeOptions = ObservableAttributeOptions.Ignore) { var goA = new GameObject("goA"); var bpA = goA.AddComponent <BehaviorParameters>(); bpA.BrainParameters.VectorObservationSize = 3; bpA.BrainParameters.NumStackedVectorObservations = 1; bpA.ObservableAttributeHandling = observableAttributeOptions; var agentA = goA.AddComponent <TestAgent>(); var goB = new GameObject("goB"); var bpB = goB.AddComponent <BehaviorParameters>(); bpB.BrainParameters.VectorObservationSize = 3; bpB.BrainParameters.NumStackedVectorObservations = 1; bpB.ObservableAttributeHandling = observableAttributeOptions; var agentB = goB.AddComponent <TestAgent>(); var agents = new List <TestAgent> { agentA, agentB }; foreach (var agent in agents) { agent.LazyInitialize(); } agentA.collectObservationsSensor.AddObservation(new Vector3(1, 2, 3)); agentB.collectObservationsSensor.AddObservation(new Vector3(4, 5, 6)); var infoA = new AgentInfo { storedActions = new ActionBuffers(null, new[] { 1, 2 }), discreteActionMasks = null, }; var infoB = new AgentInfo { storedActions = new ActionBuffers(null, new[] { 3, 4 }), discreteActionMasks = new[] { true, false, false, false, false }, }; agentA._Info = infoA; agentB._Info = infoB; return(agents); }
void RunAgent <T>(int numSteps, int obsSize, ObservableAttributeOptions obsOptions) where T : Agent { var agentGameObj = new GameObject(); var agent = agentGameObj.AddComponent <T>(); var behaviorParams = agent.GetComponent <BehaviorParameters>(); behaviorParams.BrainParameters.VectorObservationSize = obsSize; behaviorParams.ObservableAttributeHandling = obsOptions; agent.LazyInitialize(); for (var i = 0; i < numSteps; i++) { agent.RequestDecision(); Academy.Instance.EnvironmentStep(); } Object.DestroyImmediate(agentGameObj); }