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

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

🍎个人主页:海神之光

🏆代码获取方式:

海神之光Matlab王者学习之路—代码获取方式

⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇

Matlab图像处理(进阶版)

路径规划(Matlab)

神经网络预测与分类(Matlab)

优化求解(Matlab)

语音处理(Matlab)

信号处理(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’)

步骤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

⛄三、运行结果

⛄四、matlab版本及参考文献

1 matlab版本

2014a

2 参考文献

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

3 备注

简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询

1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面

卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面

图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面

旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面

无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面

传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面

信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面

微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面

交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面

卡尔曼滤波跟踪、航迹关联、航迹融合