Java 在Anylogic中动态/以编程方式创建资源

Java 在Anylogic中动态/以编程方式创建资源,java,simulation,agent,anylogic,Java,Simulation,Agent,Anylogic,基本上,我有以下问题:我必须在Anylogic中对几个医院的专科进行建模,并分析当一个或多个专科关闭时会发生什么 问题是医院专科的组合数量非常高(大约1000个),所以我正在寻找一种“动态/编程”的方法 换句话说,我正在寻找一种方法来自动创建资源池(以及附加到它的计划),而无需手动在Anylogic中创建资源。比如像这样的 //An arraylist of names of hospitals for (String hospitalCode : hospitals) { for(Str

基本上,我有以下问题:我必须在Anylogic中对几个医院的专科进行建模,并分析当一个或多个专科关闭时会发生什么

问题是医院专科的组合数量非常高(大约1000个),所以我正在寻找一种“动态/编程”的方法

换句话说,我正在寻找一种方法来自动创建资源池(以及附加到它的计划),而无需手动在Anylogic中创建资源。比如像这样的

//An arraylist of names of hospitals
for (String hospitalCode : hospitals) { 
  for(String specialtyCode : specialtiesCodes) {
      ResourcePool res = new ResourcePool();
      res.setName(hospitalCode + "_" + specialtyCode);
      Schedule schedule = new Schedule();

      //Set the type of the schedule along with other parameters. This will be used 
      //to set the capacity of the resourcePool res
      schedule.setParameters(type, capacity, ...); 

      res.attachSchedule(schedule); //Connects the schedule to the resource

      schedule.create();
      res.create() //Creates the resources in the Main panel of Anylogic
   }
}
此外,在这张图片中,我有几个特长(它们被建模为resourcePool,因为容量和延迟时间对于我必须建模的问题至关重要)

您可以看到,我创建了一组资源池和计划,但我是手动创建的

我还尝试复制/粘贴了一些resourcePool,但无法更改resourcePool的名称。我也看过Java API,但还没有找到解决方案。

方法一:
最简单的方法是使用参数变化实验,并创建一个简单的模型,您只需使用资源池的容量定义参数。
这样,您可以连续同时运行大量实验
然而,这需要一个能够处理医院专业组合之间差异的模型。因为我不知道你问题的每一个细节,所以我不确定这是否可能。但我会尝试使用这种方法,因为这种方法通常更简单、更快

方法二:
另一种方式,可能更适合您的尝试。

  • 如果您在资源池的
    Advanced
    下查看。你应该去看电影 选择以下选项之一:
    单个代理
    代理人口

    选择代理人口。这将把它变成一个资源池数组。同时选择
    initial empty
  • 在启动过程中,您可以根据需要使用以下代码创建代理:
    添加myResourcePOOL的名称(…参数…)
  • 要使用资源池,必须选择要使用的资源池。这是通过将参数
    资源集
    更改为动态参数并写入:
    {{NameOfMyResourcepool.get(您想要的资源的索引)}}

  • 不同的特色菜的时间表不同吗?如果是这样的话,有什么区别?是的,不同的专业之间的课程安排不同。他们之间没有固定的区别。例如,一个专业可容纳10人,另一个专业可容纳150人。重要的是使用时间表来跟踪其最大容量。您是否仅使用它来管理容量?或者你也在用它们来定义工作时间?只是为了定义总体能力。我已经根据第二种方法实现了解决方案。完成这些事情有点棘手,但它似乎起了作用。非常感谢。