A星算法优化(二)权重系数

article/2025/10/2 19:14:15

本文接上一篇:A星算法优化(一)启发函数
B站详解视频:https://www.bilibili.com/video/BV1EF411W7Rw?spm_id_from=333.999.0.0
将从以下5个点进行改进:
1、启发函数——曼哈顿距离等
2、权重系数——动态加权等
3、搜索邻域——基于8邻域搜索改进
4、搜索策略——双向搜索、JPS策略等
5、路径平滑处理——贝塞尔曲线、B样条曲线等

权重系数改进

1、改进效果

以欧式距离为例
改进后的A星:
在这里插入图片描述
未改进的A星:

在这里插入图片描述
在保留规划出较优路径的前提下,搜索节点减少、搜索速度大大提升

主要对估价函数f(n)=g(n)+h(n)进行改进,上一节是对启发函数h(n)进行改进,这次是对公式整体进行改进,阅读大量论文,总结常见的改进方式如下:

2、f(n)=g(n)+w(n)*h(n)

理论:
在h(n)前增加一个权重系数w(n),即weight(n),g(n)与h(n)原本是1:1的权重分配,假如w(n)=2,权重分配变为1:2,这样对规划效果带来的影响是相比实际代价g(n)会更偏向用估计代价h(n)
在这里插入图片描述 权重系数w较大,此时A算法会尽快向终点扩展,搜索速度很快但会错过最优路径;当w较小,此时A算法会倾向于搜索最优路径而减慢搜索速度。

代码实现:

w = 2.0
d = math.hypot(n1.x - n2.x, n1.y - n2.y)          #  Euclidean
print(d)
h = w * d
return h

观察改进效果

3、动态加权

我们不可能只考虑搜索速度而不考虑规划的路径,也就是不可能一直让w=2,此时就考虑使用动态加权的方式,以原本的启发函数h(n)为判断依据,我们把它声明为d,当d>18时,w=3.0,此时算法搜索速度更快;当d<=18时,w=0.8,也就是接近终点的时候,优先考虑最优路径。

动态加权: 在放弃搜索最优路径的情况下,使用动态加权来缩短A星搜索的时间。其原则为,在搜索开始时,快速到达目的地所在区域更重要;在搜索结束时,得到到达目标的最佳路径更重要

当h较大时,权重系数w也应该较大,此时A算法会尽快向终点扩展,搜索速度很快但会错过最优路径;当h较小时,w也应该较小,此时A算法会倾向于搜索最优路径而减慢搜索速度。

此时代码变为:

if d > 18:w = 3.0
else: w = 0.8
h = w * d

其中w与d的值要根据自己设定地图的大小、复杂程度进行多次调节,也可以按实际情况设置多段加权

本文仅提供简单的改进思路,更复杂更优的改进思路建议自己阅读论文。

参考:https://joveh-h.blog.csdn.net/article/details/100081677?spm=1001.2014.3001.5506
论文《一种面向非结构化环境的改进跳点搜索路径规划算法》


http://chatgpt.dhexx.cn/article/cT2LNbvi.shtml

相关文章

A_star算法

A*算法 A* 搜索算法&#xff0c;即A star search algorithm&#xff0c;简称A* 算法。 是一种在图形平面上对于多个节点的路径求出最低通过成本的算法。是对图的遍历和最佳优先搜索算法&#xff0c;也是对BFS的改进。其思想在于为每个状态建立启发函数&#xff0c;用启发函数制…

A star算法

A star算法介绍 我们在解空间搜索问题的可行解或者最优解时常用宽度优先搜索(BFS)或者深度优先搜索(DFS)&#xff0c;但是有时候会扩展出很多无用节点&#xff0c;搜索时间较长&#xff0c;而A*算法则是选择当前估计成本最低的节点进行扩展&#xff0c;图示如下: g(n)为从起始…

【A星算法】A星寻路算法详解(小白也可以看懂+C#代码+零基础学习A*)

1.问题背景 在制作RPG游戏角色和NPC移动时&#xff0c;需要角色自动避开障碍物&#xff0c;到达终点 怎么快速找到一条到达终点的路径&#xff1f; 使用a星寻路算法 2.A星算法的思路 绿色&#xff1a;起点&#xff1b;红色&#xff1a;终点 &#xff1b;黑色&#xff1a;障碍…

A-star算法自学

搜索过程 广度优先搜索&#xff08;BFS&#xff09;算法与Dijsktra算法的结合&#xff0c;可以得出最短的路径。 将地图信息通过划分为方形或者其他多边形格子的方法进行表示&#xff0c;便于利用二维数组存放地图信息&#xff0c;每个格子有可行和不可行两种状态&#xff1b;…

python3.6实现的A星算法

A星算法原理: 原理我就不再赘述,可以参考这篇博客https://blog.csdn.net/hitwhylz/article/details/23089415 最近用js写了一遍&#xff0c;用的同样的算法&#xff0c;需要js代码的看这里&#xff1a;https://blog.csdn.net/qq_39687901/article/details/85697127 代码实现: …

A星寻路算法介绍

你是否在做一款游戏的时候想创造一些怪兽或者游戏主角&#xff0c;让它们移动到特定的位置&#xff0c;避开墙壁和障碍物呢&#xff1f; 如果是的话&#xff0c;请看这篇教程&#xff0c;我们会展示如何使用A星寻路算法来实现它&#xff01; 在网上已经有很多篇关于A星寻路算…

对A星算法的理解

1、A*算法的**搜索区域 ** 传统A星算法是将地图简化成栅格&#xff0c;计算路径时是用每个栅格的中心点作为单位进行计算。 搜索区域分为两部分&#xff1a;开放列表和封闭列表 开放列表可以进行访问&#xff0c;封闭列表则不可以访问&#xff08;包括不可走 (unwalkable) 的方…

A星算法(Java实现)

一、适用场景 在一张地图中&#xff0c;绘制从起点移动到终点的最优路径&#xff0c;地图中会有障碍物&#xff0c;必须绕开障碍物。 二、算法思路 1. 回溯法得到路径 (如果有路径)采用“结点与结点的父节点”的关系从最终结点回溯到起点&#xff0c;得到路径。 2. 路径代…

A-Star(A*)算法

【由于专栏后几篇限制vip观看&#xff0c;我又把完整算法在公众号“武汉AI算法研习”进行了发布&#xff0c;可以查看全专栏文章。】 A-Star(A*)算法作为Dijkstra算法的扩展&#xff0c;在寻路和图的遍历过程中具有一定的高效性。 【适用范围】静态图搜索 【算法流程】A-Sta…

A星算法代码

A星算法代码python3实现 前言一、A*&#xff1f; A星1.一个搜索算法2.结果展示 二、使用环境1.python 3.x2.一些解释说明 一些话 前言 产生本文的缘由 学校计科课程要求的小作业, 在csdn上看了好多, 记录一下自己的学习 以下是本篇文章正文内容 一、A*&#xff1f; A星 1.一…

A星算法(基于matlab)

概述 基于上一篇文章提到的DFS算法和BFS算法 A星算法属于图这种数据结构的搜索算法&#xff0c;对比于树的遍历搜索&#xff0c;需要考虑到的问题是&#xff1a;同一个节点的重复访问&#xff0c;所以需要对于已经访问过的节点进行标记。 曼哈顿距离&#xff1a; 在几何度量空…

【A星算法】--第四篇(A星算法)

本篇主要介绍A星算法的过程&#xff1a; * 把起始节点加进openList * while openList 不为空 { * 当前节点 openList 中成本最低的节点 * if&#xff08;当前节点 目标节点&#xff09;{ * 路径完成 …

A星算法详解(个人认为最详细,最通俗易懂的一个版本)

A* 寻路算法 原文地址&#xff1a; http://www.gamedev.net/reference/articles/article2003.asp 概述 虽然掌握了 A* 算法的人认为它容易&#xff0c;但是对于初学者来说&#xff0c; A* 算法还是很复杂的。 搜索区域(The Search Area) 我们假设某人要从 A 点移动到 B 点&…

A星算法理解

A星算法理解 1.选择A星算法的原因 为了进行路径规划算法是不可回避的&#xff1a;启发式搜索算法是比较常规的一类算法就是在状态空间中的搜索对每一个搜索的位置进行评估&#xff0c;得到最好的位置&#xff0c;再从这个位置进行搜索直到目标。这样可以省略大量无谓的搜索路…

A星(A*, A Star)算法详解

MulinB按&#xff1a;经典的智能寻路算法&#xff0c;一个老外写的很透彻很清晰&#xff0c;很容易让人理解神秘的A*算法。以下是一个中文翻译版。 A*寻路初探 GameDev.net 作者&#xff1a; Patrick Lester 译者&#xff1a;Panic 2005年3月18日 译者序&#xff1a;很久以前就…

A星算法

A星算法 1.简述 A星算法就是试图在地图中找到一条最短路径&#xff0c;但不保证一定存在。 任务 小猫去找青蛙玩&#xff08;好TM弱智啊~&#xff09;条件 黑色方块无法通行&#xff0c;每走一个格子小猫消耗的体力都为1。 2.如果说你是小猫&#xff0c;你会怎么走&#xf…

A星算法说明

A*算法说明 文章目录 前言原理说明如何构造 h ( n ) h(n) h(n)一、欧氏距离二、曼哈顿距离三、其他 关于 g ( n ) g(n) g(n)路况设置如何实现 完整的流程搜索过程图示允许斜走&#xff0c;使用优先队列禁止斜走&#xff0c;使用优先队列允许斜走&#xff0c;使用普通队列禁止斜…

A星算法优化(一)启发函数

基于Python语言对A星算法进行优化&#xff1a;(视频中会拿python与matlab作对比) 源码地址&#xff1a;https://github.com/Grizi-ju/ros_program/blob/main/path_planning/Astar.py B站详解视频&#xff1a;https://www.bilibili.com/video/BV1FL4y1M7PM?spm_id_from333.999…

猴子都能看懂的A星算法原理

文章目录 A星算法基本原理什么是寻路算法算法的思路 算法实现脚本1————cconst.cs脚本2————AStar.cs Unity演示演示样例一演示样例二演示样例三演示样例四 俗话说&#xff0c;好记性不如烂笔头&#xff0c;对于有了解过寻路算法的同学&#xff0c;对于A星算法应该不陌生…

A星寻路算法详解(C++实现 完整代码+图片演示 )

文章目录 三种寻路算法 A星寻路算法A星寻路算法思想A星寻路准备A星寻路过程&#xff08;图例&#xff09;A星寻路代码&#xff08;完整&#xff09; 三种寻路算法 深度寻路算法&#xff1a;不一定能找到最佳路径&#xff0c;但是寻路快速&#xff0c;只能走直线。广度寻路算法…