单目标应用:基于蛇群优化算法(SO)的无人机(UAV)三维路径规划(提供MATLAB代码)

2023-11-19

一、蛇群优化算法SO

蛇群优化算法(Snake Optimizer,SO)由Fatma A. Hashim和Abdelazim G. Hussien于2022年提出,该算法思路新颖,快速高效,模拟了蛇的觅食和繁殖行为。SO具体原理参考如下链接:

蛇群优化算法

二、无人机(UAV)三维路径规划

无人机三维路径规划数学模型参考如下文献:

Phung M D , Ha Q P . Safety-enhanced UAV Path Planning with Spherical Vector-based Particle Swarm Optimization[J]. arXiv e-prints, 2021.

目标函数由路径长度成本,安全性与可行性成本、飞行高度成本和路径平滑成本共同组成:

(1)路径长度成本

路径长度成本由相邻两个节点之间的欧氏距离和构成,其计算公式如下:
在这里插入图片描述

(2)路径安全性与可行性成本

在这里插入图片描述

路径安全性与可行性成本通过下式计算:

在这里插入图片描述

(3)路径飞行高度成本

在这里插入图片描述

飞行高度成本通过如下公式计算所得:
在这里插入图片描述
在这里插入图片描述

(4)路径平滑成本

在这里插入图片描述

投影向量通过如下公式计算:

在这里插入图片描述

转弯角度的计算公式为:
在这里插入图片描述

爬坡角度的计算公式为:

在这里插入图片描述

平滑成本的计算公式为:
在这里插入图片描述

(5)总成本(目标函数)

在这里插入图片描述

总成本由最优路径成本,安全性与可行性成本、飞行高度成本和路径平滑成本的线性加权所得。其中,b为加权系数。

三、实验结果

在三维无人机路径规划中,无人机的路径由起点,终点以及起始点间的点共同连接而成。因此,自变量为无人机起始点间的各点坐标,目标函数为总成本(公式9)。

3.1参数设置

(1)设9个柱状障碍物的位置及半径:

R1=60;  % Radius 60
x1 = 350; y1 = 500; z1 = 100; % center


R2=70;  % Radius 70
x2 = 600; y2 = 200; z2 = 150; % center

R3=80;  % Radius 80
x3 = 500; y3 = 350; z3 = 150; % center

R4=70;  % Radius 70
x4 = 350; y4 = 200; z4 = 150; % center

R5=70;  % Radius 70 
x5 = 700; y5 = 550; z5 = 150; % center


R6=80;  % Radius 80
x6 = 650; y6 = 750; z6 = 150; % center

R7=70;  % Radius 70
x7 = 800; y7 = 400; z7 = 150; % center

R8=50;  % Radius 50
x8 = 300; y8 = 350; z8 = 100; % center

R9=50;  % Radius 50
x9 = 500; y9 = 600; z9 = 100; % center 

(2)起始点位置为:

start_location = [200;100;150];

end_location = [800;800;150];

(3)起始点间共15个待求点。

(4)加权系数b=[5 1 10 1]。

(5)蛇群优化算法的种群大小为50,最大迭代次数为100。

4.2求解结果

独立运行三次,得到三次参考方案如下:(黑色正方形是起点,黑色圆圈是终点,共有9个柱状障碍物,红线为优化得到的无人机路线。)

(1)第一次结果:

在这里插入图片描述
在这里插入图片描述

(2)第二次结果:
在这里插入图片描述
在这里插入图片描述

(3)第3次结果:

在这里插入图片描述

在这里插入图片描述

由此可以看出,蛇群优化算法求解无人机三维路径规划优势明显,能够快速避障,找到合适的飞行路线。

四、参考代码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单目标应用:基于蛇群优化算法(SO)的无人机(UAV)三维路径规划(提供MATLAB代码) 的相关文章

  • matlab中更快的插值方法

    我正在使用 interp1 来插值一些数据 temp 4 30 4 rand 365 10 depth 1 10 dz 0 5 define new depth interval bthD min depth dz max depth ne
  • 通过多次合并相同的行向量来构建矩阵

    有没有一个matlab函数可以让我执行以下操作 x 1 2 2 3 然后基于x我想建立矩阵m 1 2 2 3 1 2 2 3 1 2 2 3 1 2 2 3 您正在寻找REPMAT http www mathworks com help t
  • MATLAB - 通过垂直连接子矩阵重新排列矩阵

    我在执行以下任务时遇到问题 假设一个 3x6 矩阵 A 0 2787 0 2948 0 4635 0 8388 0 0627 0 0435 0 6917 0 1185 0 3660 0 1867 0 2383 0 7577 0 6179 0
  • 如何在 MATLAB 中将矩阵元素除以列总和?

    有没有一种简单的方法可以将每个矩阵元素除以列和 例如 input 1 4 4 10 output 1 5 4 14 4 5 10 14 以下是执行此操作的不同方法的列表 使用bsxfun https www mathworks com he
  • 保存符号方程以供以后使用?

    From here http www mathworks com help releases R2011a toolbox symbolic brvfu8o 1 html brvfxem 1 我正在尝试求解这样的符号方程组 syms x y
  • MATLAB 变量传递和惰性赋值

    我知道在 Matlab 中 当将新变量分配给现有变量时 会进行 惰性 评估 例如 array1 ones 1 1e8 array2 array1 的价值array1不会被复制到array2除非元素array2被修改 由此我推测Matlab中
  • 轴标注问题

    通过运行我编写的以下 matlab 函数 可以互换图中的 x 轴和 y 轴 谁能告诉我问题出在哪里或者帮我解决它吗 预先感谢您的任何帮助 function axislabeling n x 1 1 n y 1 1 n z zeros n n
  • 如何从 matlab 调用 Qtproject?

    我在 matlab 中有一个函数可以写入一个 file txt 我在 qt 项目中使用它 So 当我使用 unix 获取要运行的 qt 编译可执行文件时 我有一个 Matlab 文件 但出现错误 代码 unix home matt Desk
  • 绘制布朗运动 matlab

    首先 我只想说我不太习惯使用matlab 但我需要一个作业 我应该创建一个 布朗运动 我的代码目前如下所示 clf hold on prompt Ge ett input size input prompt numParticles inp
  • 氡变换线检测

    我正在尝试检测灰度图像中的线条 为此 我在 MATLAB 中使用 Radon 变换 我的 m 文件的示例如下所示 我可以使用此代码检测多行 我还使用线条的移位和旋转属性来绘制线条 但是 我不明白在获取rho和theta值后如何获取检测线的起
  • Matlab strcat 不返回字符串?

    imgstr 无法识别 strcat 的输出字符串 homedir C Users images for img 01 bmp 02 bmp 03 bmp imgstr strcat homedir img I imread imgstr
  • 如何在Matlab中将图像从笛卡尔坐标更改为极坐标?

    我正在尝试将图像的像素从 x y 坐标转换为极坐标 但我遇到了问题 因为我想自己编写该函数 这是我到目前为止所做的代码 function newImage PolarCartRot read and show the image image
  • 基本矩阵错误?

    我试图通过扫描从相机拍摄的两个图像 检测图像中的特征 匹配它们 创建基本矩阵 使用相机内在函数计算基本矩阵 然后分解它以找到旋转和翻译 这是matlab代码 I1 rgb2gray imread 1 png I2 rgb2gray imre
  • 二维随机微分方程 (SDE)

    我第一次研究随机微分方程 我正在寻求模拟和求解二维随机微分方程 模型如下 dp F t p dt G t p dW t where p 是一个 2 1 向量 p theta t phi t F是列向量 F sin theta Psi cos
  • 在 MATLAB 中验证输入的最佳实践

    在验证 MATLAB 函数中的输入时 什么时候使用 inputParser 比使用断言更好 或者还有其他更好的工具可用吗 我个人发现使用 inputParser 不必要地复杂 对于 Matlab 始终需要检查 3 项内容 存在 类型和范围
  • 将值从 C++ MEX 文件返回到 MATLAB

    我正在编写一个从 C 代码中检索数据的 MATLAB 程序 为此 我在 MATLAB 中创建了一个 MEX 文件和一个网关 mexFunction 虽然可以在 MATLAB 中读取读取值 但我无法检索它来使用它 如果不清楚 我有与这里完全相
  • 用于读取csv写入数组的c++程序;然后操作并打印到文本文件中(已经用 matlab 编写)

    我想知道是否有人可以帮助我 我正在尝试构建一个程序 从 csv 文件中读取大小未知的浮点数大数据块 我已经在 MATLAB 中编写了此代码 但想要编译和分发此代码 因此转向 C 我只是在学习并尝试阅读本文以开始 7 5 19892 4 23
  • 在matlab中融合2个以上的图像

    在 MATLAB 中 如何融合两个以上的图像 例如 我想要做什么imfuse但对于超过 2 个图像 使用两张图像 这是我的代码 A imread file1 jpg B imread file2 jpg C imfuse A B blend
  • 如何从一个清晰的例子计算二维图像中的吉布斯能量

    我有一个关于矩阵的有趣问题 在吉布斯分布中 吉布斯能量U x 可以计算为 这是所有可能的派系 C 上的派系势 Vc x 的总和 右图 团 c 被定义为 S 中站点的子集 x 蓝色像素的邻域是左图中黄色像素的邻居 其中每对不同的站点都是邻居
  • 了解 Matlab 中的 DEL2 函数以便用 C++ 对其进行编码

    为了用 C 编写 DEL2 matlab 函数 我需要了解该算法 我已经成功地为不在边界或边缘上的矩阵元素编写了函数 我已经看过几个有关它的主题 并通过输入 edit del2 或 type del2 来阅读 MATLAB 代码 但我不明白

随机推荐

  • RT-Thread通过SDIO接口使用SD卡,使用ulog保存日志到sd卡

    开发环境 野火的stm32f407 rt thread studio版本是版本 2 2 6 stm32f4的资源包为0 2 2 rt thread版本为4 0 3 开发板原理图 引脚分配 PC8 SDIO D0 PC9 SDIO D1 PC
  • 【JavaSpring】Aop案例

    测定接口执行效率 描述 在接口执行前输出当前系统时间 开发模式 XML or 注解 思路分析 1 导入坐标 pom xml
  • python变量的作用域及生命周期_Python——变量的作用域

    原创声明 本文系博主原创文章 转载及引用请注明出处 1 在编程语言中 变量都有一定的作用域 用来限定其生命周期 且不同类型的变量作用域不同 在Python中解释器引用变量的顺序 优先级 为 当前作用域局部变量 gt 外层作用域变量 gt 当
  • python frame用法_Pandas Series.to_frame()用法介绍

    系列被定义为可以容纳整数 字符串 双精度值等的列表类型 它以列表的形式返回对象 该列表的索引从0到n开始 其中n表示系列中值的长度 系列和数据框架之间的主要区别在于 系列只能包含具有特定索引的单个列表 而数据框架是可以分析数据的多个系列的组
  • CentOS8基础篇11:CentOS8挂载本地ISO,配置本地yum源

    1 创建ISO镜像挂在目录 第一种方法 VMware用户可以直接用镜像挂载 2 挂载镜像 第一种方法测试成功 第二种方法 采用ISO镜像文件方式挂载 把ISO文件复制到 opt目录下 这也是最好的方式 将Centos8的ISO镜像上传到IS
  • Linux大文件查看利器:掌握Less命令的使用和技巧

    文章目录 简介 1 1 less命令的作用和功能 1 2 less命令与more命令的对比 安装和基本用法 2 1 Linux系统中less命令的安装方法 2 2 使用less命令打开文件 2 3 基本导航和浏览文件 2 4 在文件中搜索关
  • 三层交换机实现不同vlan间通信

    1 器材 二层交换机为神州数码DCS 3950 路由交换机为神州数码DCRS 5650 路由器为神州数码DCR 2600 2 原理 2 1交换机的带外管理和带内管理 交换机的管理方式可以分为带内管理和带外管理两种管理模式 所谓带内管理 是指
  • 输出整数m中删除n位之后的最大(小)数(保持各位顺序不变)

    这个题不知道ac没有 因为是随便看到的一个题 没办法测 如果有错误请帮我指出来 看到很多复杂度很高的暴力破解方法 有三层循环的那种 我这个复杂度应该会低一点 思路 先将结果初始化最后m n个字符 放在res中 从res的第一位开始 在它前面
  • C# ADSL自动拨号实现代码

  • docker安装mysql8

    docker 默认mysql版本为8 0 docker pull mysql 启动mysql8 首先需要新建目录及文件 文件 F mydocker mysql8 config my cnf 目录 F mydocker mysql8 data
  • java数组专题

    下文笔者讲述求数组并集的方法分享 如下所示 实现思路 1 定义一个set集合 2 将数组中的元素都放入set中 则可实现数组并集 例 package com java265 other import java util HashSet im
  • QT 切换界面时候布局错乱

    偶然发现 在win下 全屏显示 showFullScreen 时候 label 如果开启 自动换行功能会出现 布局错乱QLabelt gt setWordWrap true
  • 机器学习里的 kernel 是指什么?

    转自我的知乎回答 机器学习里的 kernel 是指什么 我换个角度来解释这个问题 机器学习在做回归或者分类时有一个很朴实的想法 预测 x 的值 那就在训练集 X 中寻找那些与 x 相似的样本 再把这些样本的值加权作为预测值 这里有两个问题
  • Unity 导出XCode工程运行报错: ‘UnityFramework/UnityFramework.h‘ file not found

    简介 近期项目升级到2019 4 10f1版本 在用自动化打包的时候 遇到了一些问题 其中一个是 在导出XCode工程之后 运行工程的时候 编译报错 UnityFramework UnityFramework h file not foun
  • ​CVPR 2023

    论文链接 https arxiv org pdf 2306 02763 pdf 代码链接 https github com ZhenglinZhou STAR 要解决的问题 人脸关键点检测标注中存在语义歧义问题 语义歧义是指不同的标注者对同
  • x86 32位机的特权保护

    优先级划分 指令的权限检查和超出权限访问的异常处理等是构成特权保护的基础 本文将试图讲解为大家解决两大问题 win32汇编中为什么找不到中断指令的应用 比如int 7ch windows错误的 蓝屏 是从哪里来的 保护模式下 中断或异常往往
  • idea2021如何开启RunDashboard

    一般来说如果你的微服务项目中拥有多个子模块 idea会自动识别 不需要进行以下操作 只要你一运行多个子模块就会自动出现 如果没有出现 那就只有手动添加了 1 找到workspace xml项目所在的磁盘路径 idea gt workspac
  • CTF图片隐写题

    1 隐藏在图片属性里的信息或者以文本形式打开能直接获取的信息 例如实验吧里的一道题 这个背影我给满分 就是将信息隐藏在属性里 又或者文本形式能直接看到的 分别是黑客榜中榜游戏和南邮平台的两道题
  • 按键控制数码管0-99显示,十位不跳,用定时器T0中断

    如果直接在主函数中写按键控制数码管0 99显示 不管怎么延时数码管十位上的数都会闪 原因就是单片机的机器周器太快 人的按键速度是ms级的 所以等你人操作完了 单片机早就执行了不知道多少遍 解决方法就是用中断 这里采用定时器T0溢出中断 工作
  • 单目标应用:基于蛇群优化算法(SO)的无人机(UAV)三维路径规划(提供MATLAB代码)

    一 蛇群优化算法SO 蛇群优化算法 Snake Optimizer SO 由Fatma A Hashim和Abdelazim G Hussien于2022年提出 该算法思路新颖 快速高效 模拟了蛇的觅食和繁殖行为 SO具体原理参考如下链接