动态资源集分配 Anylogic
Dynamic Resource Set Assignment Anylogic
我正在尝试动态占用给定数量的资源,但我无法理解语法。在资源集动态分配中,每个单元都由它所属的资源集的名称表示。图中,seize block会抢占集合“resourcePool”的3个资源。
我需要为每个代理占用特定数量的资源。然后我尝试创建资源池对象的 ArrayList 并将其传递到动态分配中,但它不起作用,因为类型不匹配。
例如,假设我有一个需要 4 个资源的代理,所以需要的表达式是:{ resourcePool, resourcePool, resourcePool, resourcePool }。我如何在代理的变量或集合中分配此表达式,以便它可以在“资源集动态分配”框中使用?我想我最终应该得到类似的东西:
{{agent.resourceSetsToSeize}}
那么如何定义“resourceSetsToSeize”?
你们太亲密了。唯一的问题是代理内部的参数必须是 ResourcePool[][]
类型,数组的数组。要转换数组列表,在您的情况下 resourceSetsToSeize
为数组,您需要调用 toArray()
但使用要将其转换为的特定数组的参数。
所以你的代码应该看起来像
{agent.resourceSetsToSeize.toArray(new ResourcePool[resourceSetsToSeize.size()]}
(假设resourceSetsToSeize
是一个列表对象
代码可能有点混乱,请参阅下面的另一个示例,了解如何宁愿使用数组作为参数,然后直接使用它而不进行转换。
这里是一个参数类型为ResourcePool[][]
的agent
当您创建代理时,您将创建此数组并将其放入构造函数中。如您所见,您不需要使用空构造函数然后对其进行赋值,您可以使用参数化构造函数。
然后在 seize 对象中,您可以简单地访问参数。
我正在尝试动态占用给定数量的资源,但我无法理解语法。在资源集动态分配中,每个单元都由它所属的资源集的名称表示。图中,seize block会抢占集合“resourcePool”的3个资源。
我需要为每个代理占用特定数量的资源。然后我尝试创建资源池对象的 ArrayList 并将其传递到动态分配中,但它不起作用,因为类型不匹配。
例如,假设我有一个需要 4 个资源的代理,所以需要的表达式是:{ resourcePool, resourcePool, resourcePool, resourcePool }。我如何在代理的变量或集合中分配此表达式,以便它可以在“资源集动态分配”框中使用?我想我最终应该得到类似的东西:
{{agent.resourceSetsToSeize}}
那么如何定义“resourceSetsToSeize”?
你们太亲密了。唯一的问题是代理内部的参数必须是 ResourcePool[][]
类型,数组的数组。要转换数组列表,在您的情况下 resourceSetsToSeize
为数组,您需要调用 toArray()
但使用要将其转换为的特定数组的参数。
所以你的代码应该看起来像
{agent.resourceSetsToSeize.toArray(new ResourcePool[resourceSetsToSeize.size()]}
(假设resourceSetsToSeize
是一个列表对象
代码可能有点混乱,请参阅下面的另一个示例,了解如何宁愿使用数组作为参数,然后直接使用它而不进行转换。
这里是一个参数类型为ResourcePool[][]
当您创建代理时,您将创建此数组并将其放入构造函数中。如您所见,您不需要使用空构造函数然后对其进行赋值,您可以使用参数化构造函数。
然后在 seize 对象中,您可以简单地访问参数。