【无人机分配】基于共识的捆绑算法CBBA实现带时间窗多无人机多任务调度附matlab代码

简介: 【无人机分配】基于共识的捆绑算法CBBA实现带时间窗多无人机多任务调度附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机 电力系统

⛄ 内容介绍

相较于一架多功能昂贵的大型无人机,多架异构低成本无人机集群在作战可靠性和复杂环境适应性方面,具有潜在优势。无人机集群任务分配是通过优化为集群中的无人机选择合理的任务,使集群执行任务的收益最大或执行代价最小,高效实时的任务分配是保障集群作战效能最大的重要手段之一。近年来,分布式的协同任务分配技术(无中心网络节点)得到学术界和工业界的广泛关注。但是,针对相关研究大多停留在算法收敛性的理论分析和纯数字仿真验证阶段,算法设计较少考虑实际计算芯片的资源约束;性能验证方面,缺乏计算芯片在环的半实物平台的支撑。针对这两方面不足,本论文进行了如下的研究。首先,针对无人机-单任务条件下的分配问题,研究了分配算法的目标模型和约束模型,以及基于分布式拍卖算法的求解方法,对算法收敛性做了分析,并进行了仿真验证与分析;针对需要多个无人机一起执行同一个任务的场景,修正了问题模型,研究了基于合同网协议的求解方法,该方法的核心思想是在无人机集群内局部执行"招标-竞标-中标"的流程,对合同网协议进行了仿真分析。针对无人机-多任务分配的场景,研究了基于CBBA算法的求解流程,并进行了仿真分析。采用无人机动态存储任务序列的策略;并在无人机间互通信息,以调整当前任务序列,进而避免任务冲突。

⛄ 部分代码

%计算投标值

function [CBBA_Data,bestIdxs,taskTimes,feasibility] = CBBA_ComputeBids(CBBA_Params,CBBA_Data,agent,tasks,feasibility)

%判断路径是否已满,如果满了就不用添加任务

L = find(CBBA_Data.path == -1);

if(isempty(L))

   return;

end

%初始化任务的投标,最佳ID,时间

CBBA_Data.bids = zeros(1,CBBA_Params.M);

bestIdxs       = zeros(1,CBBA_Params.M);

taskTimes      = zeros(1,CBBA_Params.M);


for m = 1:CBBA_Params.M

   %检查代理和任务类型是否对应

   if(CBBA_Params.CM(agent.type,tasks(m).type) > 0 )

       %检测路径中是否包含当前的任务m

       if(isempty(find(CBBA_Data.path(1,1:L(1,1)-1) == m, 1)))

           bestBid = 0;

           bestIndex = 0;

           bestTime = -1;

           %在其他任务位置j插入任务m,判断能否生成更好的路径

           for j = 1:L(1,1)

               %判断是否有新的可行的路径

               if(feasibility(m,j) == 1)

                   skip = 0;

%                     if(CBBA_Params.CM(agent.type,tasks(m).type) == 1)

%                         if(CBBA_Data.path(1,j-1) >= 7 && CBBA_Data.path(1,j-1) <= 13)

%                             CBBA_Data.path(1,j) = [];

%                             CBBA_Data.times(1,j) = [];

%                             taskNext = [];

%                             timeNext = [];

%                         else

%                             taskNext = tasks(CBBA_Data.path(j));

%                             timeNext = CBBA_Data.times(j);

%                         end

%                     elseif(CBBA_Params.CM(agent.type,tasks(m).type) == 2)

%                         if(CBBA_Data.path(1,j-1) >= 7 && CBBA_Data.path(1,j-1) <= 13)

%                             taskPrev = tasks(CBBA_Data.path(j-1));

%                             timePrev = CBBA_Data.times(j-1);

%                         end

%                     end

                   %是否把m插到开头

                   if(j == 1)

                       taskPrev = [];

                       timePrev = [];

                   else

                       taskPrev = tasks(CBBA_Data.path(j-1));

                       timePrev = CBBA_Data.times(j-1);

                   end

                   %是否把m插入到最后

                   if(j == L(1,1))

                       taskNext = [];

                       timeNext = [];

                   else

                       taskNext = tasks(CBBA_Data.path(j));

                       timeNext = CBBA_Data.times(j);

                   end

                   %调用Scoring_CalcScore功能包

                   [score, minStart ,maxStart] = Scoring_CalcScore(CBBA_Params,agent,tasks(m),taskPrev,timePrev,taskNext,timeNext);

                   if(minStart > maxStart)

                       skip = 1;

                       feasibility(m,j) = 0;

                   end

                   %保存最佳数值和任务的位置

                   if(~skip)

                       if(score > bestBid)

                           bestBid   = score;

                           bestIndex = j;

                           bestTime  = minStart;

                       end

                   end

               end

           end

           %保存最佳的出价信息

           if(bestBid > 0)

               CBBA_Data.bids(1,m) = bestBid;

               bestIdxs(1,m)       = bestIndex;

               taskTimes(1,m)      = bestTime;

           end

       end

   

   end

end

⛄ 运行结果

⛄ 参考文献

[1]林晨. 面向无人机集群任务分配的分布式算法研究[D]. 电子科技大学, 2019.

[2]陈华毅. 基于智能优化算法的多无人机协同航迹规划研究[D]. 中国矿业大学(江苏).

⛄ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
21天前
|
机器学习/深度学习 算法 PyTorch
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
164 1
|
12天前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
22天前
|
传感器 算法 计算机视觉
基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
该内容是关于一个基于肤色模型和中值滤波的手部检测算法的描述,包括算法的运行效果图和所使用的软件版本(matlab2022a, vivado2019.2)。算法分为肤色分割和中值滤波两步,其中肤色模型在YCbCr色彩空间定义,中值滤波用于去除噪声。提供了一段核心程序代码,用于处理图像数据并在FPGA上实现。最终,检测结果输出到&quot;hand.txt&quot;文件。
|
2天前
|
机器学习/深度学习 算法
【MATLAB】GA_ELM神经网络时序预测算法
【MATLAB】GA_ELM神经网络时序预测算法
273 9
|
22天前
|
算法
m基于log-MPA检测算法的SCMA通信链路matlab误码率仿真
MATLAB 2022a仿真实现了稀疏码多址接入(SCMA)算法,该算法利用码本稀疏性实现多用户高效接入。每个用户从码本中选取码字发送,接收端采用Log-MPA算法进行多用户检测。由于MAP检测计算复杂度高,故采用Log-MPA降低复杂性。仿真展示了不同迭代次数(1, 5, 10, 30)对误码率(BER)的影响,通过比较各次迭代的BER曲线,研究算法性能与迭代次数的关系。
16 0
|
22天前
|
存储 机器学习/深度学习 算法
C语言代码实现数据结构与算法
以上代码中,哈希表使用链表解决哈希冲突,每个链表节点包含一个键值对。hash函数用于计算键值对应的哈希值,insert函数用于向哈希表中插入一个键值对,若当前位置为空,则直接插入;否则,将新节点插入到链表末尾。search函数用于在哈希表中查找指定键值的值,若存在则返回其值,否则返回-1。
32 1
|
24天前
|
算法 搜索推荐
基于遗传优化的协同过滤推荐算法matlab仿真
该内容是关于推荐系统和算法的描述。使用Matlab2022a执行的算法生成了推荐商品ID列表,显示了协同过滤在个性化推荐中的应用。用户兴趣模型通过获取用户信息并建立数学模型来提高推荐性能。程序片段展示了遗传算法(GA)的迭代过程,确定支持度阈值,并基于关联规则生成推荐商品ID。最终结果是推荐的商品ID列表,显示了算法的收敛和支持值。
|
24天前
|
机器学习/深度学习 算法
m基于深度学习的64QAM调制解调系统相位检测和补偿算法matlab仿真
MATLAB 2022a仿真实现了基于深度学习的64QAM相位检测和补偿算法,有效应对通信中相位失真问题。通过DNN进行相位检测和补偿,降低解调错误。核心程序生成随机信号,模拟AWGN信道,比较了有无相位补偿的误码率,结果显示补偿能显著提升性能。
25 8
|
26天前
|
机器学习/深度学习 算法 生物认证
基于深度学习的人员指纹身份识别算法matlab仿真
这是一个关于使用深度学习进行指纹识别的算法概述。在matlab2022a环境下,通过预处理指纹图像(灰度化、二值化等)并利用卷积神经网络(CNN)提取特征。CNN架构包含卷积、池化、归一化和全连接层。特征向量通过余弦相似度计算匹配,训练时采用triplet loss优化。部分核心代码展示了加载预训练模型进行测试集分类预测并计算准确率的过程。
|
1月前
|
机器学习/深度学习 算法 生物认证
基于深度学习的人员指纹身份识别算法matlab仿真
基于深度学习的人员指纹身份识别算法matlab仿真