【控制】基于灰狼算法改進分數(shù)階PD滑模控制器附matlab代碼
【控制】基于灰狼算法改進分數(shù)階PD滑??刂破鞲絤atlab代碼
TT_Matlab
博主簡介:擅長智能優(yōu)化算法、神經(jīng)網(wǎng)絡預測、信號處理、元胞自動機、圖像處理、路徑規(guī)劃、無人機等多種領(lǐng)域的Matlab仿真,完整matlab代碼或者程序定制加qq1575304183。
1 內(nèi)容介紹
分數(shù)微積分已經(jīng)被研究了將近 3 個世紀,并且已 經(jīng)被科學家廣泛應用到科學與控制工程領(lǐng)域中 。 分 數(shù)階 PID 控制系統(tǒng)是由斯洛伐克學者 Podlubny 于 1994 年提出,并應用于分數(shù)階模糊系統(tǒng)中 。 在此項工 作之后,其他的工程師應用不同的設(shè)計與調(diào)整方法設(shè) 計出分數(shù)階 PID 控制器 。 分數(shù)階微積分為復雜成比例 的系統(tǒng)過程和事件提供完善的數(shù)學模型,應用于物理 、 生物與控制理論方面 。 分數(shù)模糊控制器 ( FFCs ) 是傳統(tǒng)模糊控制器與分 數(shù)階算子結(jié)合,在多種動力系統(tǒng)中表現(xiàn)出比傳統(tǒng)的模 糊控制器更好的性能 。 分數(shù)階模糊控制器中的參數(shù)估 計問題一般用進化算法去優(yōu)化求解,提高控制器的精 度與穩(wěn)定性能 。 例如 : 用遺傳算法模糊分數(shù)階控制器 模型問題 ; 用混沌粒子群算法對可再生發(fā)電混合動 力系統(tǒng)進行分數(shù)階模糊控制器 ; 使用微分和聲搜索 算法設(shè)計分數(shù)階 ; 采用改進的重力搜索算法對抽水 蓄能水電機組進行快速模糊分數(shù)階 PID 控制 ; 分數(shù)階模糊 PID 控制器在機械手臂中的應用性能分析 ; 社會蜘蛛群算法對分數(shù)模糊控制器參數(shù)標定 。 雖然這些算法都獲得比較理想的結(jié)果,但是仍然具有一 個很重要的局限性,由于其搜索策略中的勘探與開采 之間的平衡關(guān)系,容易陷入局部最優(yōu)的解,這種行為會 導致整個種群快速集中在最優(yōu)粒子周圍,容易形成早 熟收斂,不利于搜索空間的探索 。 灰狼優(yōu)化算法是由 Mirjalili 等于 2014 年提出 的新型群智能優(yōu)化算法 。 灰狼優(yōu)化算法 ( GWO ) 是模 擬灰狼的狩獵機制,包括搜索獵物 、 追蹤獵物 、 包圍獵 物與捕殺獵物等步驟,與其他的元啟發(fā)式優(yōu)化算法不 同,該算法考慮領(lǐng)導階層 。 由于該算法具有較好的平 衡勘探與開采能力,所以該算法越來越受到相關(guān)領(lǐng)域 的人們重視,并成功地應用于一些實際工程問題中 。
PID模糊控制在工業(yè)控制中是最廣泛的一種控制方法,在一些復雜的實際系統(tǒng)中,應用分數(shù)階PID模糊控制器在整定系統(tǒng)參數(shù)性能上優(yōu)于整數(shù)模糊控制器.分數(shù)階模糊控制器具有較多的控制參數(shù),這些控制參數(shù)直接影響了模糊控制器的性能.用傳統(tǒng)的算法校準分數(shù)階模糊控制器并不能得到最佳的參數(shù)值,而且標定參數(shù)的過程較為復雜.因此提出用灰狼優(yōu)化算法(Grey Wolf Optimizer,GWO)優(yōu)化分數(shù)階模糊控制器的參數(shù).將基于灰狼優(yōu)化算法的分數(shù)階模糊控制器優(yōu)化方法與其他五種典型的基于群智能的優(yōu)化方法進行了比較.實驗結(jié)果表明,該方法的控制效果更好.
2 仿真代碼
%
Grey Wolf Optimizer
function
[Alpha_score,Alpha_pos,Convergence_curve]=GWOr(SearchAgents_no,Max_iter,lb,ub,dim)
x0
=
[-pi pi 0 0 0 0];
Ts
=
[0 5];
%
initialize alpha, beta, and delta_pos
Alpha_pos
=
zeros(1,dim);
Alpha_score
=
inf; %change this to -inf for maximization problems
Beta_pos
=
zeros(1,dim);
Beta_score
=
inf; %change this to -inf for maximization problems
Delta_pos
=
zeros(1,dim);
Delta_score
=
inf; %change this to -inf for maximization problems
%Initialize
the positions of search agents
Positions
=
initializationr(SearchAgents_no,dim,ub,lb);
Convergence_curve
=
zeros(1,Max_iter);
l
=
0;% Loop counter
%
Main loop
while
l<Max_iter
l
for
i=1:size(Positions,1)
%
Return back the search agents that go beyond the boundaries of the search space
%
Flag4ub=Positions(i,:)>ub;
%
Flag4lb=Positions(i,:)<lb;
%
Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;
Kpd
=
Positions(i,:);
[T,X]
=
ode45(@(t,x) r2dof(t,x,Kpd),Ts,x0);
qd1
=
sin(4.17*T);
%
qdot_r1=4.17*cos(4.17*T);
%
qdot2_r1=-4.17*4.17*sin(4.17*T);
qd2
=
1.2*sin(5.11*T);
%
qdot_r2=1.2*5.11*cos(5.11*T);
%
qdot2_r2=-1.2*5.11*5.11*sin(5.11*T);
th1
=
X(:,1); %theta1 wavwform
th2
=
X(:,2);
fitness
=
Fitnessr(th1,th2,qd1,qd2);
%
Calculate objective function for each search agent
%
fitness=Fitnessr(Positions(i,:));
%
Update Alpha, Beta, and Delta
if
fitness<Alpha_score
Alpha_score
=
fitness; % Update alpha
Alpha_pos
=
Positions(i,:);
end
if
fitness>Alpha_score && fitness<Beta_score
Beta_score
=
fitness; % Update beta
Beta_pos
=
Positions(i,:);
end
if
fitness>Alpha_score && fitness>Beta_score && fitness<Delta_score
Delta_score
=
fitness; % Update delta
Delta_pos
=
Positions(i,:);
end
end
a
=
2-l*((2)/Max_iter); % a decreases linearly fron 2 to 0
%
Update the Position of search agents including omegas
for
i=1:size(Positions,1)
%
for j=1:size(Positions,2)
r1
=
rand(); % r1 is a random number in [0,1]
r2
=
rand(); % r2 is a random number in [0,1]
A1
=
2*a*r1-a; % Equation (3.3)
C1
=
2*r2; % Equation (3.4)
D_alpha
=
abs(C1*Alpha_pos-Positions(i,:)); % Equation (3.5)-part 1
X1
=
Alpha_pos-A1*D_alpha; % Equation (3.6)-part 1
r1
=
rand();
r2
=
rand();
A2
=
2*a*r1-a; % Equation (3.3)
C2
=
2*r2; % Equation (3.4)
D_beta
=
abs(C2*Beta_pos-Positions(i,:)); % Equation (3.5)-part 2
X2
=
Beta_pos-A2*D_beta; % Equation (3.6)-part 2
r1
=
rand();
r2
=
rand();
A3
=
2*a*r1-a; % Equation (3.3)
C3
=
2*r2; % Equation (3.4)
D_delta
=
abs(C3*Delta_pos-Positions(i,:)); % Equation (3.5)-part 3
X3
=
Delta_pos-A3*D_delta; % Equation (3.5)-part 3
Positions(i,
:
)=(X1+X2+X3)/3;% Equation (3.7)
%
end
end
l
=
l+1;
Convergence_curve(l)
=
Alpha_score;
end
3 運行結(jié)果
4 參考文獻
[1]范魯娜. 灰狼算法優(yōu)化分數(shù)階模糊控制器參數(shù)[J]. 計算機應用與軟件, 2021, 38(10):6.
[1]閻曉妹, 尚婷, 趙小國. 基于分數(shù)階滑??刂破鞯牟淮_定分數(shù)階混沌系統(tǒng)同步[J]. 應用數(shù)學學報, 2018, 41(6):12.
博主簡介:擅長智能優(yōu)化算法、神經(jīng)網(wǎng)絡預測、信號處理、元胞自動機、圖像處理、路徑規(guī)劃、無人機等多種領(lǐng)域的Matlab仿真,相關(guān)matlab代碼問題可私信交流。
部分理論引用網(wǎng)絡文獻,若有侵權(quán)聯(lián)系博主刪除。
-
2023年血糖新標準公布,不是3.9-6.1,快來看看你的血糖正常嗎? 2023-02-07
-
2023年各省最新電價一覽!8省中午執(zhí)行谷段電價! 2023-01-03
-
PPT導出高分辨率圖片的四種方法 2022-09-22
-
2023年最新!國家電網(wǎng)27家省級電力公司負責人大盤點 2023-03-14
-
全國消防救援總隊主官及簡歷(2023.2) 2023-02-10
-
盤點 l 中國石油大慶油田現(xiàn)任領(lǐng)導班子 2023-02-28
-
我們的前輩!歷屆全國工程勘察設(shè)計大師完整名單! 2022-11-18
-
關(guān)于某送變電公司“4·22”人身死亡事故的快報 2022-04-26
