m基于simulink的PID控制器,模糊PID控制器以及MPC控制器性能对比仿真

简介: m基于simulink的PID控制器,模糊PID控制器以及MPC控制器性能对比仿真

1.算法仿真效果
matlab2022a仿真结果如下:

b0d92a2eab55d1564d8710aa4b19486d_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

   从图仿真结果可知,PID控制器,其超调较大,且控制器进入收敛状态时间也最长,。对于模糊PID控制器,其超调小于PID控制器,且收敛速度也较快,因此其性能优于传统的PID控制器。对于MPC控制器,其超调最小,控制器进入稳定状态速度也最快,因此其控制性能最优,但是MPC的上升时间较慢,大约需要0.1s左右完成。但在实际情况下,对控制对象起到影响的主要是控制器的超调和收敛稳定时间两个因素。因此,MPC控制器的控制效果最优,其次为模糊PID控制器,最次是PID控制器。

1e6854973710c3fa3af5780f7388a948_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
8c160999d412d2c92a002625b63421a3_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
47c0ee60fcb70a0eea2efb135919c60e_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要
根据PID控制器的基本原理,PID控制器的结构如下图所示:
9e53bae35f1f227972f27c27af0be01b_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

  PID控制器的比例调整参数,积分调整参数以及微分调整参数对系统的控制效果有着十分明显的影响。随着微分调整参数的变小,PD控制器的阶跃响应有较大的超调量,但是系统的控制响应速度较慢。反之,随着微分调整参数不断变大,系统超调减小,系统的控制响应速度较快。在本课题中,控制器的参数设置为Kp= 1000000,Ki= 10000,Kd=15000。

  模糊PID控制器的基本结构如下所示:

5e8cc83893a08a1521751f511d61d948_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

    在实现模糊PID控制器之前,我们首先需要设计模糊规则表,在本课题中,我们选取七个语言等级作为模糊控制器的语言等级,即负大(NB)、负中(NM)、负小(NS)、零(ZO)、正小(PS)、正中(PM)、正大(PB)。然后模糊控制器的输入为E和Ec,输出为PID控制器的、、的值的调整值。我们这里采用的隶属函数为系统中的NB和PB采用正态型分布;NM、NS、Z0、Ps、PM则采用三角形分布。 完成隶属函数构建之后,开始设计模糊规则,模糊规则设置原则为:当输入误差E和Ec较大的时候,则应该快速消除误差,当输入误差E和Ec较小的时候,这主要控制目的是防止超调过大。因此我们构建如下的模糊规则表:

280c2098e5b9ce94d38d33d161dfabd2_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

模糊fis规则文件如下:

Name='files'
Type='mamdani'
Version=2.0
NumInputs=2
NumOutputs=3
NumRules=49
AndMethod='min'
OrMethod='max'
ImpMethod='min'
AggMethod='max'
DefuzzMethod='centroid'

[Input1]
Name='E'
Range=[-6 6]
NumMFs=7
MF1='NB':'gaussmf',[0.9716 -5.856]
MF2='NM':'trimf',[-6 -4 -2]
MF3='NS':'trimf',[-4 -2 0]
MF4='ZO':'trimf',[-2 0 2]
MF5='PS':'trimf',[0 2 4]
MF6='PM':'trimf',[2 4 6]
MF7='PB':'gaussmf',[0.8494 6]

[Input2]
Name='Ec'
Range=[-3 3]
NumMFs=7
MF1='NB':'gaussmf',[0.4247 -3]
MF2='NM':'trimf',[-3 -2 -1]
MF3='NS':'trimf',[-2 -1 0]
MF4='ZO':'trimf',[-1 0 1]
MF5='PS':'trimf',[0 1 2]
MF6='PM':'trimf',[1 2 3]
MF7='PB':'gaussmf',[0.4247 3]

[Output1]
Name='Kp'
Range=[0 1]
NumMFs=7
MF1='NB':'gaussmf',[0.07079 0]
MF2='NM':'trimf',[0 0.1667 0.3333]
MF3='NS':'trimf',[0.1667 0.3333 0.5]
MF4='ZO':'trimf',[0.3333 0.5 0.6667]
MF5='PS':'trimf',[0.5 0.6667 0.8333]
MF6='PM':'trimf',[0.6667 0.8333 1]
MF7='PB':'gaussmf',[0.07079 1]

[Output2]
Name='Ki'
Range=[0 1]
NumMFs=7
MF1='NB':'gaussmf',[0.07078 0]
MF2='NM':'trimf',[0 0.1667 0.3333]
MF3='NS':'trimf',[0.1667 0.3333 0.5]
MF4='ZO':'trimf',[0.3333 0.5 0.6667]
MF5='PS':'trimf',[0.5 0.6667 0.8333]
MF6='PM':'trimf',[0.6667 0.8333 1]
MF7='PB':'gaussmf',[0.07078 1]

[Output3]
Name='Kd'
Range=[0 1]
NumMFs=7
MF1='NB':'gaussmf',[0.07078 0]
MF2='NM':'trimf',[0 0.1667 0.3333]
MF3='NS':'trimf',[0.1667 0.3333 0.5]
MF4='ZO':'trimf',[0.3333 0.5 0.6667]
MF5='PS':'trimf',[0.5 0.6667 0.8333]
MF6='PM':'trimf',[0.6667 0.8333 1]
MF7='PB':'gaussmf',[0.07078 1]

[Rules]
1 1, 7 1 5 (1) : 1
1 2, 7 1 3 (1) : 1
1 3, 6 2 1 (1) : 1
1 4, 6 2 1 (1) : 1
1 5, 5 3 1 (1) : 1
1 6, 4 4 2 (1) : 1
1 7, 4 4 5 (1) : 1
2 1, 7 1 5 (1) : 1
2 2, 7 1 3 (1) : 1
2 3, 6 2 1 (1) : 1
2 4, 5 3 2 (1) : 1
2 5, 5 3 2 (1) : 1
2 6, 4 4 3 (1) : 1
2 7, 3 4 4 (1) : 1
3 1, 6 1 4 (1) : 1
3 2, 6 2 3 (1) : 1
3 3, 6 3 2 (1) : 1
3 4, 5 3 2 (1) : 1
3 5, 4 4 3 (1) : 1
3 6, 3 5 3 (1) : 1
3 7, 3 5 4 (1) : 1
4 1, 6 2 4 (1) : 1
4 2, 6 2 3 (1) : 1
4 3, 5 3 3 (1) : 1
4 4, 4 4 3 (1) : 1
4 5, 3 5 3 (1) : 1
4 6, 2 6 3 (1) : 1
4 7, 2 6 4 (1) : 1
5 1, 5 2 4 (1) : 1
5 2, 5 3 4 (1) : 1
5 3, 4 4 4 (1) : 1
5 4, 3 5 4 (1) : 1
5 5, 3 5 4 (1) : 1
5 6, 2 6 4 (1) : 1
5 7, 2 7 4 (1) : 1
6 1, 5 4 7 (1) : 1
6 2, 4 4 3 (1) : 1
6 3, 3 5 5 (1) : 1
6 4, 2 6 5 (1) : 1
6 5, 2 6 5 (1) : 1
6 6, 2 7 5 (1) : 1
6 7, 1 7 7 (1) : 1
7 1, 4 4 7 (1) : 1
7 2, 4 4 6 (1) : 1
7 3, 2 5 6 (1) : 1
7 4, 2 6 6 (1) : 1
7 5, 2 6 5 (1) : 1
7 6, 1 7 5 (1) : 1
7 7, 1 7 7 (1) : 1

根据MPC控制器的基本原理,MPC控制器的基本结构如下图所示:

ba71a578b019080076d8d4eca430ceef_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

    MPC控制器结构较为复杂,这里我们采用SIMULINK自带的MPC工具箱来实现该结构,我们构建如下的MPC仿真模型: 

   这里,空间状态变量矩阵A,B,C,D为6*6维度的矩阵。本文通过如下方法,将SIMULINK建立的3-PUU仿真模型转换为空间状态方程。分别通过一个阶跃响应输入到公式3的空间状态方程中和3-PUU并联机构SIMULINK仿真模型,通过对比空间状态方程输出和3-PUU并联机构SIMULINK仿真模型输出是否接近,来计算对应的空间状态变量矩阵A,B,C,D,在本课题中,我们通过测试得到空间状态变量矩阵A,B,C,D分别为:

32b2ebef86c610260892d6a07e72eb14_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

3.MATLAB核心程序

3f08acd6453d17e9a45572b9bf97850d_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
7c446cd76d0442babd5e1aeca3492d23_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
0a890d2a0df16df25fe8016d940c39e8_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png


load piderr.mat
t1=ans.Time;
d1=ans.Data(:,1);

load fuzzypiderr.mat
t2=ans.Time;
d2=ans.Data(:,1);

load mpc.mat
t3=ans.Time;
d3=ans.Data(:,1);


figure;
plot(t1(1:end),d1(1:end),'r');
hold on
plot(t2(1:end),d2(1:end),'b');
hold on
plot(t3(1:end),d3(1:end),'g','LineWidth',2);
hold on
grid on
legend('PID','Fuzzy PID','MPC');
xlabel('time(s)');
ylabel('error');
xlim([0,1]);
相关文章
|
3天前
|
人工智能 自然语言处理 Shell
深度评测 | 仅用3分钟,百炼调用满血版 Deepseek-r1 API,百万Token免费用,简直不要太爽。
仅用3分钟,百炼调用满血版Deepseek-r1 API,享受百万免费Token。阿里云提供零门槛、快速部署的解决方案,支持云控制台和Cloud Shell两种方式,操作简便。Deepseek-r1满血版在推理能力上表现出色,尤其擅长数学、代码和自然语言处理任务,使用过程中无卡顿,体验丝滑。结合Chatbox工具,用户可轻松掌控模型,提升工作效率。阿里云大模型服务平台百炼不仅速度快,还确保数据安全,值得信赖。
157353 24
深度评测 | 仅用3分钟,百炼调用满血版 Deepseek-r1 API,百万Token免费用,简直不要太爽。
|
5天前
|
人工智能 API 网络安全
用DeepSeek,就在阿里云!四种方式助您快速使用 DeepSeek-R1 满血版!更有内部实战指导!
DeepSeek自发布以来,凭借卓越的技术性能和开源策略迅速吸引了全球关注。DeepSeek-R1作为系列中的佼佼者,在多个基准测试中超越现有顶尖模型,展现了强大的推理能力。然而,由于其爆火及受到黑客攻击,官网使用受限,影响用户体验。为解决这一问题,阿里云提供了多种解决方案。
17017 37
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
PAI Model Gallery 支持云上一键部署 DeepSeek-V3、DeepSeek-R1 系列模型
DeepSeek 系列模型以其卓越性能在全球范围内备受瞩目,多次评测中表现优异,性能接近甚至超越国际顶尖闭源模型(如OpenAI的GPT-4、Claude-3.5-Sonnet等)。企业用户和开发者可使用 PAI 平台一键部署 DeepSeek 系列模型,实现 DeepSeek 系列模型与现有业务的高效融合。
|
5天前
|
并行计算 PyTorch 算法框架/工具
本地部署DeepSeek模型
要在本地部署DeepSeek模型,需准备Linux(推荐Ubuntu 20.04+)或兼容的Windows/macOS环境,配备NVIDIA GPU(建议RTX 3060+)。安装Python 3.8+、PyTorch/TensorFlow等依赖,并通过官方渠道下载模型文件。配置模型后,编写推理脚本进行测试,可选使用FastAPI服务化部署或Docker容器化。注意资源监控和许可协议。
1311 8
|
13天前
|
人工智能 搜索推荐 Docker
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
DeepSeek R1 + LobeChat + Ollama:快速本地部署模型,创建个性化 AI 助手
3416 117
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
|
8天前
|
人工智能 自然语言处理 API
DeepSeek全尺寸模型上线阿里云百炼!
阿里云百炼平台近日上线了DeepSeek-V3、DeepSeek-R1及其蒸馏版本等六款全尺寸AI模型,参数量达671B,提供高达100万免费tokens。这些模型在数学、代码、自然语言推理等任务上表现出色,支持灵活调用和经济高效的解决方案,助力开发者和企业加速创新与数字化转型。示例代码展示了如何通过API使用DeepSeek-R1模型进行推理,用户可轻松获取思考过程和最终答案。
|
5天前
|
人工智能 自然语言处理 程序员
如何在通义灵码里用上DeepSeek-V3 和 DeepSeek-R1 满血版671B模型?
除了 AI 程序员的重磅上线外,近期通义灵码能力再升级全新上线模型选择功能,目前已经支持 Qwen2.5、DeepSeek-V3 和 R1系列模型,用户可以在 VSCode 和 JetBrains 里搜索并下载最新通义灵码插件,在输入框里选择模型,即可轻松切换模型。
934 14
|
12天前
|
API 开发工具 Python
阿里云PAI部署DeepSeek及调用
本文介绍如何在阿里云PAI EAS上部署DeepSeek模型,涵盖7B模型的部署、SDK和API调用。7B模型只需一张A10显卡,部署时间约10分钟。文章详细展示了模型信息查看、在线调试及通过OpenAI SDK和Python Requests进行调用的步骤,并附有测试结果和参考文档链接。
1938 9
阿里云PAI部署DeepSeek及调用
|
9天前
|
人工智能 数据可视化 Linux
【保姆级教程】3步搞定DeepSeek本地部署
DeepSeek在2025年春节期间突然爆火出圈。在目前DeepSeek的网站中,极不稳定,总是服务器繁忙,这时候本地部署就可以有效规避问题。本文以最浅显易懂的方式带读者一起完成DeepSeek-r1大模型的本地部署。
|
12天前
|
缓存 自然语言处理 安全
快速调用 Deepseek API!【超详细教程】
Deepseek 强大的功能,在本教程中,将指导您如何获取 DeepSeek API 密钥,并演示如何使用该密钥调用 DeepSeek API 以进行调试。

热门文章

最新文章