基于RRT的优化器:一种基于快速探索随机树算法的新型元启发式算法

受机器人路径规划中常用的快速探索随机树(RRT)算法的搜索机制的启发,我们提出了一种新颖的元启发式算法,称为基于RRT的优化器(RRTO)。这是首次将RRT算法的概念与元启发式算法相结合。RRTO的关键创新是其三种位置更新策略:自适应步长游走、基于绝对差异的自适应步长和基于边界的自适应步长。
这些策略使RRTO能够有效地探索搜索空间,同时引导人群走向高质量的解决方案,于2025年3月发表在SCI计算机类期刊 IEEE Access。
在这里插入图片描述

数学模型的RRTQ

RRTQ模型由四个主要阶段组成:RRTQ算法的初始化、自适应步长游走策略、绝对差值自适应步长策略和基于边界的自适应步长策略。

A. 初始化

为了满足元启发式算法的要求,RRTQ算法中的每个代理都被视为一个起始点和搜索实体。最初,整个种群Q被初始化,如公式(7)所示。RRTQ种群由n个RRTQ代理 q i j q_{ij} qij组成,每个代理包含d维搜索参数。因此,整个种群Q可以由公式(8)表示。

Q = [ W 1 W 2 ⋮ W n ] ; W i = [ q i 1 , q i 2 , ⋯ q i d ] Q = \begin{bmatrix} W_1 \\ W_2 \\ \vdots \\ W_n \end{bmatrix}; \quad W_i = [q_{i1}, q_{i2}, \cdots q_{id}] Q= W1W2Wn ;Wi=[qi1,qi2,qid]

Q = [ q 11 q 12 ⋯ q 1 d q 21 q 22 ⋯ q 2 d ⋮ ⋮ ⋱ ⋮ q n 1 q n 2 ⋯ q n d ] Q = \begin{bmatrix} q_{11} & q_{12} & \cdots & q_{1d} \\ q_{21} & q_{22} & \cdots & q_{2d} \\ \vdots & \vdots & \ddots & \vdots \\ q_{n1} & q_{n2} & \cdots & q_{nd} \end{bmatrix} Q= q11q21qn1q12q22qn2q1dq2dqnd

其中i表示RRTQ代理的索引,d表示RRTQ维度的索引。每个粒子的初始化由公式(9)定义。

q i j = L j + r 1 ⋅ ( U j − L j ) , i = 1 , 2 , ⋯ n ; j = 1 , 2 , ⋯ d q_{ij} = L_j + r_1 \cdot (U_j - L_j), \quad i = 1, 2, \cdots n; \quad j = 1, 2, \cdots d qij=Lj+r1(UjLj),i=1,2,n;j=1,2,d

这里, L j L_j Lj U j U_j Uj分别是粒子在维度j上的下界和上界。初始化过程涉及在这些边界内随机化每个粒子的参数,以有效分布粒子在整个搜索空间中,从而提高多样性并防止过早收敛到局部最优。初始化后,计算每个粒子的位置,初始适应度值作为目标函数F的输入参数,如公式(10)所示。

f i = F ( W i ) f_i = F(W_i) fi=F(Wi)

B. 自适应步长游走策略

RRT算法以其在广泛探索未知区域时使用固定步长向随机选择点迭代的能力而闻名。然而,在复杂条件下,固定步长可能导致效率低下的探索。为了解决这个问题,我们将RRTQ的随机采样机制建模为自适应步长游走策略,以增强RRTQ算法的搜索能力。

为了在探索和开发之间平衡优化过程,设计了两种类型的函数,其迭代次数不同。K和E的函数表达式分别在公式(11)和公式(12)中给出。为了直观反映这两种函数的特性,它们在1000次迭代后进行了可视化,如图4所示。K是区间[0, 1]上的单调递减函数,早期阶段逐渐减少,后期阶段迅速减少。E是区间[0, 1]上的单调递增函数,早期阶段快速增长,后期阶段逐渐增加。

K = ln ⁡ ( T − t ) ln ⁡ ( T ) K = \frac{\ln(T - t)}{\ln(T)} K=ln(T)ln(Tt)

E = T t E = \sqrt[t]{T} E=tT
在这里插入图片描述

图4展示了E和K的可视化(迭代次数取1000为例)。

自适应步长游走的数学建模公式如下所示:

q i , j new = q i , j + s 3 q_{i,j}^{\text{new}} = q_{i,j} + s_3 qi,jnew=qi,j+s3

s 3 = ( r 1 − K 2 ) ⋅ K ⋅ ( U b i j − L b i j ) C , r 1 < K s_3 = \left( r_1 - \frac{K}{2} \right) \cdot K \cdot \frac{(U_{b_{ij}} - L_{b_{ij}})}{C}, \quad r_1 < K s3=(r12K)KC(UbijLbij),r1<K

这里, q i , j new q_{i,j}^{\text{new}} qi,jnew表示粒子的更新位置。 q i , j q_{i,j} qi,j表示当前粒子位置。 s 3 s_3 s3是此策略中的自适应步长。 r 1 r_1 r1是范围[0, 1]内的随机数, K − K / 2 K - K/2 KK/2确保了激活此策略时 s 3 s_3 s3方向的随机性。步长 s 3 s_3 s3随着迭代次数的增加而逐渐减小。 L b i j L_{b_{ij}} Lbij U b i j U_{b_{ij}} Ubij分别是搜索空间的下界和上界。 C = 10 C = 10 C=10表示步长因子,确定此参数的方法将在第7节的敏感性分析中详细讨论。仅当 r 1 < K r_1 < K r1<K时执行步长更新,该条件在早期迭代中最小化随机游走,导致稀疏更新。相反,此条件允许在后期迭代中更频繁地进行探索,从而实现更密集的更新。这种方法增强了算法在后期迭代中逃离局部最优的能力。在RRTQ代理的迭代过程中,如果代理的位置超过边界,则碰撞检测机制将其调整回边界。

自适应步长游走策略不仅促进了RRTQ代理对当前位置的深入探索,还通过结合全局随机初始化方法,大大增强了全局搜索的有效性,有效防止算法陷入局部最优。这种方法提高了粒子探索搜索空间的能力,与RRT算法的随机探索特性紧密结合,从而实现对搜索空间的更有效覆盖。自适应步长游走策略的伪代码如算法1所示。

算法1 自适应步长游走策略

在这里插入图片描述

C. 绝对差值基础自适应步长策略

在RRT算法中,使用固定步长向随机选择点迭代在不同阶段的适应性是有限的。为了增强RRTQ算法的全局探索能力,引入了绝对差值基础自适应步长策略。该策略通过计算当前粒子位置和当前最优位置之间的绝对差值动态调整步长。

更新基于当前最优位置,如公式(15)所示。该过程使用公式(16)计算代理的更新步长 s 2 s_2 s2

q i , j new = q best , j + s 2 q_{i,j}^{\text{new}} = q_{\text{best},j} + s_2 qi,jnew=qbest,j+s2

s 2 = α 1 ⋅ ∣ q best , j − q i , j ∣ , r 2 < m 1 s_2 = \alpha_1 \cdot |q_{\text{best},j} - q_{i,j}|, r_2 < m_1 s2=α1qbest,jqi,j,r2<m1

这里, q i , j new q_{i,j}^{\text{new}} qi,jnew表示代理的更新位置。 q best q_{\text{best}} qbest表示当前最优代理的位置。参数 r 2 r_2 r2是范围[0, 1]内的随机数, m 1 m_1 m1是此策略中的关键角色,随着迭代次数的增加,激活此策略的可能性增加。严格激活标准 ∣ q best , j − q i , j ∣ |q_{\text{best},j} - q_{i,j}| qbest,jqi,j有效地平衡了探索和开发。 m 1 m_1 m1设置为公式(17)通过测试。绝对差值 ∣ q best , j − q i , j ∣ |q_{\text{best},j} - q_{i,j}| qbest,jqi,j反映了当前和最优粒子之间的距离,反映了当前和最优位置。 α 1 \alpha_1 α1是自适应步长调整因子,如公式(18)所示。 ( r 2 − m 1 ) / 2 (r_2 - m_1)/2 (r2m1)/2用于控制RRTQ代理的更新方向。 ( r 2 − r 2 ) ⋅ e b (r_2 - r_2) \cdot e^{b} (r2r2)eb用于生成随机扰动,b设置为公式(19)。

m 1 = E / ( 10 ) m_1 = E/(10) m1=E/(10)

α 1 = 5 ⋅ ( r 2 − m 1 / 2 ) ⋅ cos ⁡ ( 2 ⋅ π ⋅ r 2 ) ⋅ e b \alpha_1 = 5 \cdot (r_2 - m_1/2) \cdot \cos(2 \cdot \pi \cdot r_2) \cdot e^{b} α1=5(r2m1/2)cos(2πr2)eb

b = e c m ( e − π / 4 ) b = e^{cm(e^{-\pi/4})} b=ecm(eπ/4)

这种设计不仅增强了步长更新的方向性,引导粒子朝向全局最优位置,还通过引入随机和非线性调整确保了搜索过程中的多样性和全局探索能力。

绝对差值基础自适应步长策略通过调整步长在搜索空间的广泛探索和局部微调之间实现了有效的平衡。这种策略通过动态调整搜索路径中的自适应步长,提高了算法的全局优化性能和效率。该策略确保了在算法的后期阶段,代理可以更精细地调整其位置。边界自适应步长策略结合RRT算法的局部扩展机制,提高了RRTQ算法在接近目标区域时的搜索精度和效率。该策略的伪代码在算法2中给出。

算法2 绝对差值基础自适应步长策略

在这里插入图片描述

D. 基于边界的自适应步长策略

为了实现更精确的优化,引入了基于边界的自适应步长策略。该策略的核心是使用非常小的随机步长进行探索,帮助RRTQ代理仔细搜索周围区域。这不仅确保了对当前最优位置的局部搜索,还防止陷入局部最小值。

更新基于当前最优位置,如公式(21)所示。该过程使用公式(20)计算代理的更新步长 s 3 s_3 s3

q i , j new = q best + s 3 q_{i,j}^{\text{new}} = q_{\text{best}} + s_3 qi,jnew=qbest+s3

s 3 = ( U b i j − L b i j ) ⋅ cos ⁡ β ⋅ α 2 , r 3 < m 2 s_3 = (U_{b_{ij}} - L_{b_{ij}}) \cdot \cos \beta \cdot \alpha_2, r_3 < m_2 s3=(UbijLbij)cosβα2,r3<m2

这里, q i , j new q_{i,j}^{\text{new}} qi,jnew表示代理的更新位置。 q best q_{\text{best}} qbest是当前最优代理位置。参数 r 3 r_3 r3是范围[0, 1]内的随机数。 U b i j − L b i j U_{b_{ij}} - L_{b_{ij}} UbijLbij表示每个粒子维度的边界长度。 cos ⁡ β \cos \beta cosβ随着迭代次数的变化而变化,用于生成周期性扰动。 β \beta β的值在公式(22)中定义。激活函数 m 2 m_2 m2,如公式(23)所示,在迭代的后期阶段起着关键作用,减少了激活此策略的可能性。更严格的激活标准显著降低了算法的计算负担。 α 2 \alpha_2 α2是控制粒子更新方向的自适应调整因子,并确保步长自适应减少,如公式(24)所示。

β = 10 ⋅ π ⋅ t / T \beta = 10 \cdot \pi \cdot t/T β=10πt/T

m 2 = E / 50 m_2 = E/50 m2=E/50

α 2 = r 3 ⋅ ( r 3 − m 2 / 2 ) ⋅ K ⋅ ( 1 − t / T ) \alpha_2 = r_3 \cdot (r_3 - m_2/2) \cdot K \cdot (1 - t/T) α2=r3(r3m2/2)K(1t/T)

r 3 − m 2 / 2 r_3 - m_2/2 r3m2/2确保了激活此策略时方向的随机性,帮助避免局部最优。 K ⋅ ( 1 − t / T ) K \cdot (1 - t/T) K(1t/T)确保了随着迭代次数的增加,步长自适应减小。

通过这种微调机制,RRTQ算法可以更准确地调整其搜索路径,因为它接近搜索终点,最大化每次迭代的价值,从而提高算法的整体搜索效率和结果质量。该策略确保了在算法的后期阶段,代理可以更精细地调整其位置。边界自适应步长策略结合RRT算法的局部扩展机制,提高了RRTQ算法在接近目标区域时的搜索精度和效率。该策略的伪代码在算法3中给出。

算法3 基于边界的自适应步长策略

在这里插入图片描述

E. 提出的RRTQ算法

通过结合上述策略开发了提出的RRTQ算法。三种步长更新策略总结在表1中。其详细伪代码和机制图分别在算法4和图5中给出。RRTQ算法有效地整合了核心RRT搜索策略与自适应机制,使其能够有效地适应搜索过程的不同阶段。在早期迭代中,粒子具有更高的概率探索较大步长。在后期迭代中,它们自适应地采取较小步长,逐步细化最优粒子位置以实现更高精度的解决方案。值得注意的是,每种策略的贡献和有效性通过消融实验进行了评估,如第9节所讨论的。
在这里插入图片描述

G. -J. Lai, T. Li and B. -J. Shi, “RRT-Based Optimizer: A Novel Metaheuristic Algorithm Based on Rapidly-Exploring Random Trees Algorithm,” in IEEE Access, vol. 13, pp. 42744-42776, 2025, doi: 10.1109/ACCESS.2025.3547537.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% RRT-Based Optimizer source codes version 1.0
%
% Programmer: Guangjin Lai
% 
% Original paper: Guangjin Lai, Tao Li, Baojun Shi
%                 RRT-Based Optimizer: A novel metaheuristic algorithm based on rapidly-exploring random trees algorithm
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [Bestscore,Bestposition,Convergence_curve]=RRTO(N,Max_iter,lb,ub,dim,fobj)
disp('RRTO starts to work now! Plaease wait......   :)')
disp('-------------------------------------------   :)')
%% initialization
Lb=lb.*ones(1,dim);
Ub=ub.*ones(1,dim);
Bestposition=zeros(1,dim);
Bestscore=inf;
Convergence_curve=zeros(1,Max_iter);
newscore=zeros(1,N);
Pop=RRTO_initialization(N,dim,ub,lb);
Currentscore=zeros(1,N);
for i=1:NCurrentscore(1,i)=fobj(Pop(i,:));if Currentscore(1,i)<BestscoreBestscore=Currentscore(1,i);Bestposition=Pop(i,:);end
end
it=1;
C=10; % Penalty Factor
%% Main loop
while it <= Max_iterk = log(Max_iter - it)/log(Max_iter);E =(it/Max_iter)^(1/3);m1=E/10;m2=E/50;newpop = Pop;for i=1:Nfor j=1:dim% adaptive step size wandering strategyr1=rand();if r1 < kS1=(r1-(k/2))*k*(Ub(j)-Lb(j))/C;newpop(i,j) = Pop(i,j)+S1;end% absolute difference-based adaptive step size strategyr2=rand();if r2 < m1b = exp(cos(pi*(1-(1/it))));alpha1=5*(r2-m1/2)*cos(2*pi*r2)*exp(b);S2=alpha1*abs(Bestposition(1,j)-Pop(i,:));newpop(i,:)= Bestposition(1,j)+S2;end% boundary-based adaptive step size strategyr3=rand();if r3 < m2beta=10*pi*it/Max_iter;alpha2=r3*(r3-m2/2)*k*(1-it/Max_iter);S3=(Ub(j)-Lb(j))*cos(beta)*alpha2;newpop(i,j)=Bestposition(1,j)+S3;endendendfor i=1:N% Coliision detectionC_ub=newpop(i,:)>ub;C_lb=newpop(i,:)<lb;newpop(i,:)=ub.*C_ub+lb.*C_lb+(newpop(i,:).*(~(C_ub+C_lb)));newscore(1,i)=fobj(newpop(i,:));% Updataif newscore(1,i)<Currentscore(1,i)Currentscore(1,i) = newscore(1,i);Pop(i,:) = newpop(i,:);if newscore(1,i)< BestscoreBestscore=Currentscore(1,i);Bestposition=Pop(i,:);endendendConvergence_curve(it)=Bestscore;% Next generation untill termination criterionit=it+1;
end
disp('RRTO is finished now! You can check the results!       :)')
disp('----------------------------------------------------   :)')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79442.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进阶篇|CAN FD 与性能优化

引言 1. CAN vs. CAN FD 对比 2. CAN FD 帧结构详解

【随身WiFi】随身WiFi Debian系统优化教程

0.操作前必看 本教程基于Debian系统进行优化&#xff0c;有些操作对随身WiFi来说可能会带来负优化&#xff0c;根据需要选择。 所有操作需要在root用户环境下运行&#xff0c;否则都要加sudo 随身wifi Debian系统&#xff0c;可以去某安的随声WiFi模块自行搜索刷机 点赞&am…

【Pandas】pandas DataFrame where

Pandas2.2 DataFrame Indexing, iteration 方法描述DataFrame.head([n])用于返回 DataFrame 的前几行DataFrame.at快速访问和修改 DataFrame 中单个值的方法DataFrame.iat快速访问和修改 DataFrame 中单个值的方法DataFrame.loc用于基于标签&#xff08;行标签和列标签&#…

C++代码优化

前段时间写了一些代码&#xff0c;但是在运算过程中发现有些代码可以进行改进以提高运行效率&#xff0c;尤其是与PCL相关的部分&#xff0c;可以进行大幅度提高&#xff0e;特意在此进行记录&#xff0c;分享给大家&#xff0c;也供自己查看&#xff0e; pcl::PointCloud< …

RAG-分块策略

分块策略在检索增强生成&#xff08;RAG&#xff09;方法中起着至关重要的作用&#xff0c;它使文档能够被划分为可管理的部分&#xff0c;同时保持上下文。每种方法都有其特定的优势&#xff0c;适用于特定的用例。将大型数据文件拆分为更易于管理的段是提高LLM应用效率的最关…

Linux网络编程 深入解析TFTP协议:基于UDP的文件传输实战

知识点1【TFTP的概述】 学习通信的基本&#xff1a;通信协议&#xff08;具体发送上面样的报文&#xff09;、通信流程&#xff08;按照什么步骤发送&#xff09; 1、TFTP的概述 tftp&#xff1a;简单文件传输协议&#xff0c;**基于UDP&#xff0c;**不进行用户有效性验证 …

「数据可视化 D3系列」入门第十一章:力导向图深度解析与实现

D3.js 力导向图深度解析与实现 力导向图核心概念 力导向图是一种通过物理模拟来展示复杂关系网络的图表类型&#xff0c;特别适合表现社交网络、知识图谱、系统拓扑等关系型数据。其核心原理是通过模拟粒子间的物理作用力&#xff08;电荷斥力、弹簧引力等&#xff09;自动计…

音频格式转换

1. 下载ffmpeg https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-7.1.1-full_build.7z 2. 配置ffmpeg环境变量 3.安装pydub pip install pydub 4.编写转化工具代码 from pydub import AudioSegment def convertM4aToWav(m4a,wav):sound AudioSegment.from_file(m4a, f…

基于spring boot 集成 deepseek 流式输出 的vue3使用指南

本文使用deepseek API接口流式输出的文章。 环境要求 jdk17 spring boot 3.4 代码如下: package com.example.controller;import jakarta.annotation.PostConstruct; import org.springframework.ai.chat.messages.AssistantMessage; import org.springframework.ai.chat.mes…

微博辐射源和干扰机

微波辐射源和干扰机是电子战和通信领域中的两个重要概念&#xff0c;它们在军事、民用及科研中具有广泛应用。以下是两者的详细解析及其相互关系&#xff1a; ‌1. 微波辐射源‌ ‌定义‌&#xff1a; 微波辐射源是指能够主动发射微波&#xff08;频率范围通常为 ‌300 MHz&…

2025年4月16日华为留学生笔试第三题300分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 智慧城市网络优化 问题描述 K小姐是一家智慧城市服务提供商的网络架构师。她负责规划城市边缘计算节点的布局,以提供更快速、稳定的网络服务。 城市内有 n n

多线程编程的简单案例——单例模式[多线程编程篇(3)]

目录 前言 1.wati() 和 notify() wait() 和 notify() 的产生原因 如何使用wait()和notify()? 案例一:单例模式 饿汉式写法: 懒汉式写法 对于它的优化 再次优化 结尾 前言 如何简单的去使用jconsloe 查看线程 (多线程编程篇1)_eclipse查看线程-CSDN博客 浅谈Thread类…

pytorch基本操作2

torch.clamp 主要用于对张量中的元素进行截断&#xff08;clamping&#xff09;&#xff0c;将其限制在一个指定的区间范围内。 函数定义 torch.clamp(input, minNone, maxNone) → Tensor 参数说明 input 类型&#xff1a;Tensor 需要进行截断操作的输入张…

一次制作参考网杂志的阅读书源的实操经验总结(附书源)

文章目录 一、背景介绍二、书源文件三、详解制作书源&#xff08;一&#xff09;打开Web服务&#xff08;二&#xff09;参考网结构解释&#xff08;三&#xff09;阅读书源 基础&#xff08;四&#xff09;阅读书源 发现&#xff08;五&#xff09;阅读书源 详细&#xff08;六…

并发设计模式实战系列(2):领导者/追随者模式

&#x1f31f; ​大家好&#xff0c;我是摘星&#xff01;​ &#x1f31f; 今天为大家带来的是并发设计模式实战系列&#xff0c;第二章领导者/追随者&#xff08;Leader/Followers&#xff09;模式&#xff0c;废话不多说直接开始~ 目录 领导者/追随者&#xff08;Leader/…

自求导实现线性回归与PyTorch张量详解

目录 前言一、自求导的方法实现线性回归1.1自求导的方法实现线性回归的理论讲解1.1.1 线性回归是什么&#xff1f;1.1.2线性回归方程是什么&#xff1f;1.1.3散点输入1.2参数初始化1.2.1 参数与超参数1.2.1.1 参数定义1.2.1.2 参数内容1.2.1.3 超参数定义1.2.1.4 超参数内容1.…

2025年机电一体化、机器人与人工智能国际学术会议(MRAI 2025)

重要信息 时间&#xff1a;2025年4月25日-27日 地点&#xff1a;中国济南 官网&#xff1a;http://www.icmrai.org 征稿主题 机电一体化机器人人工智能 传感器和执行器 3D打印技术 智能控制 运动控制 光电系统 光机电一体化 类人机器人 人机界面 先进的运动控制 集成制造系…

线性代数 | 知识点整理 Ref 3

注&#xff1a;本文为 “线性代数 | 知识点整理” 相关文章合辑。 因 csdn 篇幅合并超限分篇连载&#xff0c;本篇为 Ref 3。 略作重排&#xff0c;未整理去重。 图片清晰度限于引文原状。 如有内容异常&#xff0c;请看原文。 《线性代数》总复习要点、公式、重要结论与重点释…

CFD中的动量方程非守恒形式详解

在计算流体力学&#xff08;CFD&#xff09;中&#xff0c;动量方程可以写成守恒形式和非守恒形式&#xff0c;两者在数学上等价&#xff0c;但推导方式和应用场景不同。以下是对非守恒形式的详细解释&#xff1a; 1. 动量方程的守恒形式 首先回顾守恒形式的动量方程&#xff…

Leetcode 1504. 统计全 1 子矩形

1.题目基本信息 1.1.题目描述 给你一个 m x n 的二进制矩阵 mat &#xff0c;请你返回有多少个 子矩形 的元素全部都是 1 。 1.2.题目地址 https://leetcode.cn/problems/count-submatrices-with-all-ones/description/ 2.解题方法 2.1.解题思路 单调栈 时间复杂度&…