【问题标题】:Anylogic, finding agents in a given radiusAnylogic,在给定半径内寻找代理
【发布时间】:2021-07-02 11:00:33
【问题描述】:

我在网格中有代理,对于任意代理,我想以某种方式定义半径 r 并在给定 r 的情况下找到该区域中的所有其他代理。这可能吗,在AnyLogic中有没有实现的方法?

【问题讨论】:

    标签: anylogic agent-based-modeling


    【解决方案1】:

    有。检查agentsInRange(double distance)函数,查看帮助文章here

    【讨论】:

    • 非常感谢。
    • 如果代理在网格(离散空间)中,则这是不正确的。
    • 感谢@StuartRossiter,在原来的问题中错过了:)
    【解决方案2】:

    如果“在网格中”是指它们在连续空间中但具有整数 (x,y) 坐标,则可以使用标准函数 agentsInRange(内部使用标准函数 distanceTo)。

    如果代理位于实际网格中(即具有(行、列)坐标的离散空间),则不能使用标准的连续/GIS 空间函数,例如 distanceToagentsInRange。 (您会遇到运行时异常。)

    在这种情况下,您必须编写自己的函数来计算到其他代理的距离(可能通过毕达哥拉斯定理给定行和列值),并仅返回给定阈值内的距离。

    下面是这样一个示例函数,它假设您的代理属于Thing 类型并且生活在一个名为things 的群体中(并使用代理之间的单元格数中的直线距离作为“他们之间的距离” ')。您为函数提供“源”代理(您希望在其范围内获取其他代理)和所需范围。 (有很多稍微不同的编码方式,例如,取决于您是否希望它适用于任何代理类型的任何人群。)

    【讨论】:

    • 非常感谢您的详细解答
    猜你喜欢
    • 2013-09-12
    • 1970-01-01
    • 2012-05-04
    • 2011-12-28
    • 2015-06-17
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    相关资源
    最近更新 更多