【控制】《多智能体系统的协同群集运动控制》陈杰老师-第2章-连通性保持条件下多智能体系统群集运动控制
第2章-連通性保持條件下多智能體系統群集運動控制
- 2.1 研究背景
- 2.2 問題描述
- 2.3 領航跟隨群集運動控制律
- 控制協議 (2.2)
- 符號函數 sgn(·)
- 人工勢場函數 (Artificial Potential Field)
- 流言 (Gossip) 算法
- 拍賣決策算法
- 2.4 穩定性分析
- 拉薩爾不變集原理(La Salle's Invariance Principle)
- 2.5 仿真和實驗
- 2.5.1 數值仿真
- 2.5.2 實物實驗
- 2.6 結論
- Ref
2.1 研究背景
2.2 問題描述
x˙i=viv˙i=ui,i=1,2,?,N(2.1)\dot{x}_i = v_i \\ \dot{v}_i = u_i, \quad i = 1, 2, \cdots, N \tag{2.1}x˙i?=vi?v˙i?=ui?,i=1,2,?,N(2.1)
2.3 領航跟隨群集運動控制律
控制協議 (2.2)
每個跟隨者 iii 設計有界群集控制協議如下:
ui=?∑j∈Nij≠l?xiVij(∥xij∥)?hi?xiVil(∥xil∥)?α∑j∈Niaij{sgn[∑k∈Nik≠laik(vi?vk)+hi(vi?vl)]}+α∑j∈Niaij{sgn[∑k∈Njk≠lajk(vj?vk)+hi(vj?vl)]}(2.2)u_i = -\sum_{\underset{j\ne l}{j\in \mathcal{N}_i}} \nabla_{x_i} V_{ij}(\|x_{ij}\|) - h_i \nabla_{x_i} V_{il}(\|x_{il}\|) \\ -\alpha \sum_{j\in\mathcal{N}_i} a_{ij} \left\{ \text{sgn}\left[ \sum_{\underset{k\ne l}{k\in \mathcal{N}_i}} a_{ik} (v_i - v_k) + h_i(v_i - v_l) \right] \right\} \\ +\alpha \sum_{j\in\mathcal{N}_i} a_{ij} \left\{ \text{sgn}\left[ \sum_{\underset{k\ne l}{k\in \mathcal{N}_j}} a_{jk} (v_j - v_k) + h_i(v_j - v_l) \right] \right\} \tag{2.2}ui?=?j?=lj∈Ni??∑??xi??Vij?(∥xij?∥)?hi??xi??Vil?(∥xil?∥)?αj∈Ni?∑?aij???????sgn????k?=lk∈Ni??∑?aik?(vi??vk?)+hi?(vi??vl?)??????????+αj∈Ni?∑?aij?????????sgn?????k?=lk∈Nj??∑?ajk?(vj??vk?)+hi?(vj??vl?)?????????????(2.2)
符號函數 sgn(·)
符號函數 sgn(?)\text{sgn}(\cdot)sgn(?)
sign(x)或者Sign(x)叫做符號函數,在數學和計算機運算中,其功能是取某個數的符號(正或負):
當x>0,sign(x)=1;
當x=0,sign(x)=0;
當x<0, sign(x)=-1;
在通信中,sign(t)表示這樣一種信號:
當t≥0,sign(t)=1; 即從t=0時刻開始,信號的幅度均為1;
當t<0, sign(t)=-1;在t=0時刻之前,信號幅度均為-1
sign
Sign 函數(符號函數)全頁折疊
語法:sign(x)
說明:
Y = sign(x) 返回與 x 大小相同的數組 Y,其中 Y 的每個元素是:
1,前提是 x 的對應元素大于 0。
0,前提是 x 的對應元素等于 0。
-1,前提是 x 的對應元素小于 0。
x./abs(x),前提是 x 為復數。
這里參考:Matlab
人工勢場函數 (Artificial Potential Field)
人工勢場函數
綜上,給出 VijV_{ij}Vij? 的具體形式如下:
Vij(∥xij∥)=(∥xij∥?d)2(R?∥xij∥)∥xij∥+d2(R?∥xij∥)c1+ψmax?+∥xij∥(∥xij∥?d)2(R?∥xij∥)+∥xij∥(R?d)2c2+ψmax?(2.6)\begin{aligned} V_{ij}(\|x_{ij}\|) = \frac{(\|x_{ij}\|-d)^2(R - \|x_{ij}\|)}{\|x_{ij}\| + \frac{d^2 (R-\|x_{ij}\|)}{c_1+\psi_{\max}}} \\ +\frac{\|x_{ij}\| (\|x_{ij}\|-d)^2}{(R-\|x_{ij}\|) + \frac{\|x_{ij}\|(R-d)^2}{c_2+\psi_{\max}}} \end{aligned}\tag{2.6}Vij?(∥xij?∥)=∥xij?∥+c1?+ψmax?d2(R?∥xij?∥)?(∥xij?∥?d)2(R?∥xij?∥)?+(R?∥xij?∥)+c2?+ψmax?∥xij?∥(R?d)2?∥xij?∥(∥xij?∥?d)2??(2.6)
流言 (Gossip) 算法
流言 (Gossip) 算法
拍賣決策算法
拍賣決策算法
2.4 穩定性分析
拉薩爾不變集原理(La Salle’s Invariance Principle)
拉薩爾不變集原理(La Salle’s Invariance Principle):對于不依賴于時間的系統(autonomous system) x˙=f(x)\dot{x}=f(x)x˙=f(x),其中 f(x)f(x)f(x) 連續,并且 V(x)V(x)V(x) 具有對 xxx 一階連續偏導。如果
1.在某個區域 Ωl\Omega_lΩl? 內 V(x)<l(l>0)V(x)<l(l>0)V(x)<l(l>0) ,也就是在 V(x)V(x)V(x) 該區域內有上界;
2.并且在該區域內,V˙(x)=?V?xf(x)≤0\dot{V}(x) = \frac{\partial V}{\partial x}f(x)\le0V˙(x)=?x?V?f(x)≤0 ;
把該區域內所有使得 V˙(x)=0\dot{V}(x)=0V˙(x)=0 的點的集合叫做 RRR,而 MMM 是包含在 RRR 內最大的不變集。如果系統起始于該區域內,那么隨著 t→∞t\rightarrow\inftyt→∞ 系統一定會收斂于不變集 MMM 中的點。
2.5 仿真和實驗
2.5.1 數值仿真
精簡版的控制協議
% 數值仿真clear% 領航者參數 ul(:,1) = [5 2]';% 跟隨者參數 PXf1(:,1)= 3; PYf1(:,1)=-2; VXf1(:,1)= 0; VYf1(:,1)= 0; PXf2(:,1)= 6; PYf2(:,1)= 4; VXf2(:,1)= 0; VYf2(:,1)= 0; PXf3(:,1)=-5; PYf3(:,1)=-5; VXf3(:,1)= 0; VYf3(:,1)= 0; PXf4(:,1)=-4; PYf4(:,1)= 3; VXf4(:,1)= 0; VYf4(:,1)= 0;PX = [PXf1 PXf2 PXf3 PXf4]'; PY = [PYf1 PYf2 PYf3 PYf4]';VX = [VXf1 VXf2 VXf3 VXf4]'; VY = [VYf1 VYf2 VYf3 VYf4]';% 系統關系 L = [ 3 -1 -1 -1;-1 3 -1 -1;-1 -1 3 -1;-1 -1 -1 3;];% 時間參數 tbegin = 0; tfinal = 60; dT = 0.1; T(:,1) = 0; % 計算次數 times = (tfinal - tbegin) / dT;for time = 1:1:times% 記錄時間T(:, time+1) = T(:, time) + dT;% 領航者軌跡ul(:,time) = [5 5]' -3 * cos( (T(:,time)+20)*pi/40 ) * [1 0]'...-3 * sin( (T(:,time)+20)*pi/40 ) * [0 1]';% 跟隨者軌跡alpha = 1;beta = 0.01; ufX = (alpha * ((-L) * PX(:,time) - (PX(:,time)-ul(1,time) - 0.1))...+ beta * (-L) * VX(:,time));VX(:,time+1) = ufX;PX(:,time+1) = PX(:,time) + dT * VX(:,time+1); % 更新ufY = (alpha * ((-L) * PY(:,time) - (PY(:,time)-ul(2,time)))...+ beta * (-L) * VY(:,time));VY(:,time+1) = ufY;PY(:,time+1) = PY(:,time) + dT * VY(:,time+1); % 更新 end% 繪制圖像 % figure(1) % plot3(T(:,1:times), ul(1,1:times), ul(2,1:times)); % xlabel('T'); % ylabel('X'); % zlabel('Y');figure(2) subplot(2,1,1); plot3(T(:,1:times),PX(1,1:times),PY(1,1:times),...T(:,1:times),PX(2,1:times),PY(2,1:times),...T(:,1:times),PX(3,1:times),PY(3,1:times),...T(:,1:times),PX(4,1:times),PY(4,1:times),...T(:,1:times),ul(1,1:times),ul(2,1:times), 'linewidth',1.5); legend('f1','f2','f3','f4', 'L'); xlabel('T'); ylabel('X'); zlabel('Y'); title('Position'); grid onsubplot(2,1,2); plot3(T(:,1:times),VX(1,1:times),VY(1,1:times),...T(:,1:times),VX(2,1:times),VY(2,1:times),...T(:,1:times),VX(3,1:times),VY(3,1:times),...T(:,1:times),VX(4,1:times),VY(4,1:times),'linewidth',1.5); legend('f1','f2','f3','f4'); xlabel('T'); ylabel('X'); zlabel('Y'); title('Speed'); grid onu1 = - (Deltaxi*V(x1-x2) + Deltaxi*V(x1-x3) + Deltaxi*V(x1-x4))...- alpha * L(1,2) * sign( L(1,2)*V(v1-v2) + L(1,3)*V(v1-v3) + L(1,4)*V(v1-v4))...- alpha * L(1,3) * sign( L(1,3)*V(v1-v2) + L(1,3)*V(v1-v3) + L(1,4)*V(v1-v4))...- alpha * L(1,4) * sign( L(1,2)*V(v1-v2) + L(1,3)*V(v1-v3) + L(1,4)*V(v1-v4))...+ alpha * L(1,2) * sign( L(2,1)*V(v2-v1) + L(2,4)*V(v2-v4))...+ alpha * L(1,3) * sign( L(3,1)*V(v3-v1))...+ alpha * L(1,4) * sign( L(4,1)*V(v4-v1) + L(4,2)*V(v4-v2));u2 = - (Deltaxi*V(x2-x1) + Deltaxi*V(x2-x4))...- alpha * L(2,1) * sign( L(2,1)*V(v2-v1) + L(2,4)*V(v2-v4))...- alpha * L(2,4) * sign( L(2,1)*V(v2-v1) + L(2,4)*V(v2-v4))...+ alpha * L(2,1) * sign( L(1,2)*V(v1-v2) + L(1,3)*V(v1-v3) + L(1,4)*V(v1-v4))...+ alpha * L(2,4) * sign( L(4,1)*V(v4-v1) + L(4,2)*V(v4-v2));u3 = - (Deltaxi*V(x3-x1))...- alpha * L(3,1) * sign( L(3,1)*V(v3-v1))...+ alpha * L(3,1) * sign( L(1,2)*V(v1-v2) + L(1,3)*V(v1-v3) + L(1,4)*V(v1-v4));u4 = - (Deltaxi*V(x4-x1) + Deltaxi*V(x4-x2))...- alpha * L(4,1) * sign( L(4,1)*V(v4-v1) + L(4,2)*V(v4-v2))...- alpha * L(4,2) * sign( L(4,1)*V(v4-v1) + L(4,2)*V(v4-v2))...+ alpha * L(4,1) * sign( L(1,2)*V(v1-v2) + L(1,3)*V(v1-v3) + L(1,4)*V(v1-v4))...+ alpha * L(4,2) * sign( L(2,1)*V(v2-v1) + L(2,4)*V(v2-v4));xi=1; xj=2; xl=3; t = xi-xj; V(xi-xj)Vij = V(xi-xj); Vil = V(xi-xl);% 時間參數 tbegin = 0; tfinal = 2; dT = 0.01; T(:,1) = tbegin; % 計算次數 times = (tfinal - tbegin) / dT;for time = 1:1:times % 記錄時間T(1, time+1) = T(1, time) + dT;T(2, time) = V(T(1, time)); endplot(T(1,:),T(2,:))function Vij = V(xij)% 參數d = 0.5;R = 1;c1 = 9.7;c2 = 9.7;psiMax = 50.3;% 運算程序Vij = ( (xij-d)^2 * (R-xij) )/( xij+d^2*(R-xij)/(c1+psiMax) )...+ ( xij*(xij-d)^2 )/( (R-xij)+xij*(R-d)^2/(c2+psiMax) ); endfunction ui = ui(Vij)% 參數L = [3 -1 -1 -1;-1 2 0 -1;-1 0 -1 0;-1 -1 0 2;];Ll= [1 1 0 0]'; Deltaxi = 1;alpha = 0.5;for i=1:length(L)Sum1 = 0;Sum2 = 0;Sum3 = 0;Sum4 = 0;Sum5 = 0;for j=1:length(L)if L(i,j)==-1Sum1 = Sum1 + Deltaxi * V(xi-xj);Sum2 = Sum2 + L(i,j) * sign();Sum3 = Sum3 + L(i,j) * sign();endendendui = -sum * Delta_xi * Vij - hi * Delta_xi * Vil ...end
記錄個常見錯誤
此時出現這種情況,調整步長以及收斂參數,即可。
解決此問題需要記錄測試實驗,先做個實驗記錄表格
| 1 | 10 | 0.1 | + |
2.5.2 實物實驗
2.6 結論
Ref
[202]DISTRIBUTED LEADER-FOLLOWER FLOCKING CONTROL
[203]Chen F, Can Y, Ren W. Distributed Average Tracking of Multiple Time-Varying Reference Signals With Bounded Derivatives. IEEE Transactions on Automatic Control, 2012, 57(12): 3169-3174.
https://blog.csdn.net/weixin_36815313/article/details/112169354
[4]Flocking for multi-agent dynamic systems: algorithms and theory
[22]CONNECTIVITY PRESERVING FLOCKING WITHOUT
VELOCITY MEASUREMENT
[23]Flocking of multi-agent systems with a dynamic virtual leader
[24]Rendezvous of multiple mobile agents with preserved network connectivity
[25]Flocking of Multi-Agents With a Virtual Leader
總結
以上是生活随笔為你收集整理的【控制】《多智能体系统的协同群集运动控制》陈杰老师-第2章-连通性保持条件下多智能体系统群集运动控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【控制】《多智能体系统的协同群集运动控制
- 下一篇: 【控制】《多智能体系统的协同群集运动控制