anylogic - 代理继承和人口分组
问题描述
我正在更深入地研究代理继承,并且仍处于探索级别,因此我的问题不会特定于示例,而是概念性的。
我的目标是创建一个名为Machine的代理类型模型。但是,会有不同类型的机器,有些可能有不同的状态图或不同的参数。所以,最初我认为创建一个名为Machine的代理类型是个好主意,然后使用代理继承,创建从它扩展的代理类型(例如Machine 1、Machine 2等)。
结果是,如果我每种类型都有一台机器,则机器代理类型人口将为空,而机器 1和机器 2的人口均为 1。我了解 AnyLogic 是这样设计的,但理想情况下,我希望查看人口为 2 的Machine Agent Type 的人口,其中一个是Machine 1类型,另一个是Machine 2类型。
代理继承可能不是答案,但我希望我能找到解决这个问题的方法,让我可以拥有一个具有不同子类型的主要群体。
您可能会问为什么需要这样做。答案是所有机器都应该有类似的行为。将此与 DES 进行比较,就像拥有不同的资源一样。所有都将具有相似的行为(例如,可以被抓住、释放、附加等),但每个都可以是唯一的。
您的想法/建议将不胜感激。
谢谢!
解决方案
如果你想使用代理继承,那么你需要有 2 个不同的种群。Machine 类型的群体将具有 Machine 类型的代理,而不是它们的子代理类型。我通常通过拥有子代理的人口来处理这个问题,然后将所有代理存储在一个列表中(即,数组列表 - allMachines)。
您提到了不同的状态图,这是使用继承的一个很好的理由。许多人会尝试继承,因为一个延迟块需要 X 分钟,而另一个是 Y。在这些情况下,只需参数化您的一种代理类型。如果这些机器之间的逻辑差异很小,我会只考虑 1 个类,还有一些额外的决定/分支来获得你想要的行为。在 AL 中,将父进程中的进程块/可视元素连接到子进程中的区域有时会很棘手 - 并非不可能,但不像纯 Java 代码那样简单,您可以在其中覆盖和调用 super.function()。
推荐阅读
- typo3 - TYPO3 GIFBUILDER 带有来自 FLUID 的图像
- c - gtk 是否支持使用 gstreamer 显示多个视频?
- ssl - 带有 SSL 的端口 8765 的 NGINX 反向代理不起作用
- python - 哪种方式最好读取镶木地板文件以作为 dask 数据帧处理
- performance - 有没有办法在读取多个文件时并行化 spark.read.load(string*) ?
- javascript - 套接字断开后如何显示消息
- twig - 如何获取给定类别的文章网址?
- javascript - 使计算属性全局可用
- keycloak - keycloak 上是否存在任何 REST API 来管理没有管理员 api/帐户的单个用户的帐户详细信息?
- python-3.x - pyspark 具有现有列字符串条件的新列(带有特殊字符)