基于极光优化算法(Polar Lights Optimization, PLO)的多无人机协同三维路径规划(提供MATLAB代码)
一、极光优化算法介绍
极光优化算法(Polar Lights Optimization, PLO)是2024年提出的一种新型的元启发式优化算法,它从极光这一自然现象中汲取灵感。极光是由太阳风中的带电粒子在地球磁场的作用下,与地球大气层中的气体分子碰撞而产生的光显示。PLO算法通过模拟这些带电粒子的运动轨迹和动力学过程,提出了一种有效的优化策略,旨在解决复杂的优化问题。

1.PLO算法的核心思想
PLO算法的核心思想是模拟带电粒子在地球磁场中的运动,包括它们的旋转运动(gyration motion)、在极光椭圆区域内的行走(aurora oval walk),以及粒子间的碰撞(particle collision)。这些运动策略不仅模拟了自然界中粒子的行为,而且被设计用来平衡算法的全局探索能力和局部开发能力。

2.PLO算法的主要组成部分
-
旋转运动(Gyration Motion):
- 模拟带电粒子在地球磁场作用下沿磁力线的旋转运动。这种运动有助于算法在局部区域内进行细致的搜索,提高解的精度。

- 模拟带电粒子在地球磁场作用下沿磁力线的旋转运动。这种运动有助于算法在局部区域内进行细致的搜索,提高解的精度。
-
极光椭圆行走(Aurora Oval Walk):
- 模拟带电粒子在极光椭圆区域内的自由移动,这种策略有助于算法进行全局探索,寻找更广泛的解空间。

- 模拟带电粒子在极光椭圆区域内的自由移动,这种策略有助于算法进行全局探索,寻找更广泛的解空间。
-
粒子碰撞策略(Particle Collision Strategy):
- 模拟带电粒子间的相互碰撞,这种策略有助于算法跳出局部最优解,增强解的多样性。

- 模拟带电粒子间的相互碰撞,这种策略有助于算法跳出局部最优解,增强解的多样性。
3.PLO算法的实现步骤


-
初始化:
- 生成一个初始粒子群,每个粒子代表一个潜在的解。
-
适应度评估:
- 对每个粒子计算其适应度值,即评估它们在优化问题中的表现。
-
更新最优解:
- 根据适应度值,确定当前找到的最优解。
-
迭代过程:
- 重复以下步骤直到满足停止条件(如达到最大迭代次数或达到预定的适应度阈值):
a. 更新粒子速度和位置:根据旋转运动和极光椭圆行走策略更新粒子的速度和位置。
b. 粒子碰撞:以一定的概率执行粒子碰撞策略,进一步更新粒子的位置。
c. 适应度评估:对更新后的粒子群再次进行适应度评估。
d. 更新最优解:如果找到更好的解,则更新全局最优解。
- 重复以下步骤直到满足停止条件(如达到最大迭代次数或达到预定的适应度阈值):
-
输出最优解:
- 迭代结束后,输出找到的最优解或最优解集合。
参考文献:
[1]Yuan, Chong, Dong Zhao, Ali Asghar Heidari, Lei Liu, Yi Chen and Huiling Chen. “Polar lights optimizer: Algorithm and applications in image segmentation and feature selection.” Neurocomputing 607 (2024): 128427.
二、无人机(UAV)三维路径规划
单个无人机三维路径规划数学模型参考如下文献:
Phung M D , Ha Q P . Safety-enhanced UAV Path Planning with Spherical Vector-based Particle Swarm Optimization[J]. arXiv e-prints, 2021.
每个无人机的目标函数由路径长度成本,安全性与可行性成本、飞行高度成本和路径平滑成本共同组成:
2.1路径长度成本
路径长度成本由相邻两个节点之间的欧氏距离和构成,其计算公式如下:

2.2路径安全性与可行性成本

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

2.3路径飞行高度成本

飞行高度成本通过如下公式计算所得:


2.4路径平滑成本

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

转弯角度的计算公式为:

爬坡角度的计算公式为:

平滑成本的计算公式为:

2.5总成本(目标函数)

总成本由最优路径成本,安全性与可行性成本、飞行高度成本和路径平滑成本的线性加权所得。其中,b为加权系数。
三、实验结果
在三维无人机路径规划中,无人机的路径由起点,终点以及起始点间的点共同连接而成。因此,自变量为无人机起始点间的各点坐标,每个无人机的目标函数为总成本(公式9)。本文研究3个无人机协同路径规划,总的目标函数为3个无人机的总成本之和。
Xmin=[Xmin0,Xmin1,Xmin2];
Xmax=[Xmax0,Xmax1,Xmax2];
dim=dim0+dim1+dim2;
fobj=@(x)GetFun(x,fobj0,fobj1,fobj2);%总的目标函数
pop=50;
maxgen=1500;[fMin ,bestX,Convergence_curve]=eco(pop,maxgen,Xmin,Xmax,dim,fobj);%Trajectories,fitness_history, population_history
% save bestX bestX
BestPosition1 = SphericalToCart(bestX(1:dim/3),model);% 第一个无人机得到的路径坐标位置
BestPosition2 = SphericalToCart(bestX(1+dim/3:2*dim/3),model1);% 第二个无人机得到的路径坐标位置
BestPosition3 = SphericalToCart(bestX(1+2*dim/3:end),model2);% 第三个无人机得到的路径坐标位置gca1=figure(1);
gca2=figure(2);
gca3=figure(3);
PlotSolution(BestPosition1,model,gca1,gca2,gca3);% 画第一个无人机
PlotSolution1(BestPosition2,model1,gca1,gca2,gca3);% 画第二个无人机
PlotSolution2(BestPosition3,model2,gca1,gca2,gca3);% 画第三个无人机figure
plot(Convergence_curve,'LineWidth',2)
xlabel('Iteration');
ylabel('Best Cost');
grid on;


相关文章:
基于极光优化算法(Polar Lights Optimization, PLO)的多无人机协同三维路径规划(提供MATLAB代码)
一、极光优化算法介绍 极光优化算法(Polar Lights Optimization, PLO)是2024年提出的一种新型的元启发式优化算法,它从极光这一自然现象中汲取灵感。极光是由太阳风中的带电粒子在地球磁场的作用下,与地球大气层中的气体分子碰撞…...
TypeScript类型体操5
类型编程主要的目的就是对类型做各种转换,如何对类型做修改? TypeScript 类型系统支持 3 种可以声明任意类型的变量: type、infer、类型参数。 type:类型别名,声明一个变量存储某个类型。type t Promise<number&g…...
搭建广告展示页Start
想自定义广告- 场景: app冷启动/热启动-有广告需求,就打开广告页,没有的话就去登录或者主页 有的app有的需要广告页,有的不需要,搞个配置呗!!! 通过首选项配置存储我们的一些常用…...
无极低码基础版(部署版)课程计划
基础版(部署版)使用指南 特点 简单:1分钟学会无需编码:会SQL即可适合人群:纯小白0代码写服务1. 本地环境安装 JDKMySQLRedisTomcat2. 环境变量配置 JDK无极低码授权3. 配置文件修改 4. 服务启动 5. 服务发布示例 服务手动注册SQL语句注册6. 新增接口示例 正常新增非空参…...
Word文档功能快捷键大全
以下是 Microsoft Word 的全面快捷键大全,涵盖了文档操作、文本编辑、格式化、导航等多种功能,帮助你提高工作效率。 Word 全面快捷键和快捷方式表 功能类别快捷键/快捷方式功能描述基本文档操作Ctrl N新建文档Ctrl O打开文档Ctrl S保存文档F12另存…...
题目:1297. 子串的最大出现次数
> Problem: 1297. 子串的最大出现次数 题目:1297. 子串的最大出现次数 题目描述 给定一个字符串 s,要求找到满足以下条件的任意子串的出现次数,并返回该子串的最大出现次数: 子串中不同字母的数目必须小于等于 maxLetters。…...
一力破万法,高并发系统优化通解思路
高并发系统优化:从理论到Java实践 针对高并发场景,以下策略能够有效提升系统的稳定性和响应速度: 加集群 结果:通过增加服务器数量,实现负载均衡,提高系统整体处理能力。过程: 配置负载均衡器&…...
P8635 [蓝桥杯 2016 省 AB] 四平方和
对于一个给定的正整数,可能存在多种平方和的表示法。 要求你对 44个数排序使得 0≤a≤b≤c≤d。 输入 #1复制 5 输出 #1 0 0 1 2 输入 #2 12 输出 #2 0 2 2 2 输入 #3 773535 输出 #3 1 1 267 838 代码 #include<bits/stdc.h> using namespace …...
ElasticSearch是什么?
1.概述 Elasticsearch 是一个基于 Apache Lucene 构建的开源分布式搜索引擎和分析引擎。它专为云计算环境设计,提供了一个分布式的、高可用的实时分析和搜索平台。Elasticsearch 可以处理大量数据,并且具备横向扩展能力,能够通过增加更多的硬…...
2024年四非边缘鼠鼠计算机保研回忆(记录版 碎碎念)
Hi,大家好,我是半亩花海。写下这篇博客时已然是金秋十月,心中的石头终于落地,恍惚间百感交集。对于保研这条路,我处于摸着石头过河、冲击、随缘的这些状态。计算机保研向来比其他专业难,今年形势更是艰难。…...
clickhouse常用脚本语句
1.创建库和删除库 drop database IF EXISTS rt_db CREATE DATABASE rt_db ENGINE = Ordinary; CREATE DATABASE rt_db ENGINE = Atomic;2.创建表 CREATE TABLE IF NOT EXISTS intellect_alarm_info ( `id` UInt64 , `client_info_id...
GeneMark软件的秘钥gm_key失效怎么办?
GeneMark软件的gm_key失效怎么办 1. 下载网址(为软件的下载界面):http://topaz.gatech.edu/GeneMark/license_download.cgi 2.下载界面 根据自己的需求下载对应的版本和类型的gm_key秘钥 3.填写注册信息 4. 点击下载软件和密钥 5. 将秘钥…...
线性回归逻辑回归-笔记
一、线性回归(Linear Regression) 1. 定义 线性回归是一种用于回归问题的算法,旨在找到输入特征与输出值之间的线性关系。它试图通过拟合一条直线来最小化预测值与真实值之间的误差。 2. 模型表示 线性回归模型假设目标变量(输…...
如何将数据从 AWS S3 导入到 Elastic Cloud - 第 1 部分:Elastic Serverless Forwarder
作者:来自 Elastic Hemendra Singh Lodhi 这是多部分博客系列的第一部分,探讨了将数据从 AWS S3 导入 Elastic Cloud 的不同选项。 Elasticsearch 提供了多种从 AWS S3 存储桶导入数据的选项,允许客户根据其特定需求和架构策略选择最合适的方…...
Linux基础-正则表达式
正则表达式概述 正则表达式是处理字符串的一种工具,可以用于查找、删除、替换特定的字符串,主要用于文件内容的处理。与之不同的是,通配符则用于文件名称的匹配。正则表达式通过使用特殊符号,帮助用户轻松实现对文本的操作。 一…...
【HTML格式PPT离线到本地浏览】
文章目录 概要实现细节小结 概要 最近在上课时总是出现网络不稳定导致的PPT无法浏览的情况出现,就想到下载到电脑上。但是PPT是一个HTML的网页,无法通过保存网页(右键另存为mhtml只能保存当前页)的形式全部下载下来,试…...
如何在Vue项目中封装axios
文章目录 一、axios简介基本使用 二、封装axios的原因三、封装axios的方法1. 设置接口请求前缀2. 设置请求头和超时时间3. 封装请求方法4. 添加请求拦截器5. 添加响应拦截器小结 一、axios简介 axios 是一个基于 XMLHttpRequest 的轻量级HTTP客户端,适用于浏览器和…...
linux 配置ssh免密登录
一、 cd /root/.ssh/ #不存在就创建mkdir /root/.ssh ssh-keygen #连续按4个回车 ll二、将公钥发送到目标服务器下 #公钥上传到目标服务器 ssh-copy-id root192.168.31.142 #回车完也是要输入密码的 #测试一下免密登录: ssh root192.168.31.142 成功...
【AI绘画】Midjourney进阶:三分线构图详解
博客主页: [小ᶻZ࿆] 本文专栏: AI绘画 | Midjourney 文章目录 💯前言💯什么是构图为什么Midjourney要使用构图 💯三分线构图特点使用场景提示词书写技巧测试 💯小结 💯前言 【AI绘画】Midjourney进阶&a…...
享元模式(C++)
定义:享元模式是一种结构型设计模式,它使用共享对象,用以尽可能减少内存使用和提高性能。享元模式通过共享已经存在的对象实例,而不是每次需要时都创建新对象实例,从而避免大量重复对象的开销。 对比: 与单…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
