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

Anylogic,在给定半径内查找代理

如何解决Anylogic,在给定半径内查找代理

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

解决方法

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

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

在这种情况下,您必须编写自己的函数来计算彼此之间的距离(可能通过勾股定理给出行和列值),并仅返回给定阈值内的距离。

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

sample range function

,

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

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