PID、LQR、MPC三者的原理及区别

一、PID(比例-积分-微分控制器)

原理:PID(Proportion Integral Differential)控制器基于控制偏差(即期望值与实际值之间的差值)来计算控制输入。它由三部分组成:

  • 比例(P):与当前偏差成正比,用于快速减小偏差。
  • 积分(I):与偏差的累积成正比,用于消除长期偏差,确保系统最终能达到期望值。
  • 微分(D):与偏差变化率成正比,用于预测未来偏差,提高系统响应速度和稳定性。

特点:

  • 不需要系统模型。
  • 实现简单,调节方便。
  • 适用于广泛的控制系统。
  • 难以处理复杂、高度非线性的系统。

二、LQR(线性二次调节器)

原理:LQR(Linear Quadratic Regulator)是一种最优控制策略,旨在最小化一个代价函数。代价函数通常包括系统状态与期望状态之间的偏差(二次项以确保对偏差的平方做出惩罚)和控制输入的成本。LQR假定系统是线性的并且目标函数是二次的,通过求解Riccati方程,计算出让代价函数最小化的控制律。

特点:

  • 需要精确的系统线性模型。
  • 通过数学优化求得控制策略。
  • 适用于线性或近似线性系统。
  • 不直接处理系统约束。

三、MPC(模型预测控制)

原理:MPC(model predictive control)基于系统模型预测未来一段时间内的行为,通过优化一个包含未来行为的代价函数来计算控制输入。每个控制周期内,只实施当前时刻计算得到的控制输入,然后基于新的测量数据再次进行预测和优化,形成闭环控制。

特点:

  • 需要系统的模型,可以是线性或非线性的。
  • 能够处理系统的约束(输入、输出、状态等)。
  • 计算成本高,特别是对于大规模或非线性问题。
  • 适用于复杂系统和约束条件严格的场景。

四、对比

  • 应用范围:
    • PID:适用范围最广,尤其是在工业控制系统中。
    • LQR:更适用于需要精确模型和优化性能的场合,主要是线性或近似线性系统。
    • MPC:适用于复杂、高度非线性系统,特别是当系统存在严格约束时。
  • 计算复杂性:
    • PID:最低。
    • LQR:中等,需要求解Riccati方程。
    • MPC:最高,每个控制周期都需进行在线优化。
  • 模型依赖性:
    • PID:不依赖模型。
    • LQR:需要精确的线性模型。
    • MPC:需要模型,可以是线性或非线性的。
  • 处理约束能力:
    • PID:通常不直接处理约束。
    • LQR:不直接处理约束。
    • MPC:能够直接处理约束,是其主要优点之一。

总而言之,这三种控制策略在面对不同类型的控制需求和系统特性时各有千秋。选用哪种策略取决于系统的复杂度、性能需求、计算资源以及对约束的处理需要。

相关推荐

  1. PID、LQR、MPC三者原理区别

    2024-03-16 01:30:03       91 阅读
  2. HTTP和HTTPS区别HTTPS工作原理

    2024-03-16 01:30:03       32 阅读
  3. CPU和GPU工作原理区别

    2024-03-16 01:30:03       55 阅读
  4. Mybatis和Hibernate作用区别底层原理分析

    2024-03-16 01:30:03       34 阅读
  5. Spring、SpringBoot、SpringCloud三者区别

    2024-03-16 01:30:03       55 阅读
  6. Ajax、Fetch、Axios三者区别

    2024-03-16 01:30:03       42 阅读
  7. B树、B+树B*树原理、作用区别

    2024-03-16 01:30:03       41 阅读
  8. Spring、SpringMVC、Springboot三者区别和联系

    2024-03-16 01:30:03       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-16 01:30:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-16 01:30:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-16 01:30:03       87 阅读
  4. Python语言-面向对象

    2024-03-16 01:30:03       96 阅读

热门阅读

  1. mybatis转义字符

    2024-03-16 01:30:03       45 阅读
  2. 563: String(python)

    2024-03-16 01:30:03       45 阅读
  3. Solidity Uniswap V2 library contract

    2024-03-16 01:30:03       42 阅读
  4. php中register_shutdown_function 函数用法详解

    2024-03-16 01:30:03       41 阅读
  5. 不学51直接学stm32可以吗?学stm32需要哪些基础?

    2024-03-16 01:30:03       42 阅读
  6. 学习vue3第六张(vue3 中 computed watch watchEffect)

    2024-03-16 01:30:03       33 阅读
  7. C++超详细知识点(五):类的友元函数和友元类

    2024-03-16 01:30:03       42 阅读
  8. GB/T 36584-2018 屋面瓦检测

    2024-03-16 01:30:03       44 阅读
  9. AI辅助信息技术发展

    2024-03-16 01:30:03       38 阅读
  10. C++的线程介绍

    2024-03-16 01:30:03       45 阅读
  11. 【Python3】观察者模式

    2024-03-16 01:30:03       46 阅读
  12. css页面布局

    2024-03-16 01:30:03       45 阅读