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

如何在AnyLogic中选择通过另一个代理连接的最近的代理?

如何解决如何在AnyLogic中选择通过另一个代理连接的最近的代理?

在模型中,我通过“链接到其他代理”对象连接了网络中的不同代理类型。我使用了一个函数来创建网络:

shopLink.connectTo(this.getNearestAgent(main.shops));
homeLink.connectTo(this.getNearestAgent(main.homes));

因此,每个工厂代理仅连接到最近的商店和家中。在工厂代理类型内的“启动时”字段中调用函数

enter image description here

让我们假设红色代表的类型是工厂,黄色代表商店,绿色代表房屋。还要假设所有Factory-agent都包含Person-agent,并且我想将Person-agent发送到连接到Factory-agent的最近的Shop-agent。我需要使用什么Java代码来选择与工厂代理连接的最近的商店代理?

解决方法

如果您的Person代理存在于Factory父代理中,并且您具有如图所示的连接,则这取决于在Factory中如何建立连接:

(a)如果Factory的默认connections链接到“代理”对象仅包含 个商店代理连接,请使用

getNearestAgent(factory.getConnections())

(b)如果Factory的店铺连接位于特殊的“链接到代理”对象(例如shopConnections)中,则使用

getNearestAgent(factory.shopConnections.getConnections())

(c)如果您在Factory的默认connections链接中混合了与所有其他座席类型(商店,工厂等)的连接,则必须首先过滤该列表以仅包括Shop座席所以

(Shop) getNearestAgent(filter(factory.getConnections(),f -> f instanceof Shop))

(关于Java的细微之处,原因是为什么情况(c)在一开始需要(Shop)位,这是Java强制转换,但是(a)不需要。这与以下事实有关: getNearestAgentgetConnectionsgeneric methods,并且正在使用type inference。)

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