路径规划算法:基于人工电场优化的路径规划算法- 附代码

news/2024/10/20 6:37:21/

路径规划算法:基于人工电场优化的路径规划算法- 附代码

文章目录

  • 路径规划算法:基于人工电场优化的路径规划算法- 附代码
    • 1.算法原理
      • 1.1 环境设定
      • 1.2 约束条件
      • 1.3 适应度函数
    • 2.算法结果
    • 3.MATLAB代码
    • 4.参考文献

摘要:本文主要介绍利用智能优化算法人工电场算法来进行路径规划。

1.算法原理

人工电场算法原理请参考:https://blog.csdn.net/u011835903/article/details/118929142

1.1 环境设定

在移动机器人的路径优化中,每个优化算法的解代表机器人的一条运动路径。优化算法会通过优化计算在众多路径中找出一条最优路径。
优化算法的设定必须和机器人运动环境模型相对应。不失一般性,假设在用栅格法对机器人运动环境建模后得出的结果是 m×n 的矩形区域,坐标值从 1 开始,如图1 。其中坐标原点栅格代表机器人的初始位置,坐标 (m,n)对应的栅格代表机器人的移动目标位置。优化算法设定的一个重要内容是确定优化算法的数学表达形式,在这里这个问题转化为用一个向量表示机器人的移动路径。经过分析发现,尽管栅格法建立的模型对空间进行了离散化,但本质上机器人的移动路径依然是连续的。

在这里插入图片描述

图1.栅格地图

1.2 约束条件

对于机器人的路径优化来说,其运动路径必须局限在栅格空间内,即搜索不能越过栅格的矩形边界。此外,还应受障碍物的限制,即机器人的运动轨迹不能穿过存在障碍物的栅格区域。

1.3 适应度函数

在本文的建模方法中,本文路径规划目标是路径长度最短。路径的长度可以表示为:

L ( P a t h ) = ∑ i = 0 n − 1 ( x l i + 1 − x l i ) 2 + ( y l i + 1 − y l i ) 2 (1) L(Path) = \sum_{i=0}^{n-1}\sqrt{(xl_{i+1} - xl_i)^2 + (yl_{i+1} - yl_{i})^2}\tag{1} L(Path)=i=0n1(xli+1xli)2+(yli+1yli)2 (1)
其中(x,y)是路径中间点的坐标

利用人工电场算法对上式进行寻优,找到最短路径。人工电场算法参数设定如下:

%% 人工电场算法参数设置
dim=length(noLM);%维度,即为非障碍物个数。
numLM0=round((EndPoint(1)-StartPoint(1))/4);%每次迭代选取的的中间路径点个数,可调
lb=0;%下边界
ub=1;%上边界
Max_iteration = 100;%最大迭代次数
SearchAgents_no = 30;%种群数量
fobj = @(x)fun(x,noS,noE,numLM0,net);%适应度函数

2.算法结果

在这里插入图片描述

3.MATLAB代码

本程序中,支持1.地图任意创建保存。2.其实点任意更改。

4.参考文献

[1]罗阳阳,彭晓燕.基于改进PSO的四轮移动机器人全局路径规划[J].计算机仿真,2020,37(07):373-379.

[2]鲁丹. 粒子群算法在移动机器人路径规划中的应用研究[D].武汉科技大学,2009.


http://www.ppmy.cn/news/351298.html

相关文章

147.VGA256色模式编程

/*VGA256.c -- VGA 256 色编程 */ #include "dos.h" #include "conio.h" #include "stdio.h"void InitScr(); void RstScr(); void PutPoint(int x, int y, int Color); void Rect(int x1, int y1, int x2, int y2, int Color); void LineV(int …

用c语言系统以菜单方式工作,20XX年C语言综合编程训练.ppt

C语言综合编程训练;C程序组成;五 子 棋 游 戏 程 序;五 子 棋 游 戏 程 序;功 能 分 析;定义核心数据结构;程序的模块划分;程 序 的 编 制 细 节;bioskey;用 户 手 册;设计任务系统以菜单方式工作(文本菜单或图形菜单)输入数据模块,数据用文件保存输出数据模块&…

c语言编程暂停的系统调用,C语言编程常见问题解答之系统调用.doc

C语言编程常见问题解答之系统调用,c语言函数调用,java调用c语言,c语言调用dll,python调用c语言,c语言调用汇编函数,c语言中函数的调用,c语言调用matlab函数,c语言函数的调用,c语言递归调用 C语言编程常见问题解答之系统调用 PC中最主要的难题之一,也是最容易引起误解…

超级vga显示卡_VESA 编程介绍(一)标准VGA BIOS及超级VGA模式号

VESA编程介绍 (1)标准VGA BIOS及超级VGA模式号 --------------------------------------------------------------------------------- 相关章节: (1): 标准VGA BIOS及超级VGA模式号 (2):CPU显存控制 (3):扩展的VGA BIOS (4): 扩展的VGA BIOS(续)及应用举例 ----------------…

鼠标绘图 c语言,c语言高级编程技术教程 图形显示方式与鼠标输入.doc

c语言高级编程技术教程 图形显示方式与鼠标输入 c语言高级编程技术教程 图形显示方式和鼠标输入 图形显示方式和鼠标输入 问题的提出编写程序,使用鼠标进行如下操作:按住鼠标器的任意键并移动,十字光 标将随鼠标而移动,根据按键的不同采用不同的形状来画出相应的移动轨迹:…

C语言图形编程中的绘图函数~

一、屏幕和视口设置与清除函数 36. setviewport() 设置图形视口函数 37. clearviewport()清除图形视口函数 38. cleardevice() 清除屏幕函数 39. getviewsettings() 获取图形视口设置函数 二、调色板和颜色函数 40. setpalette()设置调色板函数 41. se…

C语言编程之利用ellipse and rectangle 画图

问题描述:利用ellipse and rectangle 画图。 程序源码: #include "stdio.h" #include "graphics.h" #include "conio.h" void main() { int driverVGA,modeVGAHI; int i,num15,top50; int left20,right50; initgraph(&a…

c语言图形方式初始化,c语言图形方式下的编程.doc

c语言图形方式下的编程.doc C语言图形方式下的编程 学习目标 了解PC显示系统的结构 C语言图形初始化的一般方法 C语言常用的图形处理函数 显示系统简介 PC机显示系统一般是由显示器和显示卡组成。显示器(Monitor)是独立于主机的一种外部设备。显示卡(Adapter)是插在Pc主机上的一…