我在 Windows 10 上的项目中使用 AnyLogic 8.7.0 Professional 进行代理建模。
我在
Bus
“内部”放置了一个代理(假设为Passenger
)和多个代理(Bus
),并且Bus
直接显示在GIS地图上的Main
代理下。代理级别示意图如下:
+ Projects
|- Main
| |- Agents
| | |- bus
| +- Presentation
| |- level
| |- map
| +- bus_presentaion
|- Bus
| |- Agents
| | +- passengers[..]
| |- Presentation
| | +- passengers_presentaion
| +- ...
|- Passenger
| +- ...
当将
moveTo(lat, lon)
函数与 Bus
一起使用时,它可以在 GIS 地图上正确显示动画,而将 moveTo(lat, lon)
函数与 Passenger
一起使用时,Passenger
只会移动到 Bus
的相对坐标(以像素为单位),而不是比上层代理 GIS 地图上的特定(纬度、经度)点,即 Main
。
我尝试将
Bus
代理的“空间和网络 - 空间类型”从“连续”切换为“GIS”,结果在 Bus
代理中创建了另一个 GIS 地图。而passengers
群体的“高级-可见”中的“上层代理可见”似乎也不是解决方案。
如何使乘客在
Main
代理中的 GIS 地图上以动画形式显示,并指定到达特定 GIS 点的 GIS 路线,而不将 Passenger
直接放入 Main
代理中?
你无法随心所欲地做你想做的事。
如果乘客住在公交车内,他们会相对于公交车移动。
为了使它们相对于 GIS 坐标移动,它们必须位于 Main 中。
我要做的就是在 Main 中添加空乘客,当乘客需要在 GIS 中移动时,你就这么做
agent.goToPopulation(main.passengers);
当他们回到巴士上时,你可以做
agent.goToPopulation(bus.passengers);