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

本文主要是介绍多目标应用:基于双存档模型的多模态多目标进化算法(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的栅格环境为例来说明。

如上图所示,白色栅格表示无障碍物的栅格,黑色栅格则表示有障碍物的栅格,在地图中对每个栅格编号,不同序号的栅格在坐标系中的坐标可用下式来表示:

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代表目标点。路径长度目标计算方法如下式

其中,Pi =(xi, yi)和 Pi + 1 = (xi + 1, yi + 1)是路径中的两个连续点,d(Pi, Pi + 1)是 路径中的线段距离;Length(P)表示由所有线段相加得到的总路径长度;n 表示路 径中的点数量。

3.2平滑成本

路径平滑度表示路径的弯曲程度,换句话说,只有当路径是平滑的,机器人 在移动时才会使用较少的能量。为了衡量可行路径的平滑度,使用两个连续路段之 间的夹角 Ang [Pi, Pi + 1, Pi + 2]表示。路径平滑度的计算方法如下式

其中 Pi,Pi + 1和 Pi + 2是路径上的三个相邻节点。

3.3目标函数

移动机器人(Mobile robot,MR)的路径规划的目标函数f1f2分别是路径成本最小平滑成本最小

参考文献:

 [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)>1idx=min(Fbest);
elseidx=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-ZpqYmplwhttps://mbd.pub/o/bread/mbd-ZpqYmpdxhttps://mbd.pub/o/bread/mbd-ZpqYmZ5shttps://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部分结果

五、完整MATLAB代码

见下方联系方式

这篇关于多目标应用:基于双存档模型的多模态多目标进化算法(MMOHEA)的移动机器人路径规划研究(提供MATLAB代码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1131193

相关文章

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

C#中的Converter的具体应用

《C#中的Converter的具体应用》C#中的Converter提供了一种灵活的类型转换机制,本文详细介绍了Converter的基本概念、使用场景,具有一定的参考价值,感兴趣的可以了解一下... 目录Converter的基本概念1. Converter委托2. 使用场景布尔型转换示例示例1:简单的字符串到

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例

《PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例》词嵌入解决NLP维度灾难,捕捉语义关系,PyTorch的nn.Embedding模块提供灵活实现,支持参数配置、预训练及变长... 目录一、词嵌入(Word Embedding)简介为什么需要词嵌入?二、PyTorch中的nn.Em

Spring Boot3.0新特性全面解析与应用实战

《SpringBoot3.0新特性全面解析与应用实战》SpringBoot3.0作为Spring生态系统的一个重要里程碑,带来了众多令人兴奋的新特性和改进,本文将深入解析SpringBoot3.0的... 目录核心变化概览Java版本要求提升迁移至Jakarta EE重要新特性详解1. Native Ima

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

Spring Boot中的路径变量示例详解

《SpringBoot中的路径变量示例详解》SpringBoot中PathVariable通过@PathVariable注解实现URL参数与方法参数绑定,支持多参数接收、类型转换、可选参数、默认值及... 目录一. 基本用法与参数映射1.路径定义2.参数绑定&nhttp://www.chinasem.cnbs