路径未到达我的 A* 算法中的结束节点

2024-02-22

继从如何在大空间范围内加速最小成本路径模型 https://stackoverflow.com/questions/23202199/how-to-speed-up-least-cost-path-model-at-large-spatial-extents,我尝试在 Netlogo 中编写 A* 算法,以在大空间范围内增加我的最低成本路径模型。这是我的代码:

to findPath [ID-start-node ID-end-node]

 let currentNodesInList [ ]
 let current-node node ID-start-node
 let end-node node ID-end-node
 ask current-node [ set color red]
 ask end-node [ set color red]

 set currentNodesInList lput current-node currentNodesInList

 while [not member? end-node currentNodesInList] [

 ask current-node [ 

 foreach sort nodes-on neighbors [ 

  ask ? [set f-value [link-cost] of link ([who] of current-node) ([who] of ?) + distance end-node] ]  

  let next-current-node min-one-of [nodes-on neighbors] of current-node [f-value]
  ask link ([who] of current-node) ([who] of next-current-node) [set color red]
  set current-node next-current-node

  set currentNodesInList lput current-node currentNodesInList] ]
end

当 ID-start-node 和 ID-end-node 在景观中接近时,代码似乎可以工作。但是,当 ID-start-node 和 ID-end-node 之间的距离较大时,路径不会到达 ID-end-node(见下图;但有时,代码可以工作)。

图中,ID-start-node和ID-end-node用红色起点表示,路径用红色绘制。

非常感谢您的帮助。


您可能想在 NetLogo 用户社区中查看此模型:

http://ccl.northwestern.edu/netlogo/models/community/Astardemo1 http://ccl.northwestern.edu/netlogo/models/community/Astardemo1

它实现了一个简单的过程(查找路径),该过程将源补丁和目标补丁作为参数,并使用 A- 返回补丁列表(这是从源补丁到目标补丁的最短路径之一)星型最短路径查找算法。

您也可以尝试关闭世界环绕。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

路径未到达我的 A* 算法中的结束节点 的相关文章

  • NETLOGO:使用上一个刻度的变量

    是否有一些原语可以使用前一个刻度的变量值 我尝试计算一个代理的 价格 变量 我的意思是使用包含其他代理的 价格 变量但来自上一个刻度的公式 不 NetLogo 中没有内置方法可以执行此操作 您最好的选择可能是创建一个名为以下内 容的变量va
  • 将带有空格的文件行作为列表读取到 NetLogo 中

    如何将由空格分隔的文件内容作为列表读入 NetLogo 例如 对于包含以下数据的文件 2321 23233 2 2321 3223 2 2321 313 1 213 321 1 我想创建如下列表 a 2321 2321 2321 213 b
  • NetLogo - 使用BehaviorSpace获取所有海龟位置作为每次重复的结果

    我正在使用BehaviorSpace 使用不同的参数运行模型数百次 但我需要知道所有海龟的位置 而不仅仅是海龟的数量 我怎样才能用BehaviorSpace实现它 目前 我通过以下代码将结果输出到 csv 文件中 to report get
  • 路径查找算法:A* 与跳跃点搜索

    我知道 A 比 Dijkstra 算法更好 因为它考虑了启发式值 但是从 A 和跳跃点搜索来看 哪种算法是在有障碍物的环境中找到最短路径的最有效算法 有何不同 跳跃点搜索是基于图表上的某些条件的改进的 A 因此 如果满足这些条件 主要是统一
  • 如何在大空间范围内加速最小成本路径模型

    继从如何提高最低成本路径模型的模拟速度 https stackoverflow com questions 21839462 how can i increase speed up simulation of my least cost p
  • 在 netlogo 中设置自动排序文件名

    我正在将结果表从 netlogo 导出到 csv 并希望它每次都按顺序更改文件名 例如 会话的第一次运行将是 file 1 csv 第二次运行是 file 2 csv 等 我知道如何手动执行此操作 但是有没有办法自动执行此操作 我猜这与 i
  • 图搜索和树搜索有什么区别?

    有什么区别图搜索 and 树搜索有关 DFS A 搜索的版本人工智能 从现有的答案来看 这个概念似乎存在很多混乱 问题始终是图表 树搜索和图搜索之间的区别并不在于问题图是树还是一般图 始终假设您正在处理一般图表 区别在于遍历模式用于搜索图形
  • Netlogo HPC CPU 使用百分比增加

    我通过以下方式使用无头 NetLogo 将作业提交到 HPC 服务器code bin bash N r20p q all q pe mpi 24 home abhishekb netlogo netlogo 5 1 0 netlogo he
  • NetLogo 高效创建任意度数分布的网络

    这是一个后续问题NetLogo 创建固定数量链接的有效方法 https stackoverflow com questions 32967388 netlogo efficient way to create fixed number of
  • 如何使用轮盘赌选择最多数量的海龟

    在我的模型中 海龟有两种性别 雄性有两种潜在的策略 雌性会计算一定半径内雄性的数量 我希望雌性根据两种雄性策略的相对频率来权衡从雄性组中选择的概率 无需替换 我已经有了从男性中选择概率的代码 matingPoolProbAnad and m
  • 如何正确绘制变量

    我尝试查看文档 但没有找到我需要的答案 所以我在这里问 例如 我有 15 只海龟 这个数字可能会有所不同 我需要将它们的变量 例如收入 绘制到一个图中 我知道我可以通过命令绘制 1 个代理的变量 plot revenue of turtle
  • 多项式 Logit / 建模选择 [Netlogo]

    我使用多项式 Logit 模型作为概率函数来对一组特定代理的选择进行建模 当我计算出 P1 P2 和 P3 的概率以及如何使用它们来实际建模时 我的问题就出现了选择 我的想法是使用模型库中的彩票中奖示例之类的东西 但问题是 在这种情况下 概
  • 从 RNetLogo 加载带有扩展的 Netlogo 模型

    我正在尝试使用 RNetLogo 在无头模式下加载 Netlogo 模型 该模型使用 rnd 扩展 该扩展通过以下方式添加到模型中extensions rnd 如果我尝试加载模型NLLoad model path 我收到此错误 NLLoad
  • 为什么A*的复杂度在内存中是指数级的?

    维基百科关于 A 复杂度的说法如下 链接在这里 http en wikipedia org wiki A search algorithm 比当时更成问题 复杂度是A 的内存使用量 在 最坏的情况 也必须记住 指数数量的节点 我不认为这是正
  • 二维数组中的寻路

    假设我有这个二维数组地图 0 0 0 0 7 1 1 1 1 1 1 1 1 0 7 7 7 7 1 1 1 24 1 1 1 1 0 7 24 24 24 24 24 24 24 1 1 3 1 0 7 23 23 23 23 23 23
  • A* 在 HTML5 Canvas 中开始寻路

    我正在尝试在我的游戏中实现 A Start 路径查找 用 JavaScript HTML5 Canvas 编写 A Start 的图书馆发现了这个 http 46dogs blogspot com 2009 10 star pathrout
  • 了解单目标迷宫的 A* 启发式

    我有一个像下面这样的迷宫 P
  • 如何使用 netlogo 生成 0.3 < X < 0.7 范围内的数字

    正如标题所示 希望生成 0 3 我目前使用 while 循环来检查随机浮点数是否在该范围内 我想知道是否有更好的方法来做到这一点 0 3 random float 0 4会给你 0 3 如果你真的不想要 0 3 我想你总是可以循环那个 我不
  • 乌龟接触时如何杀死它们?

    我似乎无法让乌龟在相互接触时死去 只有当他们在同一个补丁上时我才能杀死他们 有这样的功能吗 to killturtles if contact die end 没有 但假设你的乌龟是圆形的或圆形的 ask other turtles in
  • 机器人路径规划 - A*(星级)

    我正在用 C 为我的主要机器人探索行为实现 A 路径规划算法 当机器人移动时 它将自身周围的环境映射为二维图形 从这张图中 我设置了一个 Vector2D 元组 x y 它保存了这个路径点的位置 我希望机器人也能在其中导航 我对 A 所做的

随机推荐