【问题标题】:How can I communicate with another agent (anylogic) within certain vision angle?我如何在某个视角内与另一个代理(anylogic)进行通信?
【发布时间】:2020-09-03 20:04:14
【问题描述】:

我正在尝试使用 Anylogic 行人库进行建模,其中代理 (A) 将与另一个代理 (B) 进行通信,前提是另一个代理位于 A 的特定视角和弧形半径内。传统的通信方式是定义某些基于距离的通信,其中定义的距离在代理周围形成一个球体。但我想模拟代理将无法与不在其视野范围内的其他代理进行通信(如锥形投影和一定距离)。例如,代理不应该能够与他身后的其他人交流。我怎么能做到这一点?

另外,我正在尝试通过代理状态图对单个代理的行为(上述行人代理)进行建模。不幸的是,代理状态并没有根据我的模型中的通信而改变。是因为使用了步行图书馆吗?我们可以通过状态图对行人代理的行为进行建模吗? 如果有人能回答这些问题,那将是一个很大的帮助。

【问题讨论】:

    标签: java anylogic agent-based-modeling


    【解决方案1】:

    您可以只使用多边形节点或区域并像这样使用它:

    如果您想评估行人或代理是否在视野中,您需要获取该代理的 x 和 y 并执行以下操作:

    if(fieldOfVision.contains(x,y))
    //communicate with that dude
    

    【讨论】:

    • 非常感谢 Felipe 的回复!在我的模型中,随着代理不断移动,我如何找到 X 和 Y 的值,因为它不是固定值?如果您指导我如何知道谁在这个多边形节点内,将会很有帮助。另外,fieldOfVision 是内置函数吗?
    • 另外,在代理状态图中绘制多边形节点后,如何在代码中合并该区域/视觉信息?对不起我的连续问题。我忍不住想从像你这样的专家那里得到洞察力。再次感谢。
    • 您在问题中说,您会找到处于一定距离的代理,然后根据该过滤器找到它们的 x,y 坐标并检查它们是否在视野内...
    猜你喜欢
    • 2017-04-14
    • 2015-02-24
    • 2019-08-24
    • 2018-11-16
    • 2021-06-03
    • 2016-02-17
    • 2021-10-19
    • 1970-01-01
    • 2017-06-20
    相关资源
    最近更新 更多