代理继承和人口分组
Agent Inheritance and Population Grouping
我正在更深入地研究 Agent Inheritance,我仍处于探索阶段,所以我的问题不会具体到一个例子,而是概念性的。
我的 objective 是创建一个名为 Machine 的代理类型模型。然而,会有不同类型的机器,有些可能有不同的状态图或不同的参数。所以,最初我认为创建一个名为 Machine 的代理类型是个好主意,然后使用代理继承,创建从它扩展的代理类型(例如 Machine 1,机器 2,等等)。
结果是,如果我每种类型都有一台机器,Machine Agent Type population 将为空,而 Machine 1和 Machine 2 每个都有 1 的人口。我知道 AnyLogic 是这样设计的,但理想情况下,我想看到 Machine[=34 的人口=] 人口为 2 的代理类型,一个类型为 Machine 1,另一个类型为 Machine 2.
代理继承可能不是答案,但我希望我能找到解决这个问题的方法,我可以让一个主要人群具有不同的子类型。
您可能会问为什么需要它。答案是所有机器都应该有类似的行为。与 DES 相比,这就像拥有不同的资源。所有行为都相似(例如可以被抓住、释放、附加等),但每个行为都可以是独一无二的。
您的 thoughts/suggestions 将不胜感激。
谢谢!
如果你想使用代理继承,那么你需要有 2 个不同的群体。 Machine 类型的群体将具有 Machine 类型的代理,而不是它们的子代理类型。我通常通过拥有子代理的人口来处理这个问题,然后将所有代理存储在一个列表中(即数组列表 - allMachines)。
您提到了不同的状态图表,这是使用继承的一个很好的理由。许多人会尝试继承,因为一个延迟块需要 X 分钟,而另一个是 Y。在这些情况下,只需参数化您的一种代理类型即可。如果这些机器之间的逻辑差异很小,我会考虑只使用 1 class,再加上一些额外的 decides/branches 来获得您想要的行为。在 AL 中,让父进程中的 blocks/visual 元素连接到子进程中的区域有时会很棘手 - 并非不可能,但不像纯 Java 代码那样容易,你可以覆盖并调用 [=16] =]().
我正在更深入地研究 Agent Inheritance,我仍处于探索阶段,所以我的问题不会具体到一个例子,而是概念性的。
我的 objective 是创建一个名为 Machine 的代理类型模型。然而,会有不同类型的机器,有些可能有不同的状态图或不同的参数。所以,最初我认为创建一个名为 Machine 的代理类型是个好主意,然后使用代理继承,创建从它扩展的代理类型(例如 Machine 1,机器 2,等等)。
结果是,如果我每种类型都有一台机器,Machine Agent Type population 将为空,而 Machine 1和 Machine 2 每个都有 1 的人口。我知道 AnyLogic 是这样设计的,但理想情况下,我想看到 Machine[=34 的人口=] 人口为 2 的代理类型,一个类型为 Machine 1,另一个类型为 Machine 2.
代理继承可能不是答案,但我希望我能找到解决这个问题的方法,我可以让一个主要人群具有不同的子类型。
您可能会问为什么需要它。答案是所有机器都应该有类似的行为。与 DES 相比,这就像拥有不同的资源。所有行为都相似(例如可以被抓住、释放、附加等),但每个行为都可以是独一无二的。
您的 thoughts/suggestions 将不胜感激。
谢谢!
如果你想使用代理继承,那么你需要有 2 个不同的群体。 Machine 类型的群体将具有 Machine 类型的代理,而不是它们的子代理类型。我通常通过拥有子代理的人口来处理这个问题,然后将所有代理存储在一个列表中(即数组列表 - allMachines)。
您提到了不同的状态图表,这是使用继承的一个很好的理由。许多人会尝试继承,因为一个延迟块需要 X 分钟,而另一个是 Y。在这些情况下,只需参数化您的一种代理类型即可。如果这些机器之间的逻辑差异很小,我会考虑只使用 1 class,再加上一些额外的 decides/branches 来获得您想要的行为。在 AL 中,让父进程中的 blocks/visual 元素连接到子进程中的区域有时会很棘手 - 并非不可能,但不像纯 Java 代码那样容易,你可以覆盖并调用 [=16] =]().