基於GA遺傳最佳化的PID控制器最優控制引數整定matlab模擬

软件算法开发發表於2024-08-02

1.程式功能描述

透過遺傳最佳化演算法,將PID控制器的kp,ki,kd三個引數作為遺傳演算法的最佳化變數,將PID控制器的輸出誤差作為遺傳演算法的目標值。透過迭代最佳化,輸出控制器最優狀態下對應的控制引數kp,ki,kd,即最後的引數整定結果。

2.測試軟體版本以及執行結果展示

MATLAB2022a版本執行

3.核心程式

%%
while gen < MAXGEN;   
      gen
      Pe0 = 0.99;
      pe1 = 0.01; 

FitnV=ranking(Objv);    
      Selch=select('sus',Chrom,FitnV);    
      Selch=recombin('xovsp', Selch,Pe0);   
      Selch=mut( Selch,pe1);   
      phen1=bs2rv(Selch,FieldD);   

      for a=1:NIND
          X                = phen1(a,:);
          %計算對應的目標值
          [KK,epls,yout]   = func_obj(X);
          E                = epls;
          JJ(a,1)          = E;

      end 

Objvsel=(JJ);    
      [Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);   
      gen=gen+1; 

      %儲存引數收斂過程和誤差收斂過程以及函式值擬合結論
      index1     = isnan(JJ);
      index2     = find(index1 == 1);
JJ(index2) = [];
      index3     = find(JJ==10000000000000);
JJ(index3) = [];
      Error(gen) = mean(JJ);
end 

figure;
plot(Error,'linewidth',2);
grid on
xlabel('迭代次數');
ylabel('遺傳演算法最佳化過程');
legend('Average fitness');

[V,I] = min(JJ);
X     = phen1(I,:)

%初始PID,引數隨機設定
X0    = [35,0.5,0.5];

[KK,epls,yout0]   = func_obj(X0);


figure;
plot(yout0,'b','linewidth',2);
hold on
plot(yout,'r','linewidth',2);
grid on
legend('PID','GA-PID');
0006

  

4.本演算法原理

PID控制是工業過程中最常用的一種控制策略,其優點在於結構簡單、易於實現、魯棒性強。然而,PID控制器的效能很大程度上取決於其引數的選取。傳統的引數整定方法通常基於經驗試錯或者一些簡化的規則,這些方法雖然簡單易行,但往往無法獲得最優的控制效能。近年來,基於最佳化演算法的PID引數整定方法逐漸受到關注,其中基於遺傳演算法(GA)的方法由於其全域性尋優能力和高效性,被廣泛應用。pid控制器的結構如下所示:

4.1、遺傳演算法基本原理

遺傳演算法是一種模擬生物進化過程的最佳化演算法,透過選擇、交叉、變異等操作,使種群中的個體逐步逼近問題的最優解。其基本流程包括初始化種群、計算適應度、選擇操作、交叉操作、變異操作和終止條件判斷。

4.2、基於GA的PID引數最佳化

在基於GA的PID引數最佳化中,我們將PID的三個引數Kp,Ki,Kd編碼為染色體,即個體。適應度函式通常選取為控制系統效能的評價指標,如ISE(積分平方誤差)、IAE(積分絕對誤差)等。然後,透過遺傳演算法的迭代過程,尋找使得適應度函式最小的PID引數。

具體步驟如下:

初始化種群:隨機生成一組PID引數,作為初始種群。

計算適應度:對種群中的每個個體(即一組PID引數),以其對應的控制系統效能評價指標作為適應度。

選擇操作:根據適應度大小選擇優秀的個體,適應度好的個體有更大的機會被選中。

交叉操作:隨機選擇種群中的兩個個體,進行某種方式的交叉,生成新的個體。

變異操作:對新生成的個體進行隨機的小幅度變異。

終止條件判斷:如果滿足終止條件(如達到最大進化代數或適應度達到預設閾值),則停止迭代,否則返回步驟2。

PID控制器的傳遞函式為:

G(s) = Kp + Ki/s + Kd*s

其中,Kp是比例係數,Ki是積分系數,Kd是微分系數。在遺傳演算法中,我們需要最佳化的就是這三個係數。

適應度函式(以ISE為例)可以定義為:

Fitness = ∫(e(t))^2 dt

其中,e(t)為控制系統的誤差訊號。

4.3、優勢

基於GA的PID引數最佳化方法具有以下優勢:

全域性尋優能力:遺傳演算法能夠全域性範圍內尋找最優解,避免了傳統方法可能陷入區域性最優的問題。

自動化程度高:只需要設定好遺傳演算法的引數,就可以自動進行尋優過程,無需人工干預。

適用於複雜和非線性系統:無論系統模型是否複雜,只要可以定義適應度函式,就可以使用該方法進行引數最佳化。

相關文章