天天看點

【PID優化】基于粒子群和遺傳算法PID控制器優化設計含Matlab源碼

1 簡介

遺傳算法是一種模拟自然進化而提出的簡單高效的優化組合方法.本 文研究了比例-積分-微分(PID)控制器優化設計的性能名額的選擇問題,介紹了遺傳算法的基本原理,給出了利用遺傳算法進行PID控制器優化設計的步 驟.同時給出了一個用遺傳算法進行單環系統PID控制器優化設計的仿真執行個體.仿真結果表明了遺傳算法應用于PID控制器優化設計的可行性和有效性.遺傳算 法還克服了其它方法的某些弊端.

2 部分代碼

%% 清空環境
clear
clc
%% 參數設定
w = 0.6;      % 慣性因子 
c1 = 2;       % 加速常數
c2 = 2;       % 加速常數
Dim = 3;            % 維數
        % 群體最優更新
        if fSwarm(j) < fzbest
            zbest = Swarm(j,:);
            fzbest = fSwarm(j);
        end
    end 
    iter = iter+1;                      % 疊代次數更新
    y_fitness(1,iter) = fzbest;         % 為繪圖做準備
    K_p(1,iter) = zbest(1);
    K_i(1,iter) = zbest(2);
    K_d(1,iter) = zbest(3);
end
%% 繪圖輸出
figure(1)      % 繪制性能名額ITAE的變化曲線
plot(y_fitness,'LineWidth',2)
title('最優個體适應值','fontsize',18);
xlabel('疊代次數','fontsize',18);ylabel('适應值','fontsize',18);
set(gca,'Fontsize',18);
figure(2)      % 繪制PID控制器參數變化曲線
plot(K_p)
hold on
plot(K_i,'k','LineWidth',3)
plot(K_d,'--r')
title('Kp、Ki、Kd 優化曲線','fontsize',18);
xlabel('疊代次數','fontsize',18);ylabel('參數值','fontsize',18);
set(gca,'Fontsize',18);
legend('Kp','Ki','Kd',1);      

3 仿真結果

【PID優化】基于粒子群和遺傳算法PID控制器優化設計含Matlab源碼
【PID優化】基于粒子群和遺傳算法PID控制器優化設計含Matlab源碼

4 參考文獻

部落客簡介:擅長智能優化算法、神經網絡預測、信号處理、元胞自動機、圖像處理、路徑規劃、無人機等多種領域的Matlab仿真,相關matlab代碼問題可私信交流。

部分理論引用網絡文獻,若有侵權聯系部落客删除。

繼續閱讀