Anylogic如何创建新代理并分配属性?

Posted

技术标签:

【中文标题】Anylogic如何创建新代理并分配属性?【英文标题】:Anylogic how create new agent and assign properties? 【发布时间】:2020-10-23 01:10:51 【问题描述】:

Anylogic:这应该很简单,但我只是在帮助文件中找不到它.. 在创建一个新的代理实例时,我们知道有四个参数以及它们是什么,但不知道它们的定义顺序。假设参数是“type_of_car”(字符串)、“number_of_pax”(整数)、“automatic”(布尔值)、“fuel_capacity”(双精度值)。现在打电话时:new myagenttype("ford", 5, false, 55) 代理被创建为福特,拥有 55 人、手动和 5 升燃油容量 - 这是完全错误的。 (好像agent定义中参数的定义顺序不同)

我们如何在调用new agenttype() 时包含参数名称(或定义)以避免此问题,确保将正确的值分配给正确的参数?

问题源于 Anylogic 在触发函数的逻辑中存在错误。我们有一个拆分,它创建一个新代理并在“退出副本”-事件上分配代理属性,但是 Anylogic 所做的是它创建代理,将其转发到下一个逻辑块(决策节点),然后执行决定的代码 - 现在所有错误的代理属性都未定义 - 然后才执行分配代理属性的“退出复制”事件。非常沮丧。

【问题讨论】:

【参考方案1】:

这实际上不是一个错误,这是在模拟实验属性中定义的,在随机性部分,具有“同时事件的选择模式”属性。默认值是 LIFO,但如果你想在你的情况下采取相反的行为,你应该使用 FIFO……我也总是使用 LIFO,在这些情况下,有时我可能会在拆分和下一个块之间按顺序使用 1 毫秒的辅助延迟手动控制订单...如果您这样做,实际上您将解决您的问题...只需在拆分后使用 0.001 毫秒的延迟

现在从您的代理类型问题来看,您的类构造函数的参数应该按顺序编写,知道正确顺序的唯一方法是在您编写 new agenttype() 时使用自动完成功能......自动完成将告诉你编写构造函数参数的顺序。

【讨论】:

以上是关于Anylogic如何创建新代理并分配属性?的主要内容,如果未能解决你的问题,请参考以下文章

AnyLogic - 为代理分配编号并将其用于计算

anylogic,流程建模库:split.如何设置和引用代理副本的属性?

Anylogic自定义代理未加载?

在 anylogic 中为 50% 的代理分配优先级

分配给特定代理类型 Anylogic 的电梯

Anylogic:如何批处理具有相似参数的代理?