基于GA遗传算法的PID控制器参数优化matlab建模与仿真

news/2025/2/6 23:56:39/文章来源:https://www.cnblogs.com/softcodes/p/18585030

1.程序功能描述
基于GA遗传算法的PID控制器参数优化,对比GA优化前后的PID控制器的控制曲线。

2.测试软件版本以及运行结果展示
本程序和本人之前写的《基于GA遗传优化的PID控制器最优控制参数整定matlab仿真_ga-pid-CSDN博客》

区别是:之前的控制对象采用的是差分方程实现的,GA部分采用的是通用GA工具箱函数

这里这个控制对象采用的是通过空间状态方程ABCD来构建的,GA部分采用的是自己写的选择交叉变异过程。

MATLAB2022A版本运行


 


3.核心程序

 

% 进行遗传算法的进化过程
for ii=1:1:Miter% 变异操作for j3=1:1:Nmutold = Pop3(unidrnd(Npop), 1:Nvar);[child] = func_mut(old, Pm);pops2(k, 1:Nvar) = child;pops2(k, 1:Nvar) = max(pops2(k, 1:Nvar), Vmin);pops2(k, 1:Nvar) = min(pops2(k, 1:Nvar), Vmax);k = k+1;end% 复制操作for k=k:1:NpopPop_rmpt         = Pop3(randi([1 Npop]), 1:Nvar);pops2(k, 1:Nvar) = Pop_rmpt;k = k+1;end% 计算新种群的适应度for j4=1:1:Npopyfit(j4) = func_fitness(pops2(j4,:), dmsys, Ts, Ed);end% 排序新种群并进入下一次迭代Pop3(:, 1:Nvar) = pops2;Pop3(:, Nvar+1) = yfit(:,:);Pop3            = sortrows(Pop3, Nvar+1);% 记录每代最优个体的适应度Ybests(ii)      = Pop3(1, Nvar+1);
endfigure;
plot(1:5:length(Ybests),Ybests(1:5:length(Ybests)),'-mo',...'LineWidth',1,...'MarkerSize',6,...'MarkerEdgeColor','k',...'MarkerFaceColor',[0.5,0.9,0.0]);
xlabel('迭代数');
ylabel('最优适应度');
grid on% 模拟最优染色体对应的PID控制器性能
Pop_min  = Pop3(1,1:Nvar);
Fbest    = Ybests(1, Miter);
% 构造最优PID控制器
[c,dsys2]=func_pid_sys(Pop_min,Ts,dmsys);[c,dsys2b]=func_pid_sys(pops1(:,:),Ts,dmsys);figure;
step(dsys2)
hold on
step(dsys2b)
legend('GA优化后的PID','PID');
46

  


4.本算法原理
PID控制是工业过程中最常用的一种控制策略,其优点在于结构简单、易于实现、鲁棒性强。然而,PID控制器的性能很大程度上取决于其参数的选取。传统的参数整定方法通常基于经验试错或者一些简化的规则,这些方法虽然简单易行,但往往无法获得最优的控制性能。近年来,基于优化算法的PID参数整定方法逐渐受到关注,其中基于遗传算法(GA)的方法由于其全局寻优能力和高效性,被广泛应用。pid控制器的结构如下所示:

 

4.1、遗传算法基本原理
遗传算法是一种模拟生物进化过程的优化算法,通过选择、交叉、变异等操作,使种群中的个体逐步逼近问题的最优解。其基本流程包括初始化种群、计算适应度、选择操作、交叉操作、变异操作和终止条件判断。

4.2、基于GA的PID参数优化
在基于GA的PID参数优化中,我们将PID的三个参数Kp,Ki,Kd编码为染色体,即个体。适应度函数通常选取为控制系统性能的评价指标,如ISE(积分平方误差)、IAE(积分绝对误差)等。然后,通过遗传算法的迭代过程,寻找使得适应度函数最小的PID参数。

具体步骤如下:

1).初始化种群:随机生成一组PID参数,作为初始种群。
2).计算适应度:对种群中的每个个体(即一组PID参数),以其对应的控制系统性能评价指标作为适应度。
3).选择操作:根据适应度大小选择优秀的个体,适应度好的个体有更大的机会被选中。
4).交叉操作:随机选择种群中的两个个体,进行某种方式的交叉,生成新的个体。
5).变异操作:对新生成的个体进行随机的小幅度变异。
6).终止条件判断:如果满足终止条件(如达到最大进化代数或适应度达到预设阈值),则停止迭代,否则返回步骤2。

通过以上原理和步骤,GA成功地应用于PID控制器参数优化中,实现了对控制器参数的有效寻优,提高了控制系统的整体性能。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/846319.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于MIMO系统的PE-AltMin混合预编码算法matlab性能仿真

1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印): 仿真操作步骤可参考程序配套的操作视频。2.算法涉及理论知识概要在现代无线通信系统中,多输入多输出(Multiple-Input Multiple-Output, MIMO)技术是提高频谱效率和数据传输速率的关键。然而,随着天线数量…

E86 换根DP CF1324F Maximum White Subtree

视频链接: Maximum White Subtree - 洛谷 | 计算机科学教育新生态// 换根DP O(n) #include <bits/stdc++.h> using namespace std;const int N=200005; vector<int> e[N]; int n,a[N],f[N];void dfs(int u,int fa){f[u]=a[u];for(auto v:e[u]){if(v==fa)continu…

【Azure Developer】分享一段Python代码调用Graph API创建用户的示例

问题描述 在Azure门户(Create new user - Microsoft Azure 由世纪互联运营)中添加新用户,如果想通过代码来实现,有没有示例代码参考呢?问题解答 示例代码from azure.identity import AzureAuthorityHosts from azure.identity.aio import ClientSecretCredential from kiota…

Cocos creator制作透明背景桌面宠物

Cocos creator制作透明背景桌面宠物 目录Cocos creator制作透明背景桌面宠物来源前言验证可使用版本打包方案实现1、electron-js中main.js设置2、Cocos creator中宏配置3、Cocos creator中Canvas设置4、Cocos creator构建Web移动端5、修改Web移动端style.css6、使用electron-js…

【数据结构】 字典树trie详解

定义: 将多个字符串以树的方式存储即为字典树,如图,\(1,4,3,12\) 表示 \(cca\) ,我么用 \(ch[i][j]\) 来表示第 \(i\) 个节点的 \(j\) 字符所指向的下一个节点,\(tag[u]\) 表示节点 \(u\) 是否代表一个字符串的结尾,如果是的话,\(tag[u]=1\)。模板CODE 添加字符串 //n表…

五款实用报表工具对比推荐,各种免费好用的报表工具等你来试

概述 报表工具是企业进行数据分析、展示和决策支持的核心工具之一。本文将为大家介绍五款各具特色的报表工具,包括国产的山海鲸报表、FineReport,以及国际工具Databox、Pentaho Reporting和Zoho Analytics。通过详细分析它们的功能特点、优势和不足,帮助大家根据自身需求选择…

H5-24 CSS盒子模型(Box Model)

1、概念:所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用CSS盒模型本质上是一个盒子,封装周围的元素HTML元素,它包括:外边距(margin),边框(border),内边距(padding),和实际内容(content) Margin(外边距):清楚边框外…

Logisim-022-☆16位快速加法器

电路文件所在 电路/3-data.circ 中的 ☆32位快速加法器仓库地址 https://gitee.com/gitliang/logisim-to-cpu

P11233 [CSP-S 2024] 染色 题解

我们设 \(dp_{x,y}\) 表示上一个红色是 \(x\),上一个蓝色是 \(y\) 时最大的价值。 容易发现转移为 \(dp_{a_i,x}=\max\limits_{j=1}^k dp_{k,x}+[k=a_i]a_i,dp_{x,a_i}=\max\limits_{j=1}^k dp_{x,k}+[k=a_i]a_i\)。其中 \(k\) 是值域。 容易发现,转移完后的 \(dp\) 数组中有…

Sybaris pg walkthrough Intermediate

nmap ┌──(root㉿kali)-[~/lab] └─# nmap -p- -A 192.168.166.93 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-03 01:12 UTC Nmap scan report for 192.168.166.93 Host is up (0.071s latency). Not shown: 65519 filtered tcp ports (no-response) PORT …

H5-23 关系选择器

关系选择器分为:后代选择器、子代选择器、相邻兄弟选择器、通用兄弟选择器 1、后低选择器定义:选择所有被E元素包含的F元素,中间用空格隔开语法:E F {}<ul><li>1</li><li>2</li><li>3</li></ul>   <ol><li>…

【DL】YOLOv8模型中的train.py

YOLOv8项目中有两个地方可以执行train.py 最外层的train.py(现在想起来这里好像是我自己写的训练脚本,原项目里没有)YOLO()构造函数默认构造的是目标检测的模型,也可以在方法的参数中指定task类型 models/yolo中的train.py这里的每个文件夹中定义了相对应任务中的训练脚本在…