Exemple #1
0
 protected void SetLinkInfoValues(AgentNetwork agent_network)
 {
     this.LinkInfoValues = new List <LinkInfoValue>();
     foreach (var agent in agent_network.Agents)                                                              //agent一つ一つに対して
     {
         foreach (var neighbor_agent in agent.GetNeighbors())                                                 //リンクでつながる隣人一人一人(そのエージェントの持つリンク数分)
         {
             this.LinkInfoValues.Add(new LinkInfoValue(agent, neighbor_agent, this.LinkInfoValueWindowSize)); //receiver,sender,weightの順 .linkinfovalueはSWT用
         }
     }
 }
Exemple #2
0
        public virtual void SetAgentNetwork(AgentNetwork agent_network, int opinion_share_num) //opinion_share_numはオーバーライド用
        {
            this.MyAgentNetwork = agent_network;

            if (this.CommonWeightMode)
            {
                foreach (var link in this.MyAgentNetwork.AgentLinks)
                {
                    link.SetInitSourceWeight(this.CommonWeight);
                    link.SetInitTargetWeight(this.CommonWeight);
                }
            }

            this.SetLinkInfoValues(agent_network); //linkInfoValueを初期化
            return;
        }
Exemple #3
0
        public void AddEnvironment(AgentNetwork agent_network)
        {
            this.EnvironmentAgent = new Agent(-1).SetSubject(this.EnvSubject);                 //環境エージェント(≒環境)
            var op_vector = Vector <double> .Build.Dense(this.EnvSubject.SubjectDimSize, 0.0); //意見の種類だけ要素を0で初期化

            this.EnvironmentAgent.SetInitOpinion(op_vector);
            List <AgentLink> env_links = new List <AgentLink>(); //環境とセンサエージェントをつなぐリンク
            var sensors = agent_network.Agents.Where(agent => agent.IsSensor).ToList();

            int link_index = -1;

            foreach (var sensor in sensors)
            {
                env_links.Add(new AgentLink(link_index, sensor, this.EnvironmentAgent));
                link_index--;
            }

            foreach (var sensor in sensors)
            {
                sensor.AttachAgentLinks(env_links);
            }

            this.EnvironmentAgent.AttachAgentLinks(env_links);
        }