单目标应用:海鸥优化算法(Seagull optimization algorithm,SOA)求解无人机路径规划(提供MATLAB代码)

2023-11-03

一、海鸥优化算法

海鸥优化算法(Seagull optimization algorithm,SOA)由Gaurav Dhiman等人于2019年提出。
海鸥是候鸟。繁殖期主要栖息于北极苔原、森林苔原、荒漠、草地的河流、湖泊、水塘和沼泽中,冬季主要栖息于海岸、河口和港湾。成对或成小群活动或在空中飞翔。在海边和海港,成群的漂浮在水面上,游泳和觅食。海鸥以海滨小鱼、昆虫、软体动物、甲壳类以及耕地里的蠕虫和蛴螬为食。

海鸥优化算法原理

二、无人机(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)设8个柱状障碍物的位置及半径:

 R1=80;  % Radius 80
x1 = 400; 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=100;  % Radius 100
x7 = 750; y7 = 350; z7 = 150; % center

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

(2)起始点位置为:

start_location = [200;100;150];
end_location = [800;800;150];

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

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

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

4.2求解结果

close all
clear
clc
dbstop if all error
global model
model = CreateModel(); % Create search map and parameters
F='F1';
[Xmin,Xmax,dim,fobj] = fun_info(F);
pop=50;
maxgen=50;
[fMin , bestX,Convergence_curve ] = SOA(pop, maxgen,Xmin,Xmax,dim,fobj);
% save bestX bestX
% load('bestX.mat');
BestPosition = SphericalToCart(bestX);
PlotSolution(BestPosition);
figure
plot(Convergence_curve)
xlabel('Iteration');
ylabel('Best Cost');
grid on;

其中一次结果:(黑色正方形是起点,黑色圆圈是终点,共有8个柱状障碍物,红线为优化得到的无人机路线。)

在这里插入图片描述

在这里插入图片描述

四、参考代码

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

单目标应用:海鸥优化算法(Seagull optimization algorithm,SOA)求解无人机路径规划(提供MATLAB代码) 的相关文章

  • matlab中优先级队列的实现方法

    matlab中有没有提供minpriorityqueue功能的库 import java util PriorityQueue import java util public class MyQueue Comparator
  • Matlab下降低图像质量

    问候 我正在尝试找到一种简单的方法来处理图像 以便将其质量从 8 位降低到 3 位 实现这一目标的最简单方法是什么 干杯 如果要线性缩放 只需将每个像素值除以 255 7 即 如果原始图像存储在矩阵 I 中 则让低分辨率图像 J I 255
  • 在Matlab图例中使用Latex?

    我的 matlab 不接受我的 Latex 例如 如果我使用legend b 6 rightarrow b 7 它没有向我显示箭头 我该如何解决这个问题 尝试使用 Latex 解释器 例如 legend b 6 rightarrow b 7
  • 在 MATLAB 中验证输入的最佳实践

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

    我正在编写一个从 C 代码中检索数据的 MATLAB 程序 为此 我在 MATLAB 中创建了一个 MEX 文件和一个网关 mexFunction 虽然可以在 MATLAB 中读取读取值 但我无法检索它来使用它 如果不清楚 我有与这里完全相
  • 在 Matlab/Java 中将手部运动建模为 3D 曲线

    我只需要一些关于我遇到的问题 在哪里查看等的指导 我在我的一个项目中使用了运动跟踪手套 它返回每个手指和手掌的 X Y 和 Z 值 我想做的是首先根据这些坐标创建每个手指运动的表示 然后将它们每个附加到手掌的运动 以获得手的表示 一旦我完成
  • 用于读取csv写入数组的c++程序;然后操作并打印到文本文件中(已经用 matlab 编写)

    我想知道是否有人可以帮助我 我正在尝试构建一个程序 从 csv 文件中读取大小未知的浮点数大数据块 我已经在 MATLAB 中编写了此代码 但想要编译和分发此代码 因此转向 C 我只是在学习并尝试阅读本文以开始 7 5 19892 4 23
  • 使用网络计算机进行 Matlab 并行处理

    我熟悉matlabpool and parfor用法 但我仍然需要加快计算速度 我的 1GB 网络中有一台功能更强大的计算机 两台计算机都有 R2010b 并且具有相同的代码和路径 使用两台计算机进行并行计算的最简单方法是什么 我今天使用的
  • MATLAB 问题中的 Parfor

    为什么我不能使用parfor在这段代码中 parfor i 1 r for j 1 N r xr j N r i 1 x i r j 1 end end 这是错误 错误 parfor 中的变量 xr 无法分类 请参阅 MATLAB 中的并行
  • Matlab:如何读取以逗号作为小数分隔符的数字?

    我有很多 数十万 相当大 gt 0 5MB 的文件 其中数据是数字 但以逗号作为小数分隔符 使用像这样的外部工具对我来说是不切实际的sed s g 当分隔符是点时 我只使用textscan fid f f f 但我看不到更改小数点分隔符的选
  • 使用正常数据直方图与直接公式进行熵估计(matlab)

    假设我们已经绘制了n 10000标准正态分布的样本 现在我想使用直方图计算其熵来计算概率 1 计算概率 例如使用matlab p x hist samples binnumbers area x 2 x 1 sum p p p area b
  • Matlab的uicontrol在Octave中的实现?

    我正在尝试在 Octave 中运行我们实验室中使用的图形程序的 m Matlab 代码 Octave 告诉我代码中使用的函数 uicontrol 没有定义 经过一番搜索 我发现 JHandles 包有一个 uicontrol GUI 功能的
  • 如何使用最小生成树方法将边缘连接到图像中的节点

    我正在做我的手写图像图形匹配项目 我想在图形中表示给定的单词图像 我使用下面的算法 Algorithm input Binary image B Grid width w Grid height h Output Graph g V E w
  • Matlab 错误:()-索引必须出现在索引表达式的最后

    我有这段代码 想要在制表符分隔的 txt 文件中写入一个数组 fid fopen oo txt wt for x 1 length s fprintf fid s t n s x 1 end fclose fid 但我收到此错误 Error
  • 有没有办法在 MATLAB 中查看 pcode 文件 (.p) 的源代码?

    有没有办法在 MATLAB 中打开 pcode 文件 p 如果 开放 是指edit 那么当然不是 pcode 中的 p 代表 受保护 其主要设计目标是在保护其源代码的同时部署功能组件 如果 开放 是指run 那么当然是的 引用手册 http
  • 如何在Matlab中自定义轮廓线?

    我正在准备一个等高线图 我应该在其中突出显示特定级别的等高线 例如 我的轮廓线值位于 1 和 1 之间 我想突出显示与值 0 相对应的线 我尝试使用以下过程来执行此操作 M c contourf longitude latitude del
  • 使用 GPU 进行 Matlab 卷积

    我用gpuArray尝试了matlab的卷积函数conv2 convn 例如 convn gpuArray rand 100 100 10 single gpuArray rand 5 single 并将其与 cpu 版本 convn ra
  • 在 MATLAB 中使用 FFT 的频率响应

    这是场景 使用频谱分析仪 我有输入值和输出值 样本数是32000采样率为2000样本 秒 输入是正弦波50 hz 输入为电流 输出为压力 单位 psi 我如何使用 MATLAB 根据这些数据计算频率响应 使用 MATLAB 中的 FFT 函
  • MATLAB 中的多个捕获组

    我有一个包含数字或字母的字符串a 可能紧随其后的是r or l 在 MATLAB 中 以下正则表达式返回为 gt gt regexp 10r 0 9 a l r match ans 10r 我希望10 and r分开 因为我有两个捕获组 有
  • 使用mat2cell将MxN的矩阵划分为1xN大小的M矩阵

    我有一个大小为 MxN 的矩阵 比方说 1867x3 1867 行和 3 列 我想将其分成 1867 个大小为 1x3 的单元格 我使用了mat2cell X 1 1866 这里X是矩阵 1867x3 结果给出了两个单元格 一个单元格的大小

随机推荐

  • 一文了解各大图数据库查询语言(Gremlin vs Cypher vs nGQL)

    文章的开头我们先来看下什么是图数据库 根据维基百科的定义 图数据库是使用图结构进行语义查询的数据库 它使用节点 边和属性来表示和存储数据 虽然和关系型数据库存储的结构不同 关系型数据库为表结构 图数据库为图结构 但不计各自的性能问题 关系型
  • hibernate 中常用的注解介绍

    定义表名称注解 Entity Table name SYS ROLES schema UAWP Cache usage CacheConcurrencyStrategy NONSTRICT READ WRITE public class R
  • 算法7-6:图的遍历——广度优先搜索(c语言)

    提交 统计 提问 题目描述 广度优先搜索遍历类似于树的按层次遍历的过程 其过程为 假设从图中的某顶点v出发 在访问了v之后依次访问v的各个未曾被访问过的邻接点 然后分别从这些邻接点出发依次访问它们的邻接点 并使 先被访问的顶点的邻接点 先于
  • 【NLP】LSTM总结记录

    目录 前言 RNN 梯度消失和梯度爆炸 梯度裁剪 relu leakyrelu等激活函数 Batch Normalization 批规范化 残差结构 LSTM 长短期记忆网络 LSTM形式 理解LSTM结构 梯度爆炸和消失的解决 pytor
  • MyBatis如何使用 transient 关键字

    MyBatis 是一个持久层框架 用于简化与数据库的交互 在 MyBatis 中 使用 transient 关键字可以标记 Java 对象中的字段 使其在序列化过程中被忽略 在本文中 我们将介绍 MyBatis 的基本用法和如何使用 tra
  • Shell脚本——函数用法

    目录 一 Shell函数的概念 1 Shell函数定义 方法一 方法二 二 函数的返回值 三 函数的传参 四 函数变量的作用范围 五 递归 1 阶乘 脚本命令 操作验证 2 递归目录文件 需求 脚本命令 操作验证 六 函数库 1 建立函数库
  • arxiv网站PDF论文下载速度提升

    arxiv属于国外网站 中国下载网速较慢 推荐使用中科院arxiv的镜像地址 http xxx itp ac cn PDF论文下载速度提升方法 把要访问 arxiv 链接中前面的域名从 https arxiv org 换成 http xxx
  • 花了两天,终于把 Python 的 setup.py 给整明白了

    1 为什么需要对项目分发打包 平常我们习惯了使用 pip 来安装一些第三方模块 这个安装过程之所以简单 是因为模块开发者为我们默默地为我们做了所有繁杂的工作 而这个过程就是 打包 打包 就是将你的源代码进一步封装 并且将所有的项目部署工作都
  • 【华为OD统一考试B卷

    2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为 2023A卷和2023B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是B卷 B卷对应之前专栏的20022部分考题以及新出的
  • 用MATLAB求序列反折

    在这个运算中 x n 以n 0为基准点 以纵轴为对称轴反折得到一个新的序列 即 y n x n 在MATLAB中提供了fliplr函数实现序列反折 fliplr用法是B fliplr A 其中A为矩阵或向量 如果A为矩阵 fliplr函数的
  • 论文笔记: Modeling Extreme Events in Time Series Prediction

    2019 KDD 0 摘要 时间序列预测是数据挖掘中一个深入研究的课题 尽管取得了相当大的改进 但最近基于深度学习的方法忽略了极端事件的存在 这导致将它们应用于实时序列时性能较弱 极端事件是罕见且随机的 但在许多实际应用中确实发挥了关键作用
  • 编写高效的C++程序方法之使用对象池

    对象池技术可以避免在程序的生命期中创建和删除大量对象 如果知道程序需要同一类型的大量对象 而且对象的生命周期都很短 就可以为这些对象创建一个池 pool 进行缓存 只要代码中需要一个对象 就可以向对象池请求 用完此对象时 要把它放回池中 对
  • git客户端通过PUTTY生成公钥和私钥连接GitLab

    参考运维工作笔记 赖荣生 感谢两位的分享 1 使用PUTTY生成公钥和私钥 选择RSA 部分机器上的加密算法不太一样 点击Generate 然后不断的在界面上滑动鼠标 不然生成进度会停止 第一次用的时候傻叉一样等了10分钟也没生成出来 感觉
  • Angular学习笔记 ——input 标签上的【name属性】和【ngModelOptions属性】

    利用 angular forms 创建
  • 使用CSS实现鼠标悬浮标题出现动态下划线

    今天来实现下面图片的效果 要实现这种效果只需要使用到background这个属性了 首先创建有个div 输入一段文字 然后在设置background属性 这时候页面就会出现这样子 文字背景填充满了 无法跟动态图一样那么细 别急 css里还有
  • element 中使用自定义图片icon图标

    修改Element UI自带的icon 替换成自己的图片 定义一个类名 icon使用类名 el icon 类名 background url 你的图片路径 center center no repeat background size 24
  • 【深度学习】 Python 和 NumPy 系列教程(十八):Matplotlib详解:2、3d绘图类型(4)3D曲面图(3D Surface Plot)

    目录 一 前言 二 实验环境 三 Matplotlib详解 1 2d绘图类型 2 3d绘图类型 0 设置中文字体 1 3D线框图 3D Line Plot 2 3D散点图 3D Scatter Plot 3 3D条形图 3D Bar Plo
  • 解决Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend报错

    使用apt 或者apt get install 时 kali linux报错 Waiting for cache lock Could not get lock var lib dpkg lock frontend 出现这种报错一般是上一次
  • 短视频副业做什么比较靠谱,副业赚钱的路子有哪些

    作为上班族 如果搞副业的话 说明是一个不安分的人 今天我们说说他们的搞法吧 首先使用自动剪辑软件王者剪辑批量剪辑原创视频 然后通过多平台快速起号发布视频迅速涨粉引流 有了粉丝流量 他们就可以投放广告 开橱窗卖产品或者直接把号卖给有需要的人
  • 单目标应用:海鸥优化算法(Seagull optimization algorithm,SOA)求解无人机路径规划(提供MATLAB代码)

    一 海鸥优化算法 海鸥优化算法 Seagull optimization algorithm SOA 由Gaurav Dhiman等人于2019年提出 海鸥是候鸟 繁殖期主要栖息于北极苔原 森林苔原 荒漠 草地的河流 湖泊 水塘和沼泽中 冬