热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

基于BP神经网络的PID控制器

BP-PID神经网络控制器目录BP-PID神经网络控制器1.增量式PID2.BP-PID推导3.用于稳定模型的BP-PID仿真4.总结1.增量式PIDPID控制器是目前在实际控制

BP-PID神经网络控制器


目录

    • BP-PID神经网络控制器
      • 1. 增量式PID
      • 2. BP-PID推导
      • 3.用于稳定模型的BP-PID仿真
      • 4.总结


1. 增量式PID

PID控制器是目前在实际控制系统中使用最多的控制方法,增量式PID通过位置式PID相减得到,不用做累加计算,更加适合于计算机运算。增量式PID表达式为:
增量式PID


2. BP-PID推导

BP神经网络是比较简单的前馈神经网络,包括正向计算输出结果和反向球梯度更新参数两个过程,网络在这里的作用就是拟合一个非线性关系,简单的来说就是根据系统的输出误差调整PID控制器参数。已有学者证明三层BP网络足以拟合任何非线性关系,以下来推导这里过程。
BP-PID正向过程
BP-PID的反向过程

这里只是简单的说明BP-PID的工作流程,至于输入层-中间层的参数梯度,不再赘述,详细的文献多不胜数,原理上不做多余的说明。需要说明的是,我们的目标是使输出值接近指定值,在反向求梯度的过程中,模型输出对于模型输入的导数采用的符号矩阵近似,当然也有文献将这里过程通过利用BP神经网络辨识模型从而给出实际值。另外,对于多输入多输出过程,注意求导过程中的前后关系,也就是注意向量对向量的导数以及标量对向量的导数。


3.用于稳定模型的BP-PID仿真

设SISO的系统,离散表达式为:
系统模型
模型出自<基于BP神经网络的PID控制系统研究与设计_李捷菲>论文,这里网络结构同样采用论文中的4-5-3结构,学习率0.3,网络初值[-1,1],输入为参考信号,实际信号,误差,偏置项1.激活函数采用双曲函数。
仿真结果如下:
输出信号与参考信号
PID参数变化
需要注意的是,我实验了好几次才得到一次可行的实验结果,主要是网络初值影响的。


4.总结

BP-PID网络需要注意的一些事项:


  1. 网络初值的选择问题,有文献采用寻优算法给定初值,但是对于初值的具体范围,我没有发现有什么好的方法。
  2. 网络的输出范围,本例的输出范围0-1,实际中PID参数不可能只在0-1之间变化,可以更改最后一层激活函数或是接一个增益层。
  3. 对于不稳定的适应能力,一般来说可以首先计算能够使系统稳定的PID参数范围,我也尝试过采用镇定器先让系统整定,然后在用PID完成跟踪,也是可行的,但是镇定器的镇定程度需要调整,过度的整定可能使系统偏向于镇定而不是跟踪。
  4. 执行器饱和问题,这里PID输出是没有考虑执行器饱和的,在实际系统中是不可原谅的,笔者尝试过在输出参数层后增加一层网络完成输出约束。
  5. 对于梯度消失问题,尽管有一些方法通过改进学习方式、激活函数形式来改善这一问题,但是针对某一个控制系统而言,这些方法也是需要大量时间去调节的。
  6. 网络输入,有很多种形式,尝试过误差和延迟误差,记忆本文的参考信号,实际信号,误差,偏置。
    simulink文件见 BP-PID

推荐阅读
  • 本文探讨了图像标签的多种分类场景及其在以图搜图技术中的应用,涵盖了从基础理论到实际项目实施的全面解析。 ... [详细]
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文探讨了卷积神经网络(CNN)中感受野的概念及其与锚框(anchor box)的关系。感受野定义了特征图上每个像素点对应的输入图像区域大小,而锚框则是在每个像素中心生成的多个不同尺寸和宽高比的边界框。两者在目标检测任务中起到关键作用。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 在Ubuntu 16.04中使用Anaconda安装TensorFlow
    本文详细介绍了如何在Ubuntu 16.04系统上通过Anaconda环境管理工具安装TensorFlow。首先,需要下载并安装Anaconda,然后配置环境变量以确保系统能够识别Anaconda命令。接着,创建一个特定的Python环境用于安装TensorFlow,并通过指定的镜像源加速安装过程。最后,通过一个简单的线性回归示例验证TensorFlow的安装是否成功。 ... [详细]
author-avatar
路见不平出手打_418
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有