微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

代理继承和人口分组

如何解决代理继承和人口分组

我正在深入研究 Agent Inheritance,但我仍处于探索级别,因此我的问题不是针对特定示例而是针对概念性的。

我的目标是创建一个具有名为机器的代理类型的模型。然而,会有不同类型的机器,有些可能有不同的状态图或不同的参数。所以,最初我认为创建一个名为 Machine 的代理类型是个好主意,然后使用代理继承,创建从它扩展的代理类型(例如 Machine 1机器 2 等)。

结果是,如果我有每种类型的一台机器,机器代理类型人口将是空的,而机器 1机器 2 每个将有 1 的人口。我知道 AnyLogic 是这样设计的,但理想情况下,我希望看到 机器 代理类型的人口为 2,其中一个类型为 Machine 1 和另一个 Machine 2

代理继承可能不是答案,但我希望我能找到解决这个问题的方法,让我可以拥有一个具有不同子类型的主要群体。

您可能会问为什么需要这样做。答案是所有机器都应该有类似的行为。将此与 DES 进行比较,就像拥有不同的资源。所有都将具有相似的行为(例如可以被抓住、释放、附加等),但每个都可以是独一无二的。

您的想法/建议将不胜感激。

谢谢!

解决方法

如果要使用代理继承,则需要有 2 个不同的种群。 Machine 类型的群体将拥有 Machine 类型的代理,而不是他们的子代理类型。我通常通过为子代理设置种群来处理这个问题,然后将所有代理存储在一个列表中(即数组列表 - allMachines)。

您提到了不同的状态图,这是使用继承的一个很好的理由。许多人会尝试继承,因为一个延迟块需要 X 分钟,而另一个是 Y 分钟。在这些情况下,只需参数化您的一种代理类型。如果这些机器之间的逻辑差异很小,我会只考虑 1 个类,加上一些额外的决定/分支来获得你想要的行为。在 AL 中,让父级中的进程块/可视元素连接到子级中的区域有时会很棘手 - 并非不可能,但不像纯 Java 代码那么容易,您可以在其中覆盖和调用 super.function()。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。