当前位置: 首页 > wzjs >正文

网网站建设的公司seo关键词优化公司

网网站建设的公司,seo关键词优化公司,常州网站建设工作室,哪个网站可以做顺风车目录 1. 前言 2. 增量式PID控制的基本原理 2.1 PID控制的基本概念 2.2 增量式PID控制的特点 3. 增量式PID控制的Python实现:温控系统 3.1 构建增量式PID控制器 3.2 使用增量式PID控制器 3.3 运行模拟 3.4 完整代码 4. 参数调整与优化 4.1 参数选择 4.2…

目录

1. 前言

2. 增量式PID控制的基本原理

2.1 PID控制的基本概念

2.2 增量式PID控制的特点

3. 增量式PID控制的Python实现:温控系统

3.1 构建增量式PID控制器

3.2 使用增量式PID控制器

3.3 运行模拟

3.4 完整代码 

4. 参数调整与优化

4.1 参数选择

4.2 参数调整方法

5. 总结


1. 前言

在工业控制和自动化领域,PID控制是一种非常经典的控制算法,广泛应用于温度、压力、速度等参数的调节。传统的PID控制算法直接计算控制量,而增量式PID控制则通过计算增量来调整控制量,具有计算简单、易于实现和适合数字控制等优点。本文将详细介绍增量式PID控制的原理,并通过Python代码实现一个完整的增量式PID控制器,帮助大家理解和应用这一技术。

传统PID可以去看:

《最最最基础常用的控制:PID【基础+代码实例:温控系统】》

2. 增量式PID控制的基本原理

2.1 PID控制的基本概念

PID控制是一种基于比例(Proportional)、积分(Integral)和微分(Derivative)的控制算法。它的基本思想是通过测量系统的当前值与目标值之间的误差,计算出控制量来调整系统,使误差趋近于零。

2.2 增量式PID控制的特点

增量式PID控制的核心在于计算控制量的增量,而不是直接计算控制量。其公式如下:

其实就是对PID公式求了个导,但是这样计算量更小。 

其中:

  • Δu(k) 是当前时刻的控制增量

  • e(k) 是当前时刻的误差

  • Kp​ 是比例系数

  • Ki​ 是积分系数

  • Kd​ 是微分系数

增量式PID控制的优点包括:

  1. 计算简单:只需要当前和前几次的误差值。

  2. 易于实现:适合数字控制系统。

  3. 抗积分饱和:通过增量调整,可以避免积分项过大导致的系统不稳定。

3. 增量式PID控制的Python实现:温控系统

还是用我们熟悉的温控系统

3.1 构建增量式PID控制器

下面是增量式PID控制器的Python实现代码:

class IncrementalPID:def __init__(self, kp, ki, kd):"""初始化增量式PID控制器:param kp: 比例系数:param ki: 积分系数:param kd: 微分系数"""self.kp = kpself.ki = kiself.kd = kdself.e_prev = [0, 0, 0]  # 保存最近三次的误差值def compute(self, target, current):"""计算控制增量:param target: 目标值:param current: 当前值:return: 控制增量"""# 计算误差e = target - current# 更新误差历史self.e_prev[2] = self.e_prev[1]self.e_prev[1] = self.e_prev[0]self.e_prev[0] = e# 计算增量控制量delta_u = (self.kp * (self.e_prev[0] - self.e_prev[1]) +self.ki * self.e_prev[0] +self.kd * (self.e_prev[0] - 2 * self.e_prev[1] + self.e_prev[2]))return delta_u

3.2 使用增量式PID控制器

为了验证增量式PID控制器的效果,我们构建一个简单的模拟环境,例如温度控制系统:

import matplotlib.pyplot as plt
import numpy as np# 模拟环境:温度控制系统
class TemperatureSystem:def __init__(self, initial_temp=20):self.temperature = initial_temp  # 初始温度self.max_temp = 100  # 最大温度限制def update(self, control_signal, dt=1,K=0.1, alpha=0.05):"""更新温度:param control_signal: 控制信号:param dt: 时间步长"""# 模拟温度变化:控制信号越大,温度上升越快self.temperature = self.temperature + K * (control_signal - alpha * self.temperature)# 限制温度不超过最大值self.temperature = min(self.temperature, self.max_temp)def get_temperature(self):return self.temperature

3.3 运行模拟

# 初始化PID控制器和温度系统
pid = IncrementalPID(kp=0.5, ki=0.1, kd=0.05)
system = TemperatureSystem(initial_temp=20)
target_temp = 60  # 目标温度
total_time = 100  # 总时间步长
dt = 1  # 时间步长# 记录温度变化
time_steps = []
temperatures = []
control_signals = []# 模拟控制过程
current_temp = system.get_temperature()
for t in range(total_time):# 计算控制增量delta_u = pid.compute(target_temp, current_temp)# 计算当前控制信号(假设初始控制信号为0)if t == 0:control_signal = delta_uelse:control_signal += delta_u# 更新系统状态system.update(control_signal, dt)current_temp = system.get_temperature()# 记录数据time_steps.append(t)temperatures.append(current_temp)control_signals.append(control_signal)# 绘制结果
plt.figure(figsize=(12, 6))
plt.subplot(2, 1, 1)
plt.plot(time_steps, temperatures)
plt.axhline(y=target_temp, color='r', linestyle='--', label='目标温度')
plt.xlabel('时间步长')
plt.ylabel('温度')
plt.title('温度变化')
plt.legend()plt.subplot(2, 1, 2)
plt.plot(time_steps, control_signals)
plt.xlabel('时间步长')
plt.ylabel('控制信号')
plt.title('控制信号变化')
plt.tight_layout()
plt.show()

3.4 完整代码 

完整代码如下方便调试:

import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc("font",family='YouYuan')class IncrementalPID:def __init__(self, kp, ki, kd):"""初始化增量式PID控制器:param kp: 比例系数:param ki: 积分系数:param kd: 微分系数"""self.kp = kpself.ki = kiself.kd = kdself.e_prev = [0, 0, 0]  # 保存最近三次的误差值def compute(self, target, current):"""计算控制增量:param target: 目标值:param current: 当前值:return: 控制增量"""# 计算误差e = target - current# 更新误差历史self.e_prev[2] = self.e_prev[1]self.e_prev[1] = self.e_prev[0]self.e_prev[0] = e# 计算增量控制量delta_u = (self.kp * (self.e_prev[0] - self.e_prev[1]) +self.ki * self.e_prev[0] +self.kd * (self.e_prev[0] - 2 * self.e_prev[1] + self.e_prev[2]))return delta_u# 模拟环境:温度控制系统
class TemperatureSystem:def __init__(self, initial_temp=20):self.temperature = initial_temp  # 初始温度self.max_temp = 100  # 最大温度限制def update(self, control_signal, dt=1,K=0.1, alpha=0.05):"""更新温度:param control_signal: 控制信号:param dt: 时间步长"""# 模拟温度变化:控制信号越大,温度上升越快self.temperature = self.temperature + K * (control_signal - alpha * self.temperature)# 限制温度不超过最大值self.temperature = min(self.temperature, self.max_temp)def get_temperature(self):return self.temperature# 初始化PID控制器和温度系统
pid = IncrementalPID(kp=0.5, ki=0.1, kd=0.05)
system = TemperatureSystem(initial_temp=20)
target_temp = 70  # 目标温度
total_time = 200  # 总时间步长
dt = 1  # 时间步长# 记录温度变化
time_steps = []
temperatures = []
control_signals = []# 模拟控制过程
current_temp = system.get_temperature()
for t in range(total_time):# 计算控制增量delta_u = pid.compute(target_temp, current_temp)# 计算当前控制信号(假设初始控制信号为0)if t == 0:control_signal = delta_uelse:control_signal += delta_u# 更新系统状态system.update(control_signal, dt)current_temp = system.get_temperature()# 记录数据time_steps.append(t)temperatures.append(current_temp)control_signals.append(control_signal)# 绘制结果
plt.figure(figsize=(12, 6))
plt.subplot(2, 1, 1)
plt.plot(time_steps, temperatures)
plt.axhline(y=target_temp, color='r', linestyle='--', label='目标温度')
plt.xlabel('时间步长')
plt.ylabel('温度')
plt.title('温度变化')
plt.legend()plt.subplot(2, 1, 2)
plt.plot(time_steps, control_signals)
plt.axhline(y=0, color='r', linestyle='--', label='0值')
plt.xlabel('时间步长')
plt.ylabel('控制信号')
plt.title('控制信号变化')
plt.tight_layout()
plt.legend()
plt.show()

4. 参数调整与优化

4.1 参数选择

  • 比例系数 Kp​:增大比例系数可以加快系统响应,但过大可能导致振荡。

  • 积分系数 Ki​:积分系数用于消除稳态误差,但过大可能导致系统不稳定。

  • 微分系数 Kd​:微分系数用于抑制超调,但过大可能导致系统响应变慢。

4.2 参数调整方法

  1. 试凑法:通过不断调整参数,观察系统响应,找到合适的参数组合。

  2. Ziegler-Nichols法:一种经典的经验公式,用于快速确定PID参数。

  3. 自适应调整:根据系统运行状态动态调整PID参数。

5. 总结

增量式PID控制是一种简单而有效的控制算法,特别适合数字控制系统。通过本文的介绍和代码实现,大家可以快速理解和应用增量式PID控制来应用这个同等效果计算量小的方法。在实际应用中,根据具体需求调整PID参数,可以实现更好的控制效果。我是橙色小博,关注我,一起在人工智能领域学习进步!


文章转载自:

http://tWykFQlH.rrwft.cn
http://SPqcDVQC.rrwft.cn
http://BjlgkkkB.rrwft.cn
http://71f9kjOY.rrwft.cn
http://NzQs0Bns.rrwft.cn
http://z6EGg6kc.rrwft.cn
http://yJ5TM2p6.rrwft.cn
http://2qy2eDYQ.rrwft.cn
http://cCRHLjA6.rrwft.cn
http://Ga5AHTbv.rrwft.cn
http://vnej19yS.rrwft.cn
http://7LgM3BkI.rrwft.cn
http://yc87JRUH.rrwft.cn
http://8daUfHgt.rrwft.cn
http://bWgsqsbq.rrwft.cn
http://5QiBKGtq.rrwft.cn
http://zPxUi2aP.rrwft.cn
http://5eaWtw3U.rrwft.cn
http://5PabhF5D.rrwft.cn
http://LN2yjIkC.rrwft.cn
http://WnKSzlJz.rrwft.cn
http://rEPkvjRx.rrwft.cn
http://0lD9d01k.rrwft.cn
http://vrBCs0mx.rrwft.cn
http://aokLZsg0.rrwft.cn
http://HLSqM3I9.rrwft.cn
http://l4w7iFeD.rrwft.cn
http://MIUVwuJg.rrwft.cn
http://liHZTN6C.rrwft.cn
http://xW2FEsL0.rrwft.cn
http://www.dtcms.com/wzjs/669550.html

相关文章:

  • 网站开发法律可行性semir是什么意思
  • 郑州达云通网站建设公司有没有专门帮人做图的网站
  • 网站推广有哪些方案响应式网站设计多少钱
  • 移动互联网站开发与维护百度代理推广
  • 做网站找谁好怀化公积金网站
  • 公司网站建设费维护费会计分录自己建的网站能赚钱吗
  • 做一年的网站维护价格哪些网站做外链好
  • 康复网站模板怎么做欧美网站模板
  • 网站建设设wordpress 升级 无法创建目录
  • 在线做c语言题目的网站seo顾问达人
  • 网站搭建设计 是什么菏泽建设信息网
  • 视频网站后台功能wordpress拖曳组件
  • 河北美丽乡村建设网站旅游网站需求分析怎么做的
  • 淘宝网站制作公司哪家好绵阳建设工程网
  • 请列举常见的网站推广方法贷款类网站怎样做
  • 想建网站须要什么条件优化关键词排名优化公司
  • 快速网站开发课程商业网站的规划和设计
  • 球类网站如何做宣传网站建设中英文
  • 织梦网站如何做301跳转单页网站订单系统怎么改邮箱
  • 网站图片做伪静态思帽网站建设
  • 网站程序是什么意思海外网站如何做用户实名认证
  • 甘肃省住房和城乡建设厅官方网站如何做网站客户案例
  • 免费淘宝客网站建设黑龙江城乡建设厅网站
  • 笔记本怎么建设网站制作一个app
  • 珠海建设改革有哪些网站网页模板下载html
  • 前端做的网站手机搜索和网站搜索的排名
  • 大气网站首页如何自己做网站手机
  • 河南睢县筑宇建设网站深圳网站设计 制作
  • 做网站确定什么主题好seo排名的公司
  • 个人网站备案电话访谈python编程语言大全