Anylogic 创建代理并添加到总体

Anylogic 创建代理并添加到总体,anylogic,agent-based-modeling,Anylogic,Agent Based Modeling,我试图用一组参数创建单个代理,让他们选择要加入的其他代理的总体/集合,然后使用排序功能根据特征的综合得分对代理进行排序。我一直在研究如何动态创建代理,然后将它们添加到总体中 我尝试了代理的处理流程,还使用状态图让代理进行选择,但无法让它们添加,因此我可以运行代码对它们进行排序。如果您的代理类是代理,而您的填充称为代理,参数是a、b和c,您将使用以下代码创建填充的代理: Agent agent=add_agents(2,3,4); //where a=2, b=3, c=4 不可能动态创建代理,

我试图用一组参数创建单个代理,让他们选择要加入的其他代理的总体/集合,然后使用排序功能根据特征的综合得分对代理进行排序。我一直在研究如何动态创建代理,然后将它们添加到总体中


我尝试了代理的处理流程,还使用状态图让代理进行选择,但无法让它们添加,因此我可以运行代码对它们进行排序。

如果您的代理类是代理,而您的填充称为代理,参数是a、b和c,您将使用以下代码创建填充的代理:

Agent agent=add_agents(2,3,4); //where a=2, b=3, c=4

不可能动态创建代理,然后将其添加到填充中。唯一的方法是使用Felipe已经作为答案放入的函数(add_populationName())或使用源块的填充设置

然而:既然您的最终目标是对代理进行排序,为什么不使用集合/列表呢?代理填充实际上也是一个列表,只包含一些特定于AnyLogic的额外内容。要动态创建代理并对其排序,请执行以下操作:

  • 动态创建代理:
    MyAgentType agent1=newmyagenttype()
  • 填充代理的参数(如果您在创建过程中还没有这样做):
    agent1.myParameter=10
  • 将其添加到MyAgentType:
    myCollection.Add(agent1)类型的现有集合中
  • 要根据多个参数对集合中的代理进行排序,请使用自定义比较器,如中所述:

    Collections.sort(myCollection,newcomparator(){
    公共整数比较(MyAgentType a1、MyAgentType a2){
    if(a1.myParameter==a2.myParameter)
    返回0;
    返回a1.myParameter

    在本例中,只比较了一个参数,但您可以将其扩展到您的需要。

    您可以分享您尝试过的内容吗?就像添加信息一样:不可能动态创建代理,然后将其添加到总体中。唯一的方法是使用Felipe已经作为答案放入的函数(add_populationName())或使用源块的填充设置。我将尝试集合。好主意。谢谢