
【多智能体系统】一种去中心化算法,使网络中的每个代理能够识别编队的位姿(平移和旋转),并正确地将自身分配到编队中的一个独特位置(Matlab代码实现)
💥💥💞💞❤️❤️💥💥博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。⛳️行百里者,半于九十。📋📋📋🎁🎁🎁。
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥1 概述
一、多智能体系统相关研究现状
- 多智能体强化学习背景
- 多智能系统主要基于庞大的智能体交互数据,利用大量计算资源促使每个智能体学会与其他智能体合作执行复杂任务,其核心范式为多智能体强化学习。在这个领域中,目前存在中心化学习和独立学习两种主要学习范式。中心化学习要求每个智能体具备全局观察能力,这会大幅增加算法复杂性和通信成本,在大规模系统中的可扩展性较差;而独立学习虽然降低了系统和算法的复杂性,但学习过程不稳定,决策性能较差。在真实场景中(如城市交通系统控制交通信号灯),存在交互限制和成本因素,现有方法难以扩展到大规模真实世界多智能体系统中。
- 去中心化多智能体研究进展
- 北京大学人工智能研究院杨耀东课题组提出了去中心化高效多智体强化学习方法,这一成果首次在大规模多智能体系统中实现了高效的去中心化协同训练和决策,提升了人工智能决策模型在大规模多智能体系统中的扩展性和适用性。该研究对大规模多智能体系统进行以智能体为单位的动力学特性解耦,将智能体间关系描述为拓扑连接结构下的网络化关系,还提出更通用的网络化系统模型,弥合了标准网络系统和一般多代理系统之间的差距,为去中心化多智能体系统研究提供理论框架和分析工具。并且将单智能体学习中的模型学习理论扩展到多智能体系统中,提出基于模型的去中心化策略优化方法,缓解模型预测误差问题,多项测试表明该方法能扩展到大规模电网和交通等网络化系统中,在较低通信成本下实现较高决策性能。
二、目标算法的研究方向
- 算法功能需求
- 本文目标是开发一种去中心化算法,使网络中的每个代理能够识别编队的位姿(平移和旋转),并正确将自身分配到编队中的独特位置,且随着时间趋于无穷大,代理位置要精确匹配期望编队的旋转和平移版本的位置。
- 算法实现与验证
- 使用MATLAB实现所提出的算法,并模拟一个虚拟机器人网络。
- 通过数学分析和矩阵理论,深入理解在不同条件下(包括不变图和基于某些参数变化的图)的不同共识算法,研究达成共识的充分条件,模拟与群体行为、集群行为以及可用于实际应用相关的不同场景中的共识过程。
三、研究的意义与挑战
- 意义
- 这种去中心化算法有助于提升多智能体系统在编队任务中的自主性和准确性,在诸如机器人编队等需要精确位姿识别和定位的场景中有很大应用价值,能提高多智能体系统的协同效率和任务完成质量。
- 挑战
- 开发这样的算法面临诸多挑战,例如如何准确识别位姿,尤其是在复杂环境和动态变化下;如何确保每个代理正确分配到独特位置并随着时间推移精确匹配期望位置;在不同条件下的共识算法研究中,如何处理各种复杂的图结构和参数变化带来的影响等。
📚2 运行结果
部分代码:
%Ant Colony Optimization for two food sources
clear all;
%Defining and initializing Parameters
global Lx Ly stepsize nmax n; %global so that can be used in other functions also
Lx=500; Ly=500; stepsize=5; nmax=50; %nmax is the size of ant colony, Lx and Ly are the dimension of area, stepsize is length of one step
total_time=2000; % Number of time steps
Grnd_pot0=sparse(zeros(Lx,Ly)); Grnd_pot1=sparse(zeros(Lx,Ly)); %Natural ground potential
n=10; % foreaging ants
nest=[250,250]; % position of nest
ri = zeros(n,2); ri(:,1)=nest(1); ri(:,2)=nest(1,2); ri(:,4)=0; ri(:,5)=0; ri(:,3)=0;
% ant parameters that is x-position, y-position, state, time of leaving nest, time of leaving food source
source = [120,180; 380,110]; % position of food sources
ns = length(source); % count of food sources
s=10; % food source has a size(not point source)
epsilon_0 = 1; % Initial fluctuation intensity
epsilon = zeros(n,1)+epsilon_0; % matrix of Fluctuation intensity
epsilon_rate = 0.02; % Fluctuation intensity change rate
epsilon_max = 5; % Maximum value of fluctuation intensity
aviobj = VideoWriter('trail.avi'); % Used to create video file out of grid
dr = 15; % unit change in r
checkboundary = 0; % if current step is outside the boundry then we have to calculate different step else current step is ok
drand=[0,0]; % drand initialization
grad = [0,0]; % gradient initialization
direction = randn(n,2)*2-1; %direction initialization
% Generating world that is 2-d here
world = ones(Lx,Ly);
world(100:Lx-100,100:Ly-100)=0;
world = sparse(world);
%Start iterating over time
for t=1:total_time %iteration over time 1 to 2000
%Calculation of pheromone matrix
for ii=-s:s
for jj=-s:s
for src = 1:ns
Grnd_pot1(source(src, 1)+ii,source(src,2)+jj)=max(max(Grnd_pot1));
end
Grnd_pot0(nest(1)+ii,nest(2)+jj)=max(max(Grnd_pot0));
end
%maximum ground potential is assigned near food source and nest
end
[Grnd_pot0,Grnd_pot1]=Grnd_pot(ri,t,Grnd_pot0,Grnd_pot1,direction,n);
% Now calculating new position for each ant i
for i=1:n
checkboundary = 0;
if ri(i,3)==1 %that is ith ant is travelling towards nest or food
Trl_potXpos=Trl_pot([ri(i,1)+dr,ri(i,2)],Grnd_pot0,direction(i,:));
Trl_potXneg=Trl_pot([ri(i,1)-dr,ri(i,2)],Grnd_pot0,direction(i,:));
Trl_potYpos=Trl_pot([ri(i,1),ri(i,2)+dr],Grnd_pot0,direction(i,:));
Trl_potYneg=Trl_pot([ri(i,1),ri(i,2)-dr],Grnd_pot0,direction(i,:));
elseif ri(i,3)==0
Trl_potXpos=Trl_pot([ri(i,1)+dr,ri(i,2)],Grnd_pot1,direction(i,:));
Trl_potXneg=Trl_pot([ri(i,1)-dr,ri(i,2)],Grnd_pot1,direction(i,:));
Trl_potYpos=Trl_pot([ri(i,1),ri(i,2)+dr],Grnd_pot1,direction(i,:));
Trl_potYneg=Trl_pot([ri(i,1),ri(i,2)-dr],Grnd_pot1,direction(i,:));
end
grad = [(Trl_potXpos-Trl_potXneg)/2,(Trl_potYpos-Trl_potYneg)/2]; %gradient of ground potential
%creating a step that is inside our boundary
while checkboundary == 0
if t==1 %starting time
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)
[1]董斌,杨明,王宏.未知环境中一种基于激光雷达的全局位姿估计算法[J].计算机科学, 2002(z2):5.
[2]李优新.机器人无标定视觉伺服系统的多种智能控制方法研究[D].华南理工大学,2011.
[3]张玮奇,王嘉,张琳,等.SUI-SLAM:一种面向室内动态环境的融合语义和不确定度的视觉SLAM方法[J].机器人, 46(6):732[2025-01-21]
🌈4 Matlab代码实现
资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取
更多推荐
所有评论(0)