多目标应用:基于双存档模型的多模态多目标进化算法(MMOHEA)的移动机器人路径规划研究(提供MATLAB代码)

一、机器人路径规划介绍

移动机器人(Mobile robot,MR)的路径规划是 移动机器人研究的重要分支之,是对其进行控制的基础。根据环境信息的已知程度不同,路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或局部已知的局部路径规划。随着科技的快速发展以及机器人的大量应用,人们对机器人的要求也越来越高,尤其表现在对机器人的智能化方面的要求,而机器人自主路径规划是实现机器人智能化的重要步骤,路径规划是指规划机器人从起点位置出发,无碰撞、安全到达指定目标位置的最优路径。目前,常用的移动机器人全局路径规划方法很多,如栅格法和人工势场法。对于栅格法,当空间增大时,所需存储空间剧增,决策速度下降;而人工势场法容易产生局部最优解问题和死锁现象。随着智能控制技术的发展,出现了如遗传算法算法、粒子群优化算法、麻雀搜索算法、灰狼优化算法、鲸鱼优化算法等。

参考文献:

1\]史恩秀,陈敏敏,李俊,等.基于蚁群算法的移动机器人全局路径规划方法研究\[J\].农业机械学报, 2014, 45(6):5.DOI:CNKI:SUN:NYJX.0.2014-06-009. \[2\]朱庆保,张玉兰.基于栅格法的机器人路径规划蚁群算法\[J\].机器人, 2005, 27(2):5.DOI:10.3321/j.issn:1002-0446.2005.02.008. \[3\]曹新亮,王智文,冯晶,等.基于改进蚁群算法的机器人全局路径规划研究\[J\].计算机工程与科学, 2020, 42(3):7.DOI:CNKI:SUN:JSJK.0.2020-03-027. ### 二、栅格地图环境搭建 首先建立移动机器人工作环境,设移动机器人的工作空间为二维空间(记为RS),工作环境中的障碍物即为机床。在机器人运动过程中,障碍物为静止且大小不发生变化。按栅格法划分RS,移动机器人在栅格间行走。无障碍物的栅格为可行栅格,有障碍物的栅格为不可行栅格。栅格集包含所有栅格。栅格标识有:直角坐标法和序号法。本文采用序号标识法。 在移动机器人工作空间下按从左到右,从上到下的顺序,依次标记为序号1,2,3,···,n,每一个序号代表一个栅格。为了避免移动机器人与障碍物发生碰撞,可以将障碍物膨胀,障碍物在占原有栅格的同时,再占多个栅格,按 个栅格算。这种划分方法简单实用,能够满足环境模型与真实情况相符。从而使移动机器人在路径规划时畅通无阻。令S={1,2,3,···,N}为栅格序号集。根据上述对应关系,可知g(0,0)的序号为1,g(1,0)序号为2,直至g(X,Y)的序号为n。规划起始位置、目标位置均为任意且都属于S(但不在同一栅格内)。 在实际工作环境中,移动机器人工作环境是复杂多变的,且为三维空间。为了便于研究,本文对环境进行简化建模。栅格法是一种常用的环境表示方法,因其简单方便(二维环境),环境建模的复杂性小,因而本文环境建模采用栅格法。在栅格地图中,工作环境被划分为很多栅格,其中包括有障碍物和无障碍的栅格,在仿真程序中用0表示此栅格无障碍物,机器人可以通过此栅格,用1表示栅格有障碍物,机器人无法通过,需选择其他栅格。栅格的尺寸大小可根据工作环境中的障碍物尺寸以及安全距离进行设置。为了实现程序仿真,需要对栅格进行标识,如下图所示,以20x20的栅格环境为例来说明。 ![](https://img-blog.csdnimg.cn/direct/d0e995a1ff9b421581fabfe8c9e4e49e.png) ​ 如上图所示,白色栅格表示无障碍物的栅格,黑色栅格则表示有障碍物的栅格,在地图中对每个栅格编号,不同序号的栅格在坐标系中的坐标可用下式来表示: x=mod(Ni/N)-0.5 y=N-ceil(Ni/N)+0.5 其中,mod为取余运算,ceil表示向后取整,Ni是对应栅格的标号,N表示每 列的栅格数量,取栅格中心位置作为栅格在坐标系中的坐标。这样机器人全局路径规划的问题就转变成了利用算法在栅格地图上寻找由起始点到目标点的有序的栅格子集,这些栅格子集的中心连线便是算法寻找的路径。 参考文献: \[1\]史恩秀,陈敏敏,李俊,等.基于蚁群算法的移动机器人全局路径规划方法研究\[J\].农业机械学报, 2014, 45(6):5.DOI:CNKI:SUN:NYJX.0.2014-06-009. \[2\]曹新亮,王智文,冯晶,等.基于改进蚁群算法的机器人全局路径规划研究\[J\].计算机工程与科学, 2020, 42(3):7.DOI:CNKI:SUN:JSJK.0.2020-03-027. ### 三、机器人路径规划多目标模型 #### 3.1路径成本 当机器人从起点向目标点移动时,通常选择最短的一条路径。将一条路径上每 条线段的长度累加求和即可得到路径总长度。任何两点形成的线段都是根据欧氏距 离来计算的,其中,P = \[P0, P1, ..., Pi, Pi + 1, ... Pn, Pn + 1\]代表路径 P,S = P0代表起 点,T = Pn + 1代表目标点。路径长度目标计算方法如下式 ![](https://img-blog.csdnimg.cn/direct/e32d9bb24e5b48dc8f8174baf32bca54.png) 其中,Pi =(xi, yi)和 Pi + 1 = (xi + 1, yi + 1)是路径中的两个连续点,d(Pi, Pi + 1)是 路径中的线段距离;Length(P)表示由所有线段相加得到的总路径长度;n 表示路 径中的点数量。 #### 3.2平滑成本 路径平滑度表示路径的弯曲程度,换句话说,只有当路径是平滑的,机器人 在移动时才会使用较少的能量。为了衡量可行路径的平滑度,使用两个连续路段之 间的夹角 Ang \[Pi, Pi + 1, Pi + 2\]表示。路径平滑度的计算方法如下式 ![](https://img-blog.csdnimg.cn/direct/8d5592436a904f2c951e86e3c11ab48b.png) ![](https://img-blog.csdnimg.cn/direct/8abc8e66b89c4a098b7660831484be63.png)其中 Pi,Pi + 1和 Pi + 2是路径上的三个相邻节点。 #### 3.3目标函数 移动机器人(Mobile robot,MR)的路径规划的目标函数**f1** 和**f2** 分别是**路径成本最小** 和**平滑成本最小**。 参考文献: \[1\]于振翱. 面向多目标优化的移动机器人路径规划方法研究\[D\]. 山东:聊城大学,2023. \[2\]杨嘉. 基于改进NSGA-Ⅱ算法的移动机器人路径规划研究\[D\]. 陕西:长安大学,2021. ## 四、MMOHEA求解移动机器人路径规划 基于双存档模型的多模态多目标进化算法(Two-Archive model based evolutionary algorithm for multimodal multi-objective optimization problems,MMOHEA)是一种为解决多模态多目标优化问题(MMOPs)而设计的算法。 **MMOHEA算法描述** 该算法的核心思想是利用两个并行的后代生成机制,一个基于竞争粒子群优化器(Competitive Particle Swarm Optimizer, CPSO),另一个基于差分进化(Differential Evolution, DE),以适应不同演化需求来扩展解空间。此外,算法采用了局部搜索策略和反向向量变异策略来实现更好的收敛性和多样性。 **MMOHEA算法流程** 初始化:生成一组参考向量以指导多样性存档的更新,并随机生成初始种群。 决策变量分析:使用决策变量分析技术检测独立于收敛相关的决策变量,以帮助找到多个Pareto最优解。 更新收敛存档:使用一种特殊的选择策略,通过两个主要步骤选择解决方案,以在独立收敛相关决策子空间中找到不同的Pareto最优解。 更新多样性存档:通过聚类策略和基于生态位的方法来维持目标空间和剩余决策子空间的多样性。 繁殖:基于从收敛和多样性存档中选择的父母进行繁殖,生成新的种群。 迭代更新:重复上述步骤,直到满足停止条件。 重组策略:如果检测到独立收敛相关的决策变量,则使用重组策略生成最终解集,从而减少演化过程中的种群大小。 参考文献: \[1\] B Y H A , A J W , A J L ,et al.A two-archive model based evolutionary algorithm for multimodal multi-objective optimization problems\[J\].Applied Soft Computing,2022, 119 ### 4.1部分代码 close all clear clc dbstop if all error addpath(".//") global G S E MultiObj= fun_info();%获取无人机模型信息 params.maxgen=100; % 最大迭代次数 params.Np=50; % 种群大小 params.Nr=100; %外部存档大小(不得小于种群大小) [Xbest,Fbest] = (params,MultiObj); %% 获取算法得到的所有路径存于Result中 for i=1:size(Xbest,1) global_best = round(Xbest(i,:)); route = [S(1) global_best E(1)]; path=generateContinuousRoute(route,G); % path=shortenRoute(path); path=GenerateSmoothPath(path,G); Result(i).BestPosition= path; Result(i).BestFit=Fbest(i,:); end %% 获取 路径成本最小 与 平滑成本最小 if size(Fbest,1)>1 idx=min(Fbest); else idx=Fbest; end KK=find(Fbest(:,1)==idx(1)); IDX(1)=KK(1); KK=find(Fbest(:,2)==idx(2)); IDX(2)=KK(1); https://mbd.pub/o/bread/mbd-ZpqYmplw https://mbd.pub/o/bread/mbd-ZpqYmpdx https://mbd.pub/o/bread/mbd-ZpqYmZ5s https://mbd.pub/o/bread/mbd-ZpqYmZxr ​https://mbd.pub/o/bread/mbd-ZpqYmZpu %% 画图pareto前沿图 dbclear all figure plot(Fbest(:,1),Fbest(:,2),'r*'); xlabel('路径成本') ylabel('平滑成本') legend('') ### 4.2部分结果 ![](https://i-blog.csdnimg.cn/direct/bab47b1b45a24ec7b3c77d3715e67bc9.png) ![](https://i-blog.csdnimg.cn/direct/eb23a302021d44e988e1e0afc2d94e8f.png) ![](https://i-blog.csdnimg.cn/direct/2ad2613d118641e0b79a959e610fa294.png) ## ![](https://i-blog.csdnimg.cn/direct/c689e353c95e422aaea362b59f307f03.png) ## 五、完整MATLAB代码 见下方联系方式

相关推荐
开发小能手-roy3 分钟前
使用PyTorch实现简单图像识别(基于MNIST手写数字数据集)的完整代码示例,包含数据加载、模型定义、训练和预测全流程
人工智能·pytorch·python
星空寻流年11 分钟前
css3伸缩盒模型第一章(主轴以及伸缩盒模型)
前端·css·css3
阳洞洞12 分钟前
leetcode 2516. 每种字符至少取 K 个
算法·leetcode·滑动窗口
嗨,紫玉灵神熊16 分钟前
使用 OpenCV 实现图像中心旋转
图像处理·人工智能·opencv·计算机视觉
cmoaciopm21 分钟前
FastGPT部署的一些问题整理
人工智能
odoo中国25 分钟前
机器学习实操 第一部分 机器学习基础 第6章 决策树
人工智能·决策树·机器学习
giszz25 分钟前
DeepSeek提示词技巧
人工智能
AI技术学长28 分钟前
训练神经网络的批量标准化(使用 PyTorch)
人工智能·pytorch·神经网络·数据科学·计算机技术·批量标准化
ccLianLian30 分钟前
深度学习·经典模型·Transformer
人工智能·深度学习·transformer
Chat_zhanggong34542 分钟前
deepseek海思SD3403边缘计算AI产品系统
人工智能·边缘计算