【任务分配】共识的捆绑算法CBBA多无人机多任务调度【含Matlab源码 3609期】

这篇具有很好参考价值的文章主要介绍了【任务分配】共识的捆绑算法CBBA多无人机多任务调度【含Matlab源码 3609期】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【任务分配】共识的捆绑算法CBBA多无人机多任务调度【含Matlab源码 3609期】,Matlab路径规划(高阶版),matlab

⛄一、 带时间窗的多UAV航迹规划问题的两阶段启发式算法

本文采用一种两阶段启发式算法用于问题求解, 算法的第一阶段利用“最迟完成服务节点优先” (Latest-Service-Finished-First, 简称LSFF) 算法求得问题的初始解, 第二阶段利用模拟退火算法 (SA算法) 改善初始解, 获得“满意解”。

1 LSFF算法
LSFF算法是一种逆向计算的迭代算法, 其基本思想是:从返回机场开始, 逆向迭代计算从待服务节点飞往后继节点的最迟动身 (完成物资投放) 时间, 并选择最晚可服务节点优先服务, 重复上述过程直至全部节点均被服务为止;这里只接受可行解。

假设当前后续节点为succ, 其最迟抵达时间为maxatsucc, 待服务节点i的最迟动身时间为maxdepti, 则LSFF算法的流程可描述如下:

步骤1:创建空航行线路为当前航迹, 令succ=0, maxatsucc=l0;

步骤2:计算所有的maxdepti=max{maxatsucc-ti, succ, lsucc+stsucc}, 并进行约束条件校验, 从可行节点中选择满足maxdeptk=max{maxdepti}的节点k作为优先服务节点;

步骤3:将节点k插入至航段间<0, succ>, 令succ=k, maxatsucc=maxdeptk-stk, 更新节点k的服务标志;

步骤4:重复步骤2、步骤3, 直至无节点可服务为止。若仍有节点未服务, 创建新路径, 令succ=0, maxatsucc=l0, 转步骤2;否则转步骤5;

步骤5输出初始解sinit。

从上述描述显见, LSFF算法是一种“头插式”算法, 新节点的插入位置必定是航迹的第一条航段之间。由此可将时间窗约束的处理方法修正如下:计算UAV从机场出发抵达新节点i的最早时间minati=e0+t0i, 若maxdepti同时满足式 (14) 、式 (15) , 则时间窗约束满足, 否则不满足。

2 SA算法
利用LSFF算法产生初始解后, 进一步利用SA算法改进初始解, 下面分别对SA算法的邻域结构和算法流程进行描述。

(1) 邻域结构

本文采用两种邻域变换:remove操作和insert操作来构造邻域, 如图1所示。
(2) 算法流程

步骤1:设置起始温度btemp和etemp, 设置温度迭代步长tstep, 令当前温度temp=btemp, 令当前解x=sinit, 当前最优解s=sinit, 初始化内循环次数maxcnt;

步骤2:如果temp>etemp, 重复执行步骤3~步骤5;

步骤3:令内循环次数cnt=1, 重复步骤4, 直至cnt=maxcnt为止;

步骤4:随机选择交换节点node, 利用remove和insert操作, 将其插入任一条可行路径, 产生邻域解x’;令f (·) 表示解·对应的目标函数值, rand_max为随机数的上限, 比较f (x’) 和f (x) , 如果f (x’) <f (x) , 则令x=x’, 如果f (x’) <f (s) , 则令s=x’;如果f (x’) ≥f (x) , 则计算接受概率Pos=exp (- (f (x’) -f (x) ) /temp) , 并产生[0, rand_max]间的随机数rand, 如果满足Pos≥rand/rand_max, 则令x=x’;cnt=cnt+1;

步骤5:令temp=temp*tstep;

步骤6:输出满意解s。

⛄二、部分源代码

% Clear environment
close all; clear all;
addpath(genpath(cd));

% profile on

SEED = 24377;
rand(‘seed’, SEED);

%---------------------------------------------------------------------%
% Initialize global variables
%---------------------------------------------------------------------%

WORLD.CLR = rand(100,3);

WORLD.XMIN = -2.0;
WORLD.XMAX = 2.5;
WORLD.YMIN = -1.5;
WORLD.YMAX = 5.5;
WORLD.ZMIN = 0.0;
WORLD.ZMAX = 2.0;
WORLD.MAX_DISTANCE = sqrt((WORLD.XMAX - WORLD.XMIN)^2 + …
(WORLD.YMAX - WORLD.YMIN)^2 + …
(WORLD.ZMAX - WORLD.ZMIN)^2);

%---------------------------------------------------------------------%
% Define agents and tasks
%---------------------------------------------------------------------%
% Grab agent and task types from CBBA Parameter definitions
CBBA_Params = CBBA_Init(0,0);

% Initialize possible agent fields
agent_default.id = 0; % agent id
agent_default.type = 0; % agent type
agent_default.avail = 0; % agent availability (expected time in sec)
agent_default.clr = []; % for plotting

agent_default.x = 0; % agent position (meters)
agent_default.y = 0; % agent position (meters)
agent_default.z = 0; % agent position (meters)
agent_default.nom_vel = 0; % agent cruise velocity (m/s)
agent_default.fuel = 0; % agent fuel penalty (per meter)

% FOR USER TO DO: Set agent fields for specialized agents, for example:
% agent_default.util = 0;

% Initialize possible task fields
task_default.id = 0; % task id
task_default.type = 0; % task type
task_default.value = 0; % task reward
task_default.start = 0; % task start time (sec)
task_default.end = 0; % task expiry time (sec)
task_default.duration = 0; % task default duration (sec)
task_default.lambda = 0.1; % task exponential discount

task_default.x = 0; % task position (meters)
task_default.y = 0; % task position (meters)
task_default.z = 0; % task position (meters)

% FOR USER TO DO: Set task fields for specialized tasks

%---------------------------%

% Create some default agents

% QUAD
agent_quad = agent_default;
agent_quad.type = CBBA_Params.AGENT_TYPES.QUAD; % agent type
agent_quad.nom_vel = 2; % agent cruise velocity (m/s)
agent_quad.fuel = 1; % agent fuel penalty (per meter)

% CAR
agent_car = agent_default;
agent_car.type = CBBA_Params.AGENT_TYPES.CAR; % agent type
agent_car.nom_vel = 2; % agent cruise velocity (m/s)
agent_car.fuel = 1; % agent fuel penalty (per meter)

% Create some default tasks

% Track
task_track = task_default;
task_track.type = CBBA_Params.TASK_TYPES.TRACK; % task type
task_track.value = 100; % task reward
task_track.start = 0; % task start time (sec)
task_track.end = 100; % task expiry time (sec)
task_track.duration = 5; % task default duration (sec)

% Rescue
task_rescue = task_default;
task_rescue.type = CBBA_Params.TASK_TYPES.RESCUE; % task type
task_rescue.value = 100; % task reward
task_rescue.start = 0; % task start time (sec)
task_rescue.end = 100; % task expiry time (sec)
task_rescue.duration = 15; % task default duration (sec)

%---------------------------------------------------------------------%
% Define sample scenario
%---------------------------------------------------------------------%

N = 5; % # of agents
M = 10; % # of tasks

% Create random agents
for n=1:N

if(n/N <= 1/2)
    agents(n) = agent_quad;
else
    agents(n) = agent_car;
end

% Init remaining agent params
agents(n).id   = n;
agents(n).x    = rand(1)*(WORLD.XMAX - WORLD.XMIN) + WORLD.XMIN;
agents(n).y    = rand(1)*(WORLD.YMAX - WORLD.YMIN) + WORLD.YMIN;
agents(n).clr  = WORLD.CLR(n,:);

end

⛄三、运行结果

【任务分配】共识的捆绑算法CBBA多无人机多任务调度【含Matlab源码 3609期】,Matlab路径规划(高阶版),matlab
【任务分配】共识的捆绑算法CBBA多无人机多任务调度【含Matlab源码 3609期】,Matlab路径规划(高阶版),matlab

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]马华伟,王天晓,胡笑旋.带时间窗的多无人机航迹规划两阶段启发式算法[J].火力与指挥控制. 2014,39(08)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除文章来源地址https://www.toymoban.com/news/detail-778987.html

到了这里,关于【任务分配】共识的捆绑算法CBBA多无人机多任务调度【含Matlab源码 3609期】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【任务分配】基于协同式干扰多无人机任务分配附Matlab代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信       无

    2024年03月22日
    浏览(47)
  • 【任务分配】无人机实时最优任务分配【含Matlab源码 2271期】

    获取代码方式1: 完整代码已上传我的资源:【任务分配】基于matlab无人机实时最优任务分配【含Matlab源码 2271期】 点击上面蓝色字体,直接付费下载,即可。 获取代码方式2: 付费专栏Matlab路径规划(初级版) 备注: 点击上面蓝色字体付费专栏Matlab路径规划(初级版),扫

    2024年01月17日
    浏览(34)
  • 【无人机】基于蚁群算法实现无人机航迹任务规划(含目标和威胁)附Matlab实现

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年02月03日
    浏览(32)
  • 无人机路径规划算法在无人机领域具有重要的应用价值,可以帮助无人机在复杂的环境中高效、安全地完成任务

    无人机路径规划算法在无人机领域具有重要的应用价值,可以帮助无人机在复杂的环境中高效、安全地完成任务。本文将介绍基于 MATLAB 的多种无人机路径规划算法,并提供相应的源代码。 一、无人机路径规划简介 无人机路径规划是指在给定的环境中,通过算法确定无人机的

    2024年02月06日
    浏览(39)
  • 基于蚁群算法实现无人机航迹任务规划(含目标和威胁)附Matlab仿真

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年02月03日
    浏览(33)
  • 【无人机协同任务】基于虚拟引导结合MPC的人工势场算法实现无人机群系统协同攻击附Matlab代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年02月04日
    浏览(44)
  • 无人机(UAV)隐蔽通信(covert communication)的联合功率分配和轨迹设计

    本文是Joint Power Allocation and Trajectory Design for UAV-Enabled Covert Communication一文的阅读笔记 在本文中,我们研究了无人机(UAV)网络中的隐蔽通信,其中无人机将信息传输给多个地面用户(GU),而不会被隐藏探测器检测到。考虑到公平性问题,我们的目标是在无人机移动性和隐蔽

    2024年02月07日
    浏览(32)
  • 【协同任务】基于matlab多无人机协同任务规划【含Matlab源码 2515期】

    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。 🍎个人主页:海神之光 🏆代码获取方式: 海神之光Matlab王者学习之路—代码获取方式 ⛳️座右铭:行百里者,半于九十。 更多Matlab仿真内容点击👇 Matlab图像处理(进阶版) 路径规划

    2024年02月09日
    浏览(34)
  • 使用通用MCU实现无人机飞行任务的快速二次开发

    无名小哥 2024年1月1日 传统飞控二次开发方法和主要存在的问题简介 通过对前面几讲中《零基础竞赛无人机积木式编程指南》系列开发教程的学习可知,在以往TI电赛真题的学习训练方案中飞行任务代码开发主要集中在Substask_Demo.c和Developer_Mode.c两个程序文件, 其中在Substask

    2024年02月02日
    浏览(31)
  • 复亚智能打造全新云平台:让无人机任务管理更智能、更简单

    复亚智能全新升级的MindView云平台,对航线规划、任务管理、自动飞行、数据管理等各个环节开展可视化、数字化、智能化监管,从任务到结果的“看得清”、“管得住”、“查得准”,带来更轻松的操作,改善作业效率、安全保障和用户体验,实现真正意义上的无人机巡检

    2024年02月13日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包