当前位置: 首页 > news >正文

基于云漂移优化(Cloud Drift Optimization,CDO)算法的多个无人机协同路径规划(可以自定义无人机数量及起始点),MATLAB代码

一、云漂移优化算法

云漂移优化(Cloud Drift Optimization,CDO)算法是2025年提出的一种受自然现象启发的元启发式算法,它模拟云在大气中漂移的动态行为来解决复杂的优化问题。云在大气中受到各种大气力的影响,其粒子的运动具有一定的随机性和规律性,CDO算法正是基于这种特性,通过模拟云粒子的运动来在优化问题的解空间中进行搜索。
以下是云漂移优化算法(Cloud Drift Optimization, CDO)的详细介绍:

算法操作步骤

  1. 初始化:首先在解空间中随机初始化一群“云粒子”,每个粒子代表一个潜在的解。
  2. 适应度评估:计算每个粒子的适应度值,以评估其作为解的质量。
  3. 更新最优解:根据粒子的适应度值,更新群体的最优解(全局最优)和每个粒子的个体最优解。
  4. 自适应权重调整:CDO算法引入了自适应权重调整机制,根据优化过程的进展动态调整权重参数,以平衡探索(exploration)和开发(exploitation)之间的关系。在优化初期,权重较大,粒子在解空间中具有较大的随机性,有利于全局搜索;随着优化的进行,权重逐渐减小,粒子的运动更加趋向于当前最优解,有利于局部搜索。
  5. 位置更新:根据粒子的速度和方向,结合权重参数,更新粒子的位置,模拟云粒子在大气中的漂移运动。粒子的速度更新通常受到个体最优解和全局最优解的引导,同时加入随机因素以保持一定的探索能力。
  6. 循环迭代:重复步骤2至5,直到满足预设的终止条件,如最大迭代次数或适应度精度要求。
  7. 输出结果:最终输出群体的最优解作为优化问题的近似最优解。

算法优势

  • 探索与开发的平衡:通过自适应权重调整机制,CDO算法能够在优化过程中动态地在全局搜索和局部搜索之间切换,避免了过早收敛到局部最优解,提高了寻找全局最优解的能力。
  • 较强的鲁棒性:算法对初始参数的选择不敏感,具有较好的稳定性和适应性,能够在不同类型的优化问题中取得较好的效果。
  • 高效的收敛速度:利用云粒子的群体智慧和协同搜索,CDO算法能够在相对较短的迭代次数内快速收敛到较优解,节省计算资源和时间。
  • 适用范围广:不仅适用于连续空间的优化问题,还可以通过适当的离散化处理应用于离散优化问题。

参考文献:
[1]Mohammad Alibabaei Shahrak.Cloud Drift Optimization (CDO) Algorithm: A Nature-Inspired Metaheuristic,2025.

二、无人机(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个无人机的总成本之和。

%% 第一个无人机 起始点
start_location = [120;200;100];
end_location = [800;800;150];
ModelUAV(1).model.start=start_location;
ModelUAV(1).model.end=end_location;
%% 第二个无人机 起始点
start_location = [400;100;100];
end_location = [900;600;150];
ModelUAV(2).model.start=start_location;
ModelUAV(2).model.end=end_location;
%% 第三个无人机 起始点
start_location = [200;150;150];
end_location =[850;750;150];
ModelUAV(3).model.start=start_location;
ModelUAV(3).model.end=end_location;
%% 第四个无人机 起始点
start_location = [100;100;150];
end_location = [800;730;150];
ModelUAV(4).model.start=start_location;
ModelUAV(4).model.end=end_location;
%% 第5个无人机 起始点
start_location = [500;100;130];
end_location = [850;650;150];
ModelUAV(5).model.start=start_location;
ModelUAV(5).model.end=end_location;figure
plot(Convergence_curve,'LineWidth',2)
xlabel('Iteration');
ylabel('Best Cost');
grid on;

4个无人机:

在这里插入图片描述

在这里插入图片描述

四、完整MATLAB代码见下方名片

相关文章:

基于云漂移优化(Cloud Drift Optimization,CDO)算法的多个无人机协同路径规划(可以自定义无人机数量及起始点),MATLAB代码

一、云漂移优化算法 云漂移优化(Cloud Drift Optimization,CDO)算法是2025年提出的一种受自然现象启发的元启发式算法,它模拟云在大气中漂移的动态行为来解决复杂的优化问题。云在大气中受到各种大气力的影响,其粒子的…...

【第9章】亿级电商平台订单系统-整体技术架构设计

1-1 本章导学 课程主题:系统蓝图描绘与整体技术架构设计核心学习内容: ▶️ 订单系统的整体技术架构设计 ▶️ 架构设计核心方法论与实践应用本章核心内容架构 1. 技术预研 架构设计的基础支撑环节关键技术可行性分析与选型依据2. 整体技术架构设计方法与步骤 结构化设计方法…...

harmonyOS NEXT开发与前端开发深度对比分析

文章目录 1. 技术体系概览1.1 技术栈对比1.2 生态对比 2. 开发范式比较2.1 鸿蒙开发范式2.2 前端开发范式 3. 框架特性对比3.1 鸿蒙 Next 框架特性3.2 前端框架特性 4. 性能优化对比4.1 鸿蒙性能优化4.2 前端性能优化 5. 开发工具对比5.1 鸿蒙开发工具5.2 前端开发工具 6. 学习…...

详细介绍GetDlgItem()

书籍:《Visual C 2017从入门到精通》的2.3.8 Win32控件编程 环境:visual studio 2022 内容:【例2.31】在模态对话框上可视化创建树形控件 说明:以下内容大部分来自腾讯元宝。 GetDlgItem() 是 Windows API 中用于获取对话框或父…...

MCU的应用场景:从智能家居到工业控制

MCU的应用场景非常广泛,主要包括以下几个方面: 1. 智能家居 智能照明:通过MCU控制LED灯的亮度和颜色。 智能安防:在安防系统中,MCU用于控制传感器和报警器。 2. 工业控制 PLC(可编程逻辑控制器&…...

docker的使用

时间:2025.3.17 一、当我们想要运行一个容器时,不是在containers处,而是需要在images处找对应容器的镜像 操作步骤: 1.找容器镜像 2.找到容器镜像,通过pull下载到当前主机中 3.下载成功后进行运行 4.运行时的容器镜像…...

Redis hyperloglog学习

背景知识 【伯努利试验】: 【伯努利试验】是一个概率论中的概念,指在相同的条件下重复进行n次独立的试验,每次试验只有两种可能的结果,且这两种结果发生的概率是固定的 抛硬币作为伯努利试验:在抛硬币时,我…...

鸿蒙开发:什么是ArkTs?

前言 本文基于Api13。 一句话解读:ArkTs(方舟编程语言)是目前HarmonyOs应用开发的主力语言。 用官方的话解读,它是一种为构建高性能应用而设计的编程语言;看到以Ts结尾,想必大家应该很容易想到TypeScript&a…...

ArcGIS Pro中加载在线地图的详细指南

在现代制图领域,ArcGIS Pro已成为专业人士的重要工具。它不仅功能强大,而且操作简便,为用户提供了丰富的地图数据资源和灵活的地图加载方式。其中,加载在线地图是ArcGIS Pro的一大特色功能,能够帮助用户快速获取全球范…...

《C++ Primer》学习笔记(四)

第四部分:高级主题 1.tuple 是类似pair的模板。每个pair 的成员类型都不相同,但每个 pair 都恰好有两个成员。每个确定的tuple 类型的成员数目是固定的,但一个 tuple 可以有任意数量的成员。tuple支持的操作如下图: 只有两个 tup…...

CVPR2025自动驾驶端到端前沿论文汇总

自动驾驶 文章目录 自动驾驶前言自动驾驶的轨迹预测论文端到端自动驾驶论文 前言 汇总CVPR2025自动驾驶前沿论文 自动驾驶的轨迹预测论文 Leveraging SD Map to Augment HD Map-based Trajectory PredictionModeSeq: Taming Sparse Multimodal Motion Prediction with Seque…...

使用 jQuery 实现子窗口获取父窗口的值,或者父窗口获取子窗口的值时

HTML 父子窗口通信指南 一、基础概念 在Web开发中,父子窗口通信是一个常见的需求。这通常发生在以下场景: 主页面(父窗口)打开新窗口(子窗口)弹出窗口需要与主页面交互多窗口之间需要数据传递 二、jQue…...

AndroidStudio下载安装,环境部署以及常见问题解决教程(亲测)

AndroidStudio下载安装,环境部署以及常见问题解决!!! 文章目录 前言 一、Android Studio 下载与安装 1.1 系统要求 1.2 下载 Android Studio 1.3 安装 Android Studio Windows 系统 1.4 初始配置 二、环境部署 2.1 安装 …...

ruoyi-vue部署2

3.Node.js 3.1.什么是Node.js 在 Node.js 之前,JavaScript 只能运行在浏览器中,作为网页脚本使用,为网页添加一些特效,或者和服务器进行通信。有了 Node.js 以后,JavaScript 就可以脱离浏览器,像其它编程…...

Flutter项目升级Xcode 16.2之后编译问题

最近好久没升级Xcode了,升级了一下最新的16.2之后。发现Flutter项目在iOS设备上运行不起来了。报错: 查了许多网友也遇到了,其中一个解决方案:https://stackoverflow.com/questions/79118572/xcode-16-and-ios-18-project-not-com…...

Mermaid 子图 + 拖拽缩放:让流程图支持无限细节展示

在技术文档、项目管理和可视化分析中,流程图是传递复杂逻辑的核心工具。传统流程图往往静态且难以适应细节展示,而 Mermaid 与 svg-pan-zoom 的结合,则为这一痛点提供了完美解决方案。本文将深入解析如何通过 Mermaid 的子图(subg…...

前沿科技一览未来发展趋势

生物技术能帮环境。比如用它处理污染物。科学家发现一些细菌能吃掉油污。这些细菌能被用来清理漏油事故。比如1989年埃克森瓦尔迪兹号漏油事件中人们就用类似方法减少污染。 还有些植物能吸收土壤里的重金属。种植这种植物能让受污染的土地变干净。这种方法在矿区周围特别有用…...

Linux---sqlite3数据库

一、数据库分类 1. 按数据关系分类 类型特点代表产品关系型数据库- 使用 SQL&#xff08;结构化查询语言&#xff09;<br>- 数据以行列形式存储&#xff0c;支持事务和复杂查询MySQL、Oracle、SQLite非关系型数据库- 无固定表结构&#xff08;如键值对、文档、图&#…...

侯捷 C++ 课程学习笔记:进阶语法之lambda表达式(二)

侯捷 C 课程学习笔记&#xff1a;进阶语法之lambda表达式&#xff08;二&#xff09; 一、捕获范围界定 1. 局部变量与函数参数 ​非静态局部变量&#xff1a;Lambda 所在作用域内定义的局部变量&#xff08;如函数内部的 int x&#xff09;会被完整复制其当前值。捕获后外部变…...

python爬虫Scrapy(6)之增量式

增量式 爬虫应用场景分类 通用爬虫聚焦爬虫功能爬虫分布式爬虫增量式&#xff1a; 用来监测网站数据更新的情况&#xff08;爬取网站最新更新出来的数据&#xff09;。只是一种程序设计的思路&#xff0c;使用什么技术都是可以实现的。核心&#xff1a; 去重。 使用一个记录表来…...

oracle删除表中重复数据

需求&#xff1a; 删除wfd_procs_nodes_rwk表中&#xff0c;huser_id、dnode_id、rwk_name字段值相同的记录&#xff0c;如果有多条&#xff0c;只保留一条。 SQL&#xff1a; DELETE FROM wfd_procs_nodes_rwk t WHERE t.rowid > (SELECT MIN(t1.rowid)FROM wfd_procs_n…...

动作捕捉手套如何让虚拟现实人机交互 “触手可及”?

在虚拟与现实逐渐交融的当下&#xff0c;动作捕捉技术正以前所未有的速度革新着多个领域。 动作捕捉技术&#xff0c;简称“动捕”&#xff0c;已经从早期的影视特效制作&#xff0c;逐步拓展到游戏开发、虚拟现实、机器人控制等多个领域。 而mHandPrO数据手套作为这一领域的…...

【大模型基础_毛玉仁】2.3 基于 Encoder-only 架构的大语言模型

更多内容&#xff1a;XiaoJ的知识星球 目录 2.3 基于Encoder-only 架构的大语言模型2.3.1 Encoder-only 架构2.3.2 BERT 语言模型1&#xff09;BERT 模型结构2&#xff09;BERT 预训练方式3&#xff09;BERT 下游任务 2.3.3 BERT 衍生语言模型1&#xff09;RoBERTa 语言模型2&a…...

C# ManualResetEvent‌的高级用法

一、ManualResetEvent 的核心作用‌ ManualResetEvent 是 C# 中用于 ‌线程同步‌ 的类&#xff08;位于 System.Threading 命名空间&#xff09;&#xff0c;通过信号机制控制线程的等待与执行。其核心功能包括&#xff1a; 阻塞线程‌&#xff1a;调用 WaitOne() 的线程会等…...

Language Models are Few-Shot Learners,GPT-3详细讲解

GPT的训练范式&#xff1a;预训练Fine-Tuning GPT2的训练范式&#xff1a;预训练Prompt predict &#xff08;zero-shot learning&#xff09; GPT3的训练范式&#xff1a;预训练Prompt predict &#xff08;few-shot learning&#xff09; GPT2的性能太差&#xff0c;新意高&…...

js 给元素添加点击事件的方法

在 JavaScript 里&#xff0c;为元素添加点击事件有多种方法&#xff0c;下面为你介绍三种常见的方式。 1. 使用内联事件处理程序 你可以在 HTML 标签里直接使用 onclick 属性添加点击事件。示例如下&#xff1a; <!DOCTYPE html> <html lang"en"><…...

Linux环境使用jmeter做性能测试

一、安装JDK&#xff0c;版本jdk1.8 1、下载压缩包到/jdk目录下解压 cd /jdk tar -zxvf jdk-8u241-linux-64.tar.gz 2、配置环境变量 在profile文件中末尾新增信息如下所示 vim /etc/profile export JAVA_HOME/usr/local/java/jdk/jdk1.8.0_221 export PATH$PATH:$JAVA_HOM…...

联想台式电脑启动项没有U盘

开机按F12&#xff0c;进入启动设备菜单&#xff0c;发现这里没有识别到插在主机的U盘&#xff1f; 解决方法 1、选上图的Enter Setup或者开机按F2&#xff0c;进入BIOS设置 选择Startup -> Primary Boot Sequence 2、选中“Excludeed from boot order”中U盘所在的一行 …...

单片机开发资源分析的实战——以STM32F103C8T6为例子的单片机资源分析

目录 第一点&#xff1a;为什么叫STM32F103C8T6 从资源手册拿到我们的对STM32F103C8T6的资源描述 第二件事情&#xff0c;关心我们的GPIO引脚输出 第三件事情&#xff1a;去找对应外设的说明部分 前言 本文章隶属于项目&#xff1a; Charliechen114514/BetterATK: This is…...

Error response from daemon: Get “https://registry-1.docker.io/v2/“: net/http: request canceled while

英俊潇洒很有才,美丽端庄又大方的人已经点赞收藏&#xff0b;关注了 文章目录 1.ubuntu解决方案2.Windows的解决办法&#xff08;有威劈恩好搞&#xff09;3.其他报错json格式错误下载的镜像有问题 最后 1.ubuntu解决方案 报错如图&#xff1a;timeout Error response from da…...

yolo模型学习笔记——1——物体检测评估指标

1.置信度 表示模型预测的边界框中存在目标物体的概率以及反应预测框和真实框的定位质量 2.阈值 (1)定义 决定一个预测框是否被视为为正类的关键参数&#xff0c;通过调整不同的阈值&#xff0c;获得不同的精度和召回率。yolo模型会为每个预测框生成一个置信度分数&#xff0c…...

Elasticsearch 滚动索引(Rollover Index)详解

文章目录 1、滚动索引的作用2、滚动索引的用法2.1 核心概念2.2 实现步骤 3、适用场景4、与其他技术的结合使用5、案例&#xff1a;日志数据的滚动索引5.1 场景描述5.2 实现步骤 6、示例&#xff1a;结合索引生命周期管理&#xff08;ILM&#xff09;6.1 场景描述6.2 实现步骤 7…...

保持docker内容器一直运行

首先&#xff1a;确保Docker服务配置为开机自启&#xff0c;这样当虚拟机启动时&#xff0c;Docker也会启动&#xff0c;并按照设定的重启策略自动启动相关容器。 sudo systemctl enable docker 创建容器时&#xff1a; 当你使用docker run命令启动容器时&#xff0c;可以添…...

ChatBI 的技术演进与实践挑战:衡石科技如何通过 DeepSeek 实现商业落地

随着人工智能技术的快速发展&#xff0c;ChatBI&#xff08;基于自然语言交互的商业智能&#xff09;逐渐成为企业数据分析领域的热门话题。作为 BI&#xff08;商业智能&#xff09;领域的新形态&#xff0c;ChatBI 通过自然语言处理&#xff08;NLP&#xff09;技术&#xff…...

python-leetcode 55.子集

题目&#xff1a; 给定一个数组nums,数组中的元素互不相同&#xff0c;返回该数组所有可能子集&#xff08;幂集&#xff09; 解集不能包含重复的子集&#xff0c;可以按任意顺序返回解集 方法一&#xff1a;迭代法实现子集枚举 记原序列中元素的总数为 n&#xff0c;原序列…...

在LORA训练中,LORA模型的矩阵的行列是多少

在LORA训练中,LORA模型的矩阵的行列是多少: W n e w = W + α r B A W_{new}=W + \frac{\alpha}{r}BA...

冒泡排序:古老算法中的智慧启示

在计算机科学浩瀚的星空中&#xff0c;排序算法犹如璀璨的星辰&#xff0c;而冒泡排序恰似其中最朴实无华的一颗。这个诞生于计算机发展初期的经典算法&#xff0c;以其简单直观的逻辑原理&#xff0c;成为每个程序员启蒙阶段必经的试炼场。当我们凝视这个看似笨拙的排序方法时…...

基于ssm的电子病历系统(全套)

一、系统架构 前端&#xff1a;jsp | bootstrap | jquery 后端&#xff1a;spring | springmvc | mybatis 环境&#xff1a;jdk1.8 | mysql | maven | tomcat | idea 二、代码及数据库 三、功能介绍 01. 登录 02. 主页 03. 管理员-个人中心-修改密码…...

V2X验证

1. 标准和规范验证 欧洲对 DSRC 和 V2X 系统有一系列的标准和规范,主要由 ETSI (European Telecommunications Standards Institute) 和 IEEE 等组织制定。验证通常包括以下标准和规范: ETSI EN 302 571:这是DSRC在欧洲的主要标准,规定了DSRC系统的技术要求和操作条件。ET…...

SpringBoot美发门店管理系统开发与设计

在幽络源&#xff0c;我们致力于为开发者提供优质的技术资源和项目源码。今天&#xff0c;我们为大家分享一款基于SpringBoot开发的美发门店管理系统。该系统功能全面&#xff0c;操作便捷&#xff0c;适合中小型美发门店的管理需求。以下是系统的详细介绍。 系统功能模块 1.…...

Linux内核实时机制28 - RT调度器11 - RT 组调度

Linux内核实时机制28 - RT调度器11 - RT 组调度 相关数据结构 内核中通过static int sched_rt_runtime_exceeded(struct rt_rq *rt_rq)函数来判断实时任务运行时间是否超出带宽限制,判断这个运行队列rt_rq的运行时间是否超过了额定的运行时间。而“运行时间”和“额定时间”都…...

R语言——变量

参考资料&#xff1a;学习R 1、类 R中所有变量都有一个类&#xff0c;表明此变量属于什么类型。例如&#xff0c;大部分的数字是numeric类&#xff0c;逻辑值是logical类。其实&#xff0c;因为R没有标量类型&#xff08;scalar type&#xff09;&#xff0c;所以更严格地我说…...

Appium使用文档

Appium旨在支持许多不同平台&#xff08;移动端、网页端、桌面端等&#xff09;的UI自动化。不仅如此&#xff0c;它还旨在支持用不同语言&#xff08;JS、Java、Python等&#xff09;编写的自动化代码。 Appium移动端自动化要求如下&#xff1a; 安装Appium安装UiAutomator2…...

Houdini :《哪吒2》神话与科技碰撞的创新之旅

《哪吒2》&#xff08;即《哪吒之魔童闹海》&#xff09;截止至今日&#xff0c;荣登全球票房榜第五。根据猫眼专业版数据&#xff0c;截至2025年3月15日&#xff0c;《哪吒2》全球累计票房&#xff08;含预售及海外&#xff09;超过150.19亿元&#xff0c;超越《星球大战&…...

单台openEuler24.03 LTS下的开源大数据环境搭建

目录 概述 准备 虚拟机基本设置 关闭及禁用防火墙 修改主机名 静态ip 映射主机名 创建普通用户 SSH免密登录 目录准备 安装Java 下载Java 解压 设置环境变量 安装Hadoop 下载hadoop 解压 设置环境变量 查看版本 配置hadoop 配置hadoop_env.sh 配置core-s…...

HarmonyOS开发,深拷贝、浅拷贝的封装和调用

在 HarmonyOS 开发中&#xff0c;实现深拷贝和浅拷贝可以通过封装工具类来完成。下面分别介绍浅拷贝和深拷贝的实现方式&#xff0c;并将它们封装成一个工具类。 浅拷贝和深拷贝的区别 浅拷贝&#xff1a;创建一个新对象&#xff0c;新对象的属性引用原始对象的属性。也就是说…...

C 环境设置指南

C 环境设置指南 引言 C语言作为一种历史悠久且功能强大的编程语言,在软件开发和系统编程领域占有举足轻重的地位。C语言环境设置是进行C语言编程的第一步,也是确保编程顺利进行的关键。本文将详细介绍C语言环境的设置过程,包括系统要求、开发工具的选择、环境变量的配置等…...

2018年全国职业院校技能大赛高职组-计算机网络应用竞赛竞赛样题E卷

目录 总体规划 模块二:设备基础信息配置 模块三:网络搭建与网络冗余备份方案部署 模块四:移动互联网搭建与网优 模块五:出口安全防护与远程接入 总体规划 医院在进行网络部分信息化建设方案设计过程中,需要保证医院、血液中心通过社保网进行互连互通,同时满足献血中心与医…...

大华HTTP协议在智联视频超融合平台中的接入方法

一. 大华HTTP协议介绍 大华HTTP协议是大华股份&#xff08;Dahua Technology&#xff09;为其安防监控设备开发的一套基于HTTP/HTTPS的通信协议&#xff0c;主要用于设备与客户端&#xff08;如PC、手机、服务器&#xff09;之间的数据交互。该协议支持设备管理、视频流获取、…...

Dify Docker 私有化部署遇到的问题

Dify 版本为1.01&#xff0c;本地使用 docker desktop&#xff0c;版本为4.38.0 (181591)&#xff0c;以下是Dify部署及使用过程中遇到的问题&#xff0c;后续持续更新... db无法启动&#xff0c;一直提示&#xff1a;Permissions should be urwx (0700) or urwx,grx (0750).具…...