如何在特定视角内与另一个代理(anylogic)进行通信?

How can I communicate with another agent (anylogic) within certain vision angle?

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

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

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

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

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