在源站和目标站(Netlogo)之间找到最短路径的问题

在源站和目标站(Netlogo)之间找到最短路径的问题,netlogo,shortest-path,Netlogo,Shortest Path,我的研究是寻找一条起点和终点之间的最短路径。两者(起点和终点)均使用GIS扩展名定位,因为它们是通过形状文件获得的。我使用命令ask patches:intersecting shapefile在起点创建一个人,在终点创建一所学校 我有10个起点,每个起点都有一个指定的目的地。我注意到,当我使用Dijsktra算法寻找最短路径时,对于某些原点,目的地不是相应的点,而是最近的目的地。 所以,我的疑问是:Dijsktra是解决我问题的最佳算法还是我需要使用A*算法 如果Dijsktra的算法是最好的

我的研究是寻找一条起点和终点之间的最短路径。两者(起点和终点)均使用GIS扩展名定位,因为它们是通过形状文件获得的。我使用命令
ask patches:intersecting shapefile
在起点创建一个人,在终点创建一所学校

我有10个起点,每个起点都有一个指定的目的地。我注意到,当我使用Dijsktra算法寻找最短路径时,对于某些原点,目的地不是相应的点,而是最近的目的地。 所以,我的疑问是:Dijsktra是解决我问题的最佳算法还是我需要使用A*算法

如果Dijsktra的算法是最好的,我如何在代码中通知成对的起点和终点


如果A*算法是最好的,我如何在Netlogo的5.0版中构造代码?

不确定Netlogo,但由于您的问题没有在标记中引用它,因此我假设面向算法的答案是可以的

Dijkstra和A*是相似的;两者都寻找并找到从一点到另一点的最短路径。当你有一个预先知道的目的地时,A*会更有效,因为它会通过启发式算法寻找最短的可能路径,而dijkstra会通过搜索所有方向来检查图中的更多节点

如果你发现Dijkstra返回到一个与你期望的不同的目的地的路径,你应该考虑验证目标检测:当你找到目的地,而不是任何目的地时,你应该结束Dijkstra SeLCG。 A*不会遭受太多相同的问题,因为启发式方法会将它们指向正确的目的地,但在特殊情况下可以找到相同的问题(即,到正确目的地的最短路径通过不同的目的地)


更准确地说,我需要一些代码-伪代码可以-您的结论,或图表上的详细信息。

很抱歉在标签中引用Netlogo。我是这个网站的初学者。谢谢你的回答。我的代码在这个链接中:例如,对于xcor=-1和ycor=19的代理“people”(“地图最高点的people”)来说,正确的目的地(destiny)是acesso 324,但是算法给了我acesso 356。注意:在地图中,acesso 324位于acesso 356之前。不幸的是,我不熟悉NetLogo;我也不熟悉您用于变量和注释的语言。。。所以我很难理解你的代码。你能告诉我你在哪里设置了算法的目的地,以及你在哪里验证目标是否已经到达吗?在我能看到的地图上没有所谓的acessoXXX;你似乎要遍历所有的“人”来找到他们的路线;可能想先用一个来验证算法——目的地数量不断增加。目的地在“上方”这一事实是不相关的,首选项将转到满足完成策略的Dijkstra算法扩展的第一个节点。例如,在图()中,您可以看到红色圆圈中的“人”和具有相同圆圈(红色)的其他点。在这种情况下,根据算法,“人”和另一个红色圆圈分别是起点和终点。但在这种情况下,正确的目的地是绿色圆圈。换句话说,算法选择的目的地非常接近(红色圆圈)…是的。这正是我要说的——你需要解决的算法的要点是“如何识别目的地”。谁是最有可能的罪魁祸首。