RTT*算法的一点实践发现

在PyCharm中测试RTT算法时,通过在适当位置添加点使路径长度减小。提出策略是在障碍物包围的空白区域随机生成障碍物目标,以降低随机性带来的扰动,实现路径优化。尽管原方法可能更优,但随机性大,因此寻求稳定减小随机性的次优解决方案。
摘要由CSDN通过智能技术生成

        当我在pycharm里面测试RTT*算法时,当我适当添加一个点的位置时(7,6,2),当前的路径长度比原来的路径长度减小了一部分(len(原) > len(现))。

        于是乎猜测,通过某些手段可以使得算法更优!比如在障碍物包围的空白地方随机生成一个障碍物目标,使得现在的路径长度比原来的路径长度更优。虽然我们原来的障碍物会生成一个比现在添加一个点的实验结果更优,但是随机性扰动性太大,一下子得到不了更优的结果,所以说添加一个适当的条件来减少随机性扰动。也就是退而求其次。

添加一个点位置时的实验结果:

原来的实验结果:

路径规划中的RTT*(Real-Time Terrain A*)算法是一种实时的、适用于动态环境的地图搜索算法,它结合了A*搜索策略和对地形实时变化的处理。在Python中实现RTT*,你需要先准备一些库,如`numpy`用于数值计算,`pygame`用于图形界面,以及用于地图数据结构和A*搜索的数据结构。 以下是基本步骤: 1. **数据结构**:创建一个Grid类,包含网格节点、邻接节点列表、代价函数等属性。 2. **A*搜索**:实现A*算法的核心部分,包括起始点和终点的设置,开放列表和关闭列表的维护,启发式函数(如曼哈顿距离或欧几里得距离)的应用,以及每次迭代更新节点状态。 3. **RTT*特定功能**:实时考虑地形变化,比如引入一个变量来表示每个节点的易损程度或成本,当环境发生变化时,动态调整节点的成本。 4. **图形化展示**:使用pygame绘制当前搜索路径和地图,以便可视化结果。 5. **循环更新**:不断获取新的环境信息,并基于新信息调整路径规划。 ```python # 示例代码片段 import numpy as np import pygame class RTTStar: def __init__(self, grid, start, end): self.grid = grid self.open_list = [] self.start = start self.end = end def a_star_search(self): # 初始化... while not self.open_list.empty() and not self.reached_goal(): # 开放列表操作... current = self.get_next_node() # 更新节点... return self.path() def update_grid(self, new_data): # 假设new_data是一个新的地形矩阵 for i in range(len(new_data)): for j in range(len(new_data[i])): self.grid.get_cell(i, j).cost = ... # 根据新数据计算新的成本 def main(): rt = RTTStar(grid, start_pos, end_pos) running = True while running: if check_new_data(): # 检查是否有新的环境数据 rt.update_grid(new_data) path = rt.a_star_search() draw_path_and_map(surface) if __name__ == "__main__": main() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值