AnyLogic错误行人在旅途中飞过GIS地图
Posted
技术标签:
【中文标题】AnyLogic错误行人在旅途中飞过GIS地图【英文标题】:AnyLogic bug pedestrians flying across the GIS map mid-journey 【发布时间】:2021-10-10 14:20:35 【问题描述】:最终编辑 - 这是 AnyLogic 中路由回归的一个错误,将在下一次更新中得到修复。
我正在开发一个城镇模拟,其中行人特工在它周围移动。我使用的 GIS 区域数据是从 .osm 文件以步行模式加载的,我在该区域周围随机生成建筑代理。
他们一开始还好好的在城里转了一圈,但是到了目的地的一半左右,他们突然高速飞过小镇,笔直地飞到了他们要去的地方。他们似乎到达了离建筑物最近的 GIS 节点,然后在里面走了最后几米。我相信我尝试过的每一个行人都会遇到这种情况。
我正在使用 Dijkstra 双向寻路(内置于 AnyLogic)。我尝试了 A* 双向,结果相同,并使用了不同的 .osm/.pbf 文件,并在快速和短路径模式下尝试,但没有成功。
我感觉这是双向寻路中的一个错误,但是 AnyLogic 不允许非双向路由,或为 GIS 区域实现自己的路由的方式...
任何想法都将不胜感激。
-编辑-
我回到这个错误并确定它 100% 是一个寻路错误。使用 AnyLogic 在线服务器在 2 点之间创建 GIS 路线时,它按预期工作,我们可以看到一条完整的路线。但是,当使用加载的离线 OSM 或 PBF 文件时(我尝试了不同的地图源),我观察到它绘制的路线在中途正确,但随后绘制一条直线到离目的地最近的节点,然后是一条直线到目的地.我附上了两张图片来证明这一点。
请注意,它不是距离的一半,而是节点数的一半。
根据下图我们可以看到节点存在,但是路由忽略了后半部分。我确定这不是一个断开的网络,因为我进行了很多测试,有时它可以通过一段路很好,但其他时候它会失败。
所以我想现在我的问题是:我该如何预防或解决这个问题?我尝试使用自定义 GraphHopper 路由器绕过双向路由并仅使用常规 A* 搜索,但没有任何运气,因为我尝试的其他算法只是直线。
这是在底部制作第一个点时发生的情况:
这是将第一个点放在顶部时发生的情况:
这是在线路由:
【问题讨论】:
也可能是您创建了超过 1 个网络,并且它们从 1 个网络“飞”到下一个,因为没有连接。确保您的 GIS 网络只有 1 个,而不是多个 我从 OSM 下载了地图数据,除非他们的网络是分裂的,否则我认为不是这个问题 此外,查询 OSM 服务器以进行寻路工作正常。我只是不能使用它,因为 API 调用太慢了 根据我的经验,您不能依赖 OSM 导入来创建干净的 AnyLogic 网络。在 Main 上检查您的属性树:是否有多个网络? 我在这里找什么?我认为没有 【参考方案1】:正如 Benjamin 已经说过的那样,这可能是因为您有多个网络,并且有时当您的网络没有按照您的意愿定义时,路由会以不可预知的方式运行。
在项目部分的网络上搜索并确保只有 1 个网络..
例如在下图中,您会看到有 2 个网络...找到一种方法来连接事物以最终得到 1 个网络...
【讨论】:
您好,感谢您的帮助。我实际上并没有在那里列出网络。我有一个 GIS Map 对象,然后是一个 GIS Region 对象。我确实了解这个问题以及需要做什么,但我似乎无法找到您在那里拥有的蓝色网络对象。关于如何通过我的配置查看这些内容,或者重新配置它以便我拥有它的任何想法? 如果您只有一个 gisregion,这意味着您没有 gis 路由...只有 gis 区域...在这种情况下,您让 anylogic 服务器根据您的 osm 服务器定义要采用的路径正在使用,或者您正在加载的文件...如果没有路线是可能的,那么他们将采取直线路线,因此您将直线移动 是的,我正在使用从 OSM 下载的 PBF 文件来生成路由数据。在不一致的点上,智能体突然以远快于他们步行速度的速度直线飞过地图。不是一条路线不可能,路线是可以完成的 我不会丢弃错误...我认为您需要展示模型 我回到这个错误并确定它 100% 是一个寻路错误。使用 AnyLogic 在线服务器在 2 点之间创建 GIS 路线时,它按预期工作,我们可以看到一条完整的路线。但是,当使用加载的离线 OSM 或 PBF 文件时(我尝试了不同的地图源),我观察到它绘制的路线在中途正确,但随后绘制一条直线到离目的地最近的节点,然后是一条直线到目的地.我附上了一张图片来证明这一点。请注意,它不是距离的一半,而是节点数的一半。【参考方案2】:AnyLogic 刚刚确认这是寻路回归中的一个错误。下次更新会修复。
【讨论】:
以上是关于AnyLogic错误行人在旅途中飞过GIS地图的主要内容,如果未能解决你的问题,请参考以下文章