在 Anylogic 中为代理参数分配不同值的正确方法是啥?
Posted
技术标签:
【中文标题】在 Anylogic 中为代理参数分配不同值的正确方法是啥?【英文标题】:What is the right way to allot a distinct value to an agent's parameter in Anylogic?在 Anylogic 中为代理参数分配不同值的正确方法是什么? 【发布时间】:2020-09-10 21:29:48 【问题描述】:我希望我的代理是单一类型的。其中 type 包含 3 个选项的列表。并且分配应该基于概率。例如。假设我想将 1: 30%、2: 50% 和 3: 20% 分配给在我的主选项卡源中生成的每个代理。
我尝试了一种方法,将参数声明为 int,然后将 randomTrue(0.3)?1:randomTrue(0.7)?2:3 写入默认值。但是每次代理都带有相同的值2。
谁能帮我解决这个问题?
如果我尝试在任何块的主窗口中分配参数,它们是否会附加到通过该块的特定代理,或者它的值只是在这段时间内更新,直到另一个代理通过?实际上,我必须检查每个代理的参数,然后通过 selectoutput 块中的特定输出路径发送它。
【问题讨论】:
【参考方案1】:您的代码实际上并未更改已创建代理中的任何内容。
创建一个整数类型的参数“myType”。
在您的源代码中编写:
agent.myType = randomTrue(0.3) ? 0 : randomTrue(0.7) ? 1 : 2
确保您的 Source 块实际上创建了包含 myType
参数的 Agent 类型的代理。
学习一些示例模型和教程,它在很多地方都有介绍:-)
【讨论】:
谢谢,我会尝试,是否也可以通过根据概率通过不同的选择输出块发送代理来分配主值,然后根据概率写入 agent.myType = 1 或 2 或 3在它去的街区。 当然,在 AnyLogic 中几乎任何事情都是可能的(它的名字;-))。如果您遇到困难,请随时提出一个明确的新问题(但始终先尝试自己;-))。 如果参数在您的代理中,那么您在原始帖子中描述的内容应该可以工作。您能否澄清一下您的原始问题是如何设置的?我认为它不起作用的唯一方法是如果您在某处覆盖了默认值。我打算添加一些关于 set_parameter 与参数 equals 的注释,但我很困惑为什么你写的东西不起作用。以上是关于在 Anylogic 中为代理参数分配不同值的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章