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

devtools/2024/9/23 11:19:09/

目录

1.程序功能描述

2.测试软件版本以及运行结果展示

3.核心程序

4.本算法原理

4.1、遗传算法基本原理

4.2、基于GA的PID参数优化

5.完整程序


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控制器参数优化中,实现了对控制器参数的有效寻优,提高了控制系统的整体性能。

5.完整程序

VVV


http://www.ppmy.cn/devtools/16624.html

相关文章

千行 MySQL 学习笔记总结大全,语法大全

Windows服务 -- 启动MySQLnet start mysql -- 创建Windows服务sc create mysql binPath mysqld_bin_path(注意:等号与值之间有空格) 连接与断开服务器 mysql -h 地址 -P 端口 -u 用户名 -p 密码SHOW PROCESSLIST -- 显示哪些线程正在运行 SHOW VARIABLES -- 显示…

HTTP 网络协议请求的消息结构,具体详解(2024-04-25)

一、简介 HTTP 是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。 HTTP 消息是客户端和服务器之间通信的基础,它们由一系列的文本行组成,遵循特定的格式和…

Oracle Analytics BIEE 操作方法(六)数据格式1:百分比

问题: 有如下公式,将数据显示为按行的百分比。此时数据显示只会有一位小数。想显示两位 解决方案 在分析中找到“高级”标签,将“分析XML”中内容复制出来 替换 将:minDigits“1” maxDigits“1” 替换为:minDigits…

Pytorch:模块(Module类)

文章目录 一、Module类介绍1、主要功能2、神经网络模型使用理解a.前向传播示例代码b.关键点 在 PyTorch 中,Module 是一个非常核心的概念,它是所有神经网络层和模型的基础类。torch.nn.Module 是构建所有神经网络的基类,在 PyTorch 中非常重要…

C++之类与对象(2)

目录 一、类的六个默认成员函数简介 二、构造函数 2.1 概念 2.2 特性 三、析构函数 3.1 概念 3.2 特性 四、拷贝构造函数 4.1 概念 4.2 特性 五、运算符重载 5.1 运算符重载 5.2 赋值运算符重载 5.3 前置和后置的重载 六、const成员 七、取地址及const取地址操作…

太速科技-多路PCIe的阵列计算全国产化服务器

多路PCIe的阵列计算全国产化服务器 多路PCIe的阵列计算全国产化服务器以国产化处理器(海光、飞腾ARM、算能RSIC V)为主板,扩展6-8路PCIe3.0X4计算卡; 计算卡为全国产化的AI处理卡(瑞星微ARM,算能AI&#x…

用Python和Pygame实现简单贪吃蛇游戏

1.pip安装pygame pygam插件安装 pip install 插件名字 # 安装 pip uninstall 插件名字 # 卸载 pip install 插件名字 -i 指定下载的镜像网址 pip show 插件名字 # 查看插件名字 pip install pygame -i https://pypi.tuna.tsinghua.edu.cn/simple pip show p…

Android14之修改编译vendor.img(二百零七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…