【多智能体在城市环境中的追踪】城市环境中多智能体对流氓智能体的追踪研究(Matlab代码实现)

    💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

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

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

📚2 运行结果

🎉3 参考文献 

🌈4 Matlab代码、数据、文章下载


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

引言

设想一个城市环境,许多智能体沿着类似网格的道路网络从某个起点移动到某个终点。这些车辆受到交通法规的约束,即它们的速度受到限速的限制,并且只能通过交叉路口。此外,每个交叉路口都有一个静态的传感器网络,记录车辆经过的时间以及当时的速度。我们面临的问题是,如何用一组无人机车辆追踪一个在城市中移动的流氓智能体(可以将其视为警察)。这些无人机可以与静态网络通信,并被视为网络中的移动节点。我们假设静态节点也能够区分流氓智能体和其他车辆,并将这些信息传递给追踪智能体。此外,追踪智能体还受到安全性的约束,即它们会与其他车辆保持一定的安全距离,并且不会不安全地闯红灯,而流氓智能体则不受这些约束。

为了解决这一问题,我们让静态网络收集有关流氓智能体当前位置和移动方向的数据,以及不同路段当前的拥堵水平,并将这些信息提供给追踪智能体。无线传感器网络需要实现协议和算法,以有效利用有限的资源并应对运行环境带来的挑战。在我们的案例中,网络由许多静态节点和少量移动节点组成。主要限制是静态节点有限的电池电量。在无线传感器网络中,通信消耗的能量最多,因此在数据处理和原始数据传输之间取得正确的平衡至关重要。我们假设传感器节点在转发或传播数据之前具备一定的信号处理能力。网络的拓扑结构使得在某一特定时刻,只有少数静态传感器会处于移动传感器的附近。这进一步支持了将部分控制权交给移动节点,以从静态节点获取信息的合理性。节点的移动性程度是另一个决定追踪算法效率的因素。我们通过在MATLAB中模拟系统并改变模拟的不同参数(如智能体的起始位置、追踪者的数量、车辆密度、传感器的通信速度和范围等)来测试我们的算法。

2 理论
追逐开始时,所有追踪车辆都已知晓被追踪者(蝙蝠侠)的位置。如果追踪车辆自身没有相关信息,它会在有限时间间隔后向传感器节点发送请求,询问蝙蝠侠的当前位置(蝙蝠侠正前往的路口)。如果传感器的信息是更新的,它会返回数据;否则,它会将请求转发给其相邻节点,依此类推,直到获取关于被追踪者的最新信息。追踪车辆利用这些更新的信息选择前往蝙蝠侠方向的最不拥堵的路径。

3 道路网络
道路网络由一组相互连接的道路组成,覆盖整个城市。道路在每个街区的末端交汇于交叉路口。道路网络已通过参数化形式配置了街区长度、前向车道数、后向车道数、车道宽度、路肩宽度、交叉路口半径和车辆长度。这使得城市道路的模拟尽可能接近真实情况。

4 静态传感器网络
传感器位于每个交叉路口的中心。每个传感器(边缘的传感器除外)都有四个相邻节点,分别位于其左侧、右侧、上方和下方。所谓“相邻节点”,是指传感器可以直接通信的其他传感器。传感器能够看到从交叉路口驶向任何方向的车辆,并存储这些信息。它们可以区分被追踪车辆和追踪车辆。传感器能够看到被追踪者行驶的方向,并直接返回其正前往的交叉路口信息。在实际应用中,这基本上是交叉路口的坐标;然而,为了简化,我们考虑相邻节点的索引。
当追踪车辆向某个传感器请求被追踪者的当前位置时,传感器会查看其关于被追踪者最后位置的信息,并核对时间戳以验证信息的有效性。如果信息有效,它会直接将数据返回给追踪车辆。也可能出现多个追踪车辆向同一个传感器请求数据的情况。我们通过赋予传感器维护一个需要返回信息的追踪车辆列表的权限来处理这种情况,从而避免多次转发请求。
如果被请求的传感器节点没有关于蝙蝠侠的有效信息,它会用追踪车辆的信息更新自己的信息,并根据蝙蝠侠最后前往的交叉路口的位置,将请求转发给其相邻节点中的一个。这一过程会持续进行,直到某个节点找到被追踪者位置的更新信息,并将其返回到最初发起转发请求的传感器,且转发路径最短。我们的问题设置是,请求信息的追踪车辆在信息返回时最多只能移动到相邻节点之一,这是一个合理的假设,因为平均而言,网络通信的速度比车辆移动的速度更快。为了考虑这一点,源传感器收到的信息也会转发给其相邻节点。
一个有趣的情况是,当发起请求的源节点正是蝙蝠侠正前往的节点时,传感器节点会通知追踪车辆,追踪车辆随后驶向该交叉路口。看到这一情况后,被追踪者可能会掉头。为了实现这一点,传感器节点会在有限时间内等待,以确认被追踪者是否确实通过了交叉路口,并相应地更新追踪车辆的信息。网络操作的流程图如图2所示。

5 追踪者
追踪者以两种不同的方式追踪被追踪者。在简单模型中,追踪者持续移动,直到到达一个交叉路口。当到达交叉路口时,追踪者会选择通往被追踪者的最短路径。根据追踪者是处于城市区域的中间还是边缘,它可能有多个选择或只有一个选择。追踪者会选择当前所有可选路径中最不拥堵的路径。为了始终准确估计被追踪者的位置,追踪者会不断检查当前时间与上次已知被追踪者位置的时间差是否小于一个有限时间间隔,称为“del-bat”。这个有限时间间隔“del-bat”大致是被追踪者从一个交叉路口驶向另一个交叉路口所需的时间。如果时间差大于“del-bat”,追踪者会连接到最近的传感器(除非它已经连接),并请求更新的被追踪者信息。其流程图见图4。
在稍微复杂一些的模型变体中,追踪者到达交叉路口后会检查所有通往被追踪者的最短路径上是否已经有其他追踪者在途中。如果所有这些路径上都已有其他追踪者,那么该交叉路口的追踪者会选择其他替代的最短路径(如果有),或者选择在当前最不拥堵的道路上行驶。如果存在尚未有追踪者的道路,那么该交叉路口的追踪者会选择其中最不拥堵的道路。其流程图见图5。

在本项目中,成功解决了开发结合静态传感器信息、通信系统和车载路径规划算法的问题。测试了两种不同的追踪算法,分别命名为“简单路径规划”和“智能路径规划”。结果表明,智能算法的平均拦截时间更短,并且提高了拦截效率。由于项目时间有限,许多设计的其他算法未能进行测试。

鉴于这是首次解决这一问题,已识别出大量可能的研究方向。为了使问题更具现实性,可以允许各个追踪车辆之间相互通信,就像在真实追踪场景中一样。这可能会使追踪车辆之间实现更高程度的协调,并极有可能减少拦截时间。此外,为了实现高级路径规划,需要对被追踪者的轨迹和拥堵情况进行估计。拥堵估计是一个已有大量研究的领域,目前已完成许多相关工作。此外,为追踪者和被追踪者增加资源约束(如燃料限制)会使问题更加接近现实。

另一个研究方向是探索设置一名协调其他追踪者路径规划的领导者的效果 [2]。这同样需要大量估计拥堵条件和被追踪者轨迹的工作,以便优化路径规划。动态更换领导者对拦截时间的影响也是一个有趣的研究课题。

最后,可以利用机器学习来识别最优的追踪算法,以验证警察在类似追踪场景中采用的追踪算法是否确实是最高效的。

📚2 运行结果

运行视频:

通过网盘分享的文件:videos.rar
链接: https://pan.baidu.com/s/1zzTGiJDCq4MHodw84TIQbQ?pwd=3f4x

提取码: 3f4x 
--来自百度网盘超级会员v6的分享

部分代码:

%% Clean Up
clean_up % Convenience script, needs to be changed if object vars change

%% Add Utility Function Path
addpath 'utils'
javaaddpath('.')

%% Parameters
% Simulation Parameters
fps = 24;                 % Frames per second
Ts = 1/fps;               % Time step
SHOW_SIMULATION = true;
MAXIMIZE_FIGURE = false;%true;
SHOW_TOOLBAR = true;
DRAW_SIMPLE = true;
RECORD_GLOBAL_VIDEO = false;
RECORD_LOCAL_VIDEO = false; % Not yet implemented

% Road Network Parameters
nBlocksWide = 11;
nBlocksLong = 15;

blockLength = 50;         % m, Length of block in meters
nLanes = 2;               % Number of lanes per segment of road
laneWidth = 3;
shoulderWidth = 1.5;
speedLimit = 50;          % kph, metric system in use
garageDensity = 0.1;      % Percentage of blocks containing a garage
carGenerationRate = 1/5;  % cars/second rate at which cars leave a 
car_time = 25;
pursuer_time = 15;
evader_time = 15;
carLength = 4;
bat_time = evader_time * floor(blockLength/carLength);

% Car Parameters
nCars = 10;

% Pursuer Parameters
nPursuers = 5;

% Evader Parameters

% Sensor Parameters

% Video Parameters
video_save_folder = 'videos';
filename_prefix = 'DSSN_project';
FrameRate = 10;
Quality = 30;



%% Create Objects
RN = RoadNetwork();
RN.CreateGrid(nBlocksWide, nBlocksLong, bat_time, ...
  'BlockLength', blockLength, 'LaneWidth', laneWidth, ...
  'ShoulderWidth', shoulderWidth, 'SpeedLimit', speedLimit);

sensors = [RN.intersections.sensors];
for s = 1:numel(sensors)
  sensors(s).ID = s;
end

% nGarages = ceil(nBlocksWide*nBlocksLong*garageDensity);
% for i = nGarages:-1:1
%   garages(i) = Garage(RN, 'RandomGridBlock', true, ...

🎉3 参考文献 

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)

🌈Matlab代码、数据、文章下载

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

                                                           在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值