【Simulink】粒子群算法(PSO)整定PID参数(附代码和讲解)

您所在的位置:网站首页 matlab的pid参数自整定 【Simulink】粒子群算法(PSO)整定PID参数(附代码和讲解)

【Simulink】粒子群算法(PSO)整定PID参数(附代码和讲解)

2023-09-13 02:30| 来源: 网络整理| 查看: 265

目录 0.背景1.粒子群算法1.2.算法步骤1.3.算法举例 2.PID自整定2.1.基于M文件编写的PID参数自整定*2.2.复杂系统的PID自整定(基于simulink仿真)2.2.1.PSO优化PID的过程详解2.2.2.在PSO优化过程中修改参数价值权重 阅读前必看:

本代码基于MATLAB2017a版本,如果版本不同可能会报错请从set_para.m文件开始运行,其他M文件(+下载的资源包里面的slx文件)放在一个文件夹每次迭代都会打印出来,如果运行时间过长怀疑程序死机可以观察迭代次数是否有变化最后会输出3幅图(figure)slx文件下载链接:https://download.csdn.net/download/weixin_44044411/11609837

混合粒子群算法链接:https://blog.csdn.net/weixin_44044411/article/details/103638611?spm=1001.2014.3001.5502 MATALB的自带的粒子群优化器来了:particleswarm

0.背景

\qquad 调整PID参数时,我们常常需要按照各种方法查各种表,还要根据建立的数学模型和之前的结果做人工调整。这个过程常常是漫长的,而且最终得到的很可能也不是最优的参数。若系统的参数有改动,又要人工再调一次。而3个参数6个方向的调整,如果输入的变量很多,那么调节的可能性组合就更多了,这个工作常常不是非专业人士所能胜任的。 \qquad 现在我给大家介绍一种不需要知道内部原理也可以调整PID参数的方法,而且调整的思路是所需即所得——你需要的参数是什么样子的,这个算法就会往这个方向调整PID参数。如果这个系统是多输入多输出的,我需要让A输出的超调小一些,而B输出的调节时间可以尽量大一些,只需要调整我们的评价函数就可以让算法自动调参以满足客户需求了。那这样的算法使用起来是不是很容易呢?

1.粒子群算法

##1.1.算法简介 \qquad 粒子群算法(PSO)于1995年提出,和遗传算法一样,也是一种群体迭代算法,不同的是,粒子群算法需要整定的参数更少,不存在交叉和变异过程,所以收敛速度更快。 \qquad 由于是群体迭代算法,因此该算法一般做成并行的。如果做成串行的,也是可以运行的,就是会随着种群规模的增大越来越慢。对于Python运用熟练的朋友可以利用Python做成并行的,对于不熟悉并行算法的朋友,直接使用MATLAB就好了,因为MATLAB的矩阵运算已经集成了并行算法。 \qquad 为了让大家理解,我们做一个很形象的比喻。将我们的粒子群比作一群可以互相通讯的鸟,每只鸟不知道食物的具体位置,但是可以根据嗅觉知道离食物的距离和自己在地图中的位置。种群中的任意2只鸟均可以知道对方离食物的距离和对方的具体位置。假设每只鸟的飞行都是有惯性的,而每只鸟都会根据自己距离食物的距离和位置及其他鸟距离食物的距离和位置选择下一次的飞行方向。最终,所有鸟都会在信息交换的基础上,汇聚在食物地点。 \qquad 这只是对粒子群算法的一个形象的比喻,不必过多计较该模型的现实性,闲言少叙,让我们进入 算法步骤 \color{red}算法步骤 算法步骤。

1.2.算法步骤

【step1】确定参数维度 N \color{blue}{N} N、参数范围(即每只鸟的初始位置),确定惯性系数 c 1 , c 2 , w c_1,c_2,w c1​,c2​,w,确定种群规模m,迭代次数n。 每个粒子的初始位置是随机的,设输入向量 x = ( x 1 , x 2 , . . . , x N ) T x=(x_1,x_2,...,x_N)^T x=(x1​,x2​,...,xN​)T必须满足参数范围限制为: { x m i n ( 1 ) < x 1 < x m a x ( 1 ) x m i n ( 2 ) < x 2 < x m a x ( 2 ) . . . x m i n ( N ) < x 1 < x m a x ( N ) \begin{cases}x_{min}^{(1)}



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3