三种智能算法优化PID参数软件,MATLABAPP开发

今天的主题是:三种智能算法优化常见传递函数的PID参数,采用MATLAB APP Designer 开发。提供代码源程序,可以自行修改源代码(不是封装软件)

这个软件基本涵盖了所有的传递函数类型,传递函数的参数简单易改。采用了三种不同的算法优化PID参数,包括灰狼,粒子群,麻雀算法,且做了简单的对比。结果也采用表格的方式,一目了然。

画面风格如下:

三种智能算法优化PID参数软件,MATLABAPP开发_第1张图片

软件一共分为三部分,接下来对每部分展开细讲:

第一部分: 被控对象模型参数设置

三种智能算法优化PID参数软件,MATLABAPP开发_第2张图片

这一部分有一个选项切换卡,点击这个选项切换卡可以切换传递函数,传递函数都是最常见的,基本上包含了所有传递函数的类型。

选择好相应的传递函数后,大家就可以自行修改每一个传递函数对应的参数了。剩余四个传递函数的界面如下:

三种智能算法优化PID参数软件,MATLABAPP开发_第3张图片

除此之外,在点击开始运行之前,最好要先手动设置一个P,I,D参数,也就是这里的Kp,Ti,Kd,设置好之后,点击运行按钮,即可开始采用三种优化算法对P,I,D参数进行优化。

点击重置按钮,会将已经设置的参数全部归零。

第二部分: SSA-PSO-GWO优化PID参数---------单位阶跃响应

这一部分是三种算法的优化结果展示。分别为麻雀算法,粒子群算法,灰狼算法,最后一幅图是三个曲线图的综合图。

这里加了一个Running指示灯,当点击运行时,指示灯会变成绿色,当运行结束后,指示灯会变为灰色。

三种智能算法优化PID参数软件,MATLABAPP开发_第4张图片

这里说一下三种智能算法采用的目标函数:选择常用的ITAE指标和控制量动作的加权。这么做的目的可避免控制量动作过大,造成控制器损坏。目标函数也很方便修改。

第三部分: 三个算法优化后,阶跃响应曲线的参数表

参数表采用表格的方式呈现,一目了然。参数包括:P,I,D参数,超调量,峰值时间,上升时间,调节时间。

847b66cab924dd19755a719f902a7af1.png

代码:

%Ⅰ型
            %if flag~=2 && flag~=3 && flag~=3 && flag~=4 && flag~=5
            if flag==1
                K=app.KEditField.Value;
                assignin("base",'K',K)
                T=app.TEditField.Value;
                assignin("base",'T',T)
                n=app.nEditField.Value;
                assignin("base",'n',n)
                PI_1
            end
            %Ⅱ型
            if flag==2
                K=app.KEditField_2.Value;
                assignin("base",'K',K)
                Tz=[app.T1EditField.Value app.T2EditField.Value app.T3EditField.Value app.T4EditField.Value app.T5EditField.Value];
                assignin("base",'Tz',Tz)
                n=app.nEditField_2.Value;
                assignin("base",'n',n)
                PI_2
            end
            %Ⅲ型
            if flag==3
                K=app.KEditField_3.Value;
                assignin("base",'K',K)
                T=app.TEditField_2.Value;
                assignin("base",'T',T)
                n=app.nEditField_3.Value;
                assignin("base",'n',n)
                tt=app.mEditField_2.Value;
                assignin("base",'tt',tt)
                PI_3
            end
            %Ⅳ型
            if flag==4
                K1=app.K1EditField.Value;
                assignin("base",'K1',K1)
                T1=app.T1EditField_2.Value;
                assignin("base",'T1',T1)
                n1=app.n1EditField.Value;
                assignin("base",'n1',n1)
                tt1=app.m1EditField.Value;
                assignin("base",'tt1',tt1)


                K2=app.K2EditField.Value;
                assignin("base",'K2',K2)
                T2=app.T2EditField_2.Value;
                assignin("base",'T2',T2)
                n2=app.n2EditField.Value;
                assignin("base",'n2',n2)
                tt2=app.m2EditField.Value;
                assignin("base",'tt2',tt2)
                PI_4
            end
            %V型
            if flag==5
                K=app.KEditField_4.Value;
                assignin("base",'K',K)
                T=app.TEditField_3.Value;
                assignin("base",'T',T)
                n=app.nEditField_4.Value;
                assignin("base",'n',n)
                tt=app.mEditField.Value;
                assignin("base",'tt',tt)
                PI_5
            end

获取完整代码方式:后台回复关键词获取。

关键词:PIDAPP

你可能感兴趣的:(前端,python,linux,数据库,javascript)