寻找PID系统优化参数问题的解决方案
源代码:
1 nump=[4]; 2 denp=[1 6 8 4]; 3 sysGp=tf(nump,denp); 4 den=[1 0]; 5 t=0:0.01:8; 6 for K=3:0.2:5 7 for a=0.1:0.1:3 8 num=[K 2*K*a K*a^2]; 9 sysG=tf(num,den); 10 sysGz=feedback(series(sysG,sysGp),1); 11 sysY=step(sysGz,t); 12 maxY=max(sysY); 13 if maxY<2.60 & maxY>2.55 14 plot(t,sysY); 15 grid; 16 title('Unit-Step Response'); 17 xlabel('t(sec)'); 18 ylabel('Output sysY'); 19 solution=[K,a,maxY] 20 break 21 end 22 end 23 if maxY>2.55 & maxY<2.60 24 break; 25 end 26 end
代码非常简单,就是对给定传递函数的系统选择合适的PID控制参数,执行后,没有做图出来,很明显说明第13行的判断条件没有成立,但是,却得到了一个solution =5.0000 3.0000 2.9784错误的结果,主要原因是,前面所有循环执行后,也没有找到满足条件的点,系统就自作聪明的把最后一个点当成是结果返回了。而条件需要满足最大值在(2.55,2.60)的范围也明显违背了。为了解决这个问题,需要对循环的条件进行修改,代码如下:
1 nump=[4]; 2 denp=[1 6 8 4]; 3 sysGp=tf(nump,denp); 4 den=[1 0]; 5 t=0:0.01:8; 6 for K=[3:0.2:5 NaN] 7 for a=[0.1:0.1:3 NaN] 8 num=[K 2*K*a K*a^2]; 9 sysG=tf(num,den); 10 sysGz=feedback(series(sysG,sysGp),1); 11 sysY=step(sysGz,t); 12 maxY=max(sysY); 13 if maxY<2.60 & maxY>2.55 14 plot(t,sysY); 15 grid; 16 title('Unit-Step Response'); 17 xlabel('t(sec)'); 18 ylabel('Output sysY'); 19 %solution=[K,a,maxY] 20 break 21 end 22 end 23 if maxY>2.55 & maxY<2.60 24 break; 25 end 26 end 27 solution=[K,a,maxY]
solution =
NaN NaN NaN
这下结果就说明没有找到满足条件的值,说明需要进一步优化。经过试错,发现修改K与a的范围,这下就可以找到满足的条件的点了。当K=(0.4,5), 便能找到满足条件的点,代码如下:
1 nump=[4]; 2 denp=[1 6 8 4]; 3 sysGp=tf(nump,denp); 4 den=[1 0]; 5 t=0:0.01:8; 6 for K=[0.4:0.2:5 NaN] 7 for a=[0.1:0.1:3 NaN] 8 num=[K 2*K*a K*a^2]; 9 sysG=tf(num,den); 10 sysGz=feedback(series(sysG,sysGp),1); 11 sysY=step(sysGz,t); 12 maxY=max(sysY); 13 if maxY<2.60 & maxY>2.55 14 plot(t,sysY); 15 grid; 16 title('Unit-Step Response'); 17 xlabel('t(sec)'); 18 ylabel('Output sysY'); 19 %solution=[K,a,maxY] 20 break 21 end 22 end 23 if maxY>2.55 & maxY<2.60 24 break; 25 end 26 end 27 solution=[K,a,maxY]
输出波形如下:
发现系统并不稳定,单位阶跃响应是发散的,还有进一步优化的空间。
人就像是被蒙着眼推磨的驴子,生活就像一条鞭子;当鞭子抽到你背上时,你就只能一直往前走,虽然连你也不知道要走到什么时候为止,便一直这么坚持着。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具