示例#1
0
        public override void SetAgents()
        {
            base.SetAgents();

            for (var j = 0; j < ExampleMainOrganization.InfluencersCount; j++)
            {
                var actor = InfluencerAgent.CreateInstance(this, ExampleMainOrganization.InfluencerTemplate);
                ExampleMainOrganization.Influencers.Add(actor);
            }

            for (var j = 0; j < ExampleMainOrganization.WorkersCount; j++)
            {
                _ = PersonAgent.CreateInstance(this, ExampleMainOrganization.WorkerTemplate);
            }

            var actorIds =
                MainOrganization.ArtifactNetwork.Actor.GetEntityIds().ToList();

            // Set the interactions between the actors
            // Those interactions could be managed via an organization agent.
            for (var i = 0; i < actorIds.Count - 1; i++)
            {
                for (var j = i + 1; j < actorIds.Count; j++)
                {
                    ActorActor.CreateInstance(MainOrganization.ArtifactNetwork.ActorActor, actorIds[i], actorIds[j]);
                }
            }
        }
示例#2
0
        /// <summary>
        ///     Factory method to create an agent
        ///     Call the Initialize method
        /// </summary>
        /// <returns></returns>
        public static PersonAgent CreateInstance(SymuEnvironment environment, CognitiveArchitectureTemplate template)
        {
            if (environment == null)
            {
                throw new ArgumentNullException(nameof(environment));
            }

            var entity = new ActorEntity(environment.MainOrganization.ArtifactNetwork);
            var agent  = new PersonAgent(entity.EntityId, environment, template);

            agent.Initialize();
            return(agent);
        }