【模糊神经网络】基于模糊神经网络的倒立摆轨迹跟踪控制

news2025/5/25 5:32:21

  临近春节没啥事做,突然想起前两年未完成的模糊神经网络,当时是学了一段时间,但是到最后矩阵求偏导那块始终不对,最后也不了了之了,趁最近有空,想重新回顾回顾,看看会不会产生新的想法。经过不断尝试后,竟然达到了想要的效果,所以简要记录一下留个笔记。以下内容只讲干货,不玩虚的。

0 引言

  模糊神经网络结合了模糊控制与神经网络两者的优点,不仅具备对非线性、时变、模型不完全系统的控制,同时还具备很好的自学习和自适应能力。模糊神经网络主要用于模型控制以及函数逼近等领域。

1 倒立摆模型

被控对象为单级倒立摆,其动力学方程为 x ˙ 1 = x 2 x ˙ 2 = f ( x ) + g ( x ) u \dot{x}_1=x_2 \\ \dot{x}_2=f\left( \boldsymbol{x} \right) +g\left( \boldsymbol{x} \right) u x˙1=x2x˙2=f(x)+g(x)u其中, f ( x ) = g sin ⁡ x 1 − m l x 2 2 cos ⁡ x 1 sin ⁡ x 1 / ( m c + m ) l ( 4 / 3 − m cos ⁡ 2 x 1 / ( m c + m ) ) f\left( \boldsymbol{x} \right) =\frac{g\sin x_1-mlx_{2}^{2}\cos x_1\sin x_1/\left( m_c+m \right)}{l\left( 4/3-m\cos ^2x_1/\left( m_c+m \right) \right)} f(x)=l(4/3mcos2x1/(mc+m))gsinx1mlx22cosx1sinx1/(mc+m) g ( x ) = cos ⁡ x 1 / ( m c + m ) l ( 4 / 3 − m cos ⁡ 2 x 1 / ( m c + m ) ) g\left( \boldsymbol{x} \right) =\frac{\cos x_1/\left( m_c+m \right)}{l\left( 4/3-m\cos ^2x_1/\left( m_c+m \right) \right)} g(x)=l(4/3mcos2x1/(mc+m))cosx1/(mc+m) x 1 x_1 x1 x 2 x_2 x2 分别为摆角和摆速, g g g 为重力加速度, m c m_c mc 为小车质量, m m m 摆的质量, l l l 为摆长的一半, u u u 为控制输入。

2 控制器设计

2.1 模糊神经网络结构

第一层:输入层。输入层为双输入,分别为系统偏差 e e e 和系统偏差变化率 e ˙ \dot{e} e˙,然后通过激活函数 f 1 ( x ) f_1\left( x \right) f1(x)输出到模糊化层。 f 1 ( x i ) = x i f_1\left( x_i \right) =x_i f1(xi)=xi 第二层:模糊化层。本层的激活函数即隶属函数,采用逼近能力较好的高斯函数 f 2 ( i , j ) = exp ⁡ [ − ( x i − c i j ) 2 2 σ i j 2 ] f_2\left( i,j \right) =\exp \left[ -\frac{\left( x_i-c_{ij} \right) ^2}{2\sigma _{ij}^{2}} \right] f2(i,j)=exp[2σij2(xicij)2] 其中, i = 1 , 2 ; j = 1 , 2 , . . . n ; i=1,2;j=1,2,...n; i=1,2j=1,2,...n c i j c_{ij} cij σ i j \sigma _{ij} σij 分别为高斯函数的中心和基宽。
第三层:模糊推理层。本层使用的激活函数为 φ ( j ) = ∏ j = 1 N f 2 ( i , j ) f 3 ( j ) = φ ( j ) ∑ j = 1 N φ ( j ) \varphi \left( j \right) =\prod_{j=1}^N{f_2\left( i,j \right)} \\ f_3\left( j \right) =\frac{\varphi \left( j \right)}{\sum_{j=1}^N{\varphi \left( j \right)}} φ(j)=j=1Nf2(i,j)f3(j)=j=1Nφ(j)φ(j)其中, N = ∏ i = 1 n n i N=\prod_{i=1}^n{n_i} N=i=1nni,为神经元和。
第四层:输出层。本层主要是输出模型控制量 u u u f 4 ( i ) = ω ⋅ f 3 = ∑ j = 1 N w ( i , j ) ⋅ f 3 ( j ) f_4\left( i \right) =\boldsymbol{\omega }\cdot f_3=\sum_{j=1}^N{\boldsymbol{w}\left( i,j \right) \cdot f_3\left( j \right)} f4(i)=ωf3=j=1Nw(i,j)f3(j)其中, ω \boldsymbol{\omega } ω 为模糊推理层与输出层的连接权矩阵。

2.2 模糊神经网络的训练算法

  LM算法结合高斯牛顿算法和梯度下降法,兼具局部收敛法和全局搜索的优点。但是,由于LM算法的计算复杂度和存储容量会随着训练样本数目的增加而增加,为了解决该问题,利用IALM算法优化所有的参数。参数向量 Θ ( t ) \boldsymbol{\varTheta }\left( t \right) Θ(t) 的更新规则如下: Θ ( t + 1 ) = Θ ( t ) − ( Ψ ( t ) + η ( t ) I ) − 1 Ω ( t ) \boldsymbol{\varTheta }\left( t+1 \right) =\boldsymbol{\varTheta }\left( t \right) -\left( \boldsymbol{\varPsi }\left( t \right) +\eta \left( t \right) \boldsymbol{I} \right) ^{-1}\boldsymbol{\varOmega }\left( t \right) Θ(t+1)=Θ(t)(Ψ(t)+η(t)I)1Ω(t)其中, Θ ( t ) = [ ω ( t ) , c ( t ) , σ ( t ) ] T \boldsymbol{\varTheta }\left( t \right) =\left[ \boldsymbol{\omega }\left( t \right) , \boldsymbol{c}\left( t \right) , \boldsymbol{\sigma }\left( t \right) \right] ^{\mathrm{T}} Θ(t)=[ω(t),c(t),σ(t)]T 为参数向量, I \boldsymbol{I} I 为用于矩阵求逆时避免奇异的单位矩阵, Ψ ( t ) \boldsymbol{\varPsi }\left( t \right) Ψ(t) 为准海森(quasi-Hessian)矩阵, Ω ( t ) \boldsymbol{\varOmega }\left( t \right) Ω(t) 为梯度向量。自适应学习率 η ( t ) \boldsymbol{\eta }\left( t \right) η(t) 的调整规则如下: η ( t ) = β m ∥ e ( t ) ∥ + ( 1 − β m ) ∥ Ω ( t ) ∥ \boldsymbol{\eta }\left( t \right) =\beta _m\left\| \boldsymbol{e}\left( t \right) \right\| +\left( 1-\beta _m \right) \left\| \boldsymbol{\varOmega }\left( t \right) \right\| η(t)=βme(t)+(1βm)Ω(t)其中, β m ( 0 < β m < 1 ) \beta _m\left( 0<\beta _m<1 \right) βm(0<βm<1) 为预设的常量, Ψ ( t ) \boldsymbol{\varPsi }\left( t \right) Ψ(t) Ω ( t ) \boldsymbol{\varOmega }\left( t \right) Ω(t) 分别为所有样本的子矩阵 ψ p ( t ) \boldsymbol{\psi }_p\left( t \right) ψp(t) 和子向量 ω p ( t ) \boldsymbol{\omega }_p\left( t \right) ωp(t) 的累加,即 Ψ ( t ) = ∑ p = 1 P ψ p ( t ) Ω ( t ) = ∑ p = 1 P ω p ( t ) \boldsymbol{\varPsi }\left( t \right) =\sum_{p=1}^P{\boldsymbol{\psi }_p\left( t \right)} \\ \boldsymbol{\varOmega }\left( t \right) =\sum_{p=1}^P{\boldsymbol{\omega }_p\left( t \right)} Ψ(t)=p=1Pψp(t)Ω(t)=p=1Pωp(t)其中,子矩阵 ψ p ( t ) \boldsymbol{\psi }_p\left( t \right) ψp(t) 和子向量 ω p ( t ) \boldsymbol{\omega }_p\left( t \right) ωp(t) 分别定义为 ψ p ( t ) = J ˙ p T ( t ) J ˙ P ( t ) Ω ( t ) = J ˙ p T ( t ) e P ( t ) \boldsymbol{\psi }_p\left( t \right) =\dot{J}_{p}^{\mathrm{T}}\left( t \right) \dot{J}_P\left( t \right) \\ \boldsymbol{\varOmega }\left( t \right) =\dot{J}_{p}^{\mathrm{T}}\left( t \right) e_P\left( t \right) ψp(t)=J˙pT(t)J˙P(t)Ω(t)=J˙pT(t)eP(t)其中, e P ( t ) e_P\left( t \right) eP(t) 为对于第 p p p 个样本,期望输出和网络实际输出之间的误差 e P ( t ) = y d p ( t ) − y p ( t ) , p = 1 , 2 , . . . P e_P\left( t \right) =y_{d}^{p}\left( t \right) -y^p\left( t \right) , p=1,2,...P eP(t)=ydp(t)yp(t),p=1,2,...P J ˙ p ( t ) \dot{J}_p\left( t \right) J˙p(t) J a c o b i a n \mathrm{Jacobian} Jacobian 矩阵的行向量,即 J ˙ p ( t ) = [ ∂ e p ∂ w 1 , . . . , ∂ e p ∂ w r , ∂ e p ∂ c 11 , . . . , ∂ e p ∂ c i j , . . . , ∂ e p ∂ c n r , ∂ e p ∂ σ 11 , . . . , ∂ e p ∂ σ i j , . . . , ∂ e p ∂ σ n r ] \dot{J}_p\left( t \right) =\left[ \frac{\partial e_p}{\partial w_1},...,\frac{\partial e_p}{\partial w_r},\frac{\partial e_p}{\partial c_{11}},...,\frac{\partial e_p}{\partial c_{ij}},...,\frac{\partial e_p}{\partial c_{nr}},\frac{\partial e_p}{\partial \sigma _{11}},...,\frac{\partial e_p}{\partial \sigma _{ij}},...,\frac{\partial e_p}{\partial \sigma _{nr}} \right] J˙p(t)=[w1ep,...,wrep,c11ep,...,cijep,...,cnrep,σ11ep,...,σijep,...,σnrep]根据梯度下降学习算法的更新规则, J a c o b i a n \mathrm{Jacobian} Jacobian 矩阵行向量的元素可表示为 ∂ e p ( t ) ∂ w j ( t ) = − h j ( t ) ∂ e p ( t ) ∂ c i j ( t ) = − w j ( t ) ∑ k ≠ j r φ k ( t ) ( ∑ k = 1 r φ k ( t ) ) 2 ∏ k ≠ i n μ k j ( t ) ∂ μ i j ( t ) ∂ c i j ( t ) ∂ e p ( t ) ∂ σ i j ( t ) = − w j ( t ) ∑ k ≠ j r φ k ( t ) ( ∑ k = 1 r φ k ( t ) ) 2 ∏ k ≠ i n μ k j ( t ) ∂ μ i j ( t ) ∂ σ i j ( t ) \frac{\partial e_p\left( t \right)}{\partial w_j\left( t \right)}=-h_j\left( t \right) \\ \frac{\partial e_p\left( t \right)}{\partial c_{ij}\left( t \right)}=-w_j\left( t \right) \frac{\sum_{k\ne j}^r{\varphi _k\left( t \right)}}{\left( \sum_{k=1}^r{\varphi _k\left( t \right)} \right) ^2}\prod_{k\ne i}^n{\mu _{kj}\left( t \right) \frac{\partial \mu _{ij}\left( t \right)}{\partial c_{ij}\left( t \right)}} \\ \frac{\partial e_p\left( t \right)}{\partial \sigma _{ij}\left( t \right)}=-w_j\left( t \right) \frac{\sum_{k\ne j}^r{\varphi _k\left( t \right)}}{\left( \sum_{k=1}^r{\varphi _k\left( t \right)} \right) ^2}\prod_{k\ne i}^n{\mu _{kj}\left( t \right) \frac{\partial \mu _{ij}\left( t \right)}{\partial \sigma _{ij}\left( t \right)}} wj(t)ep(t)=hj(t)cij(t)ep(t)=wj(t)(k=1rφk(t))2k=jrφk(t)k=inμkj(t)cij(t)μij(t)σij(t)ep(t)=wj(t)(k=1rφk(t))2k=jrφk(t)k=inμkj(t)σij(t)μij(t)其中, ∂ μ i j ( t ) ∂ c i j ( t ) = 2 ( x i ( t ) − c i j ( t ) ) exp ⁡ ( − ( x i ( t ) − c i j ( t ) ) 2 / σ i j 2 ( t ) ) σ i j 2 ( t ) ∂ μ i j ( t ) ∂ σ i j ( t ) = 2 ( x i ( t ) − c i j ( t ) ) 2 exp ⁡ ( − ( x i ( t ) − c i j ( t ) ) 2 / σ i j 2 ( t ) ) σ i j 3 ( t ) \frac{\partial \mu _{ij}\left( t \right)}{\partial c_{ij}\left( t \right)}=\frac{2\left( x_i\left( t \right) -c_{ij}\left( t \right) \right) \exp \left( -\left( x_i\left( t \right) -c_{ij}\left( t \right) \right) ^2/\sigma _{ij}^{2}\left( t \right) \right)}{\sigma _{ij}^{2}\left( t \right)} \\ \frac{\partial \mu _{ij}\left( t \right)}{\partial \sigma _{ij}\left( t \right)}=\frac{2\left( x_i\left( t \right) -c_{ij}\left( t \right) \right) ^2\exp \left( -\left( x_i\left( t \right) -c_{ij}\left( t \right) \right) ^2/\sigma _{ij}^{2}\left( t \right) \right)}{\sigma _{ij}^{3}\left( t \right)} cij(t)μij(t)=σij2(t)2(xi(t)cij(t))exp((xi(t)cij(t))2/σij2(t))σij(t)μij(t)=σij3(t)2(xi(t)cij(t))2exp((xi(t)cij(t))2/σij2(t))  至此,就是IALM算法的所有公式,根据以上步骤,便可编写出模糊神经网络各层的程序以及参数向量的学习算法,控制器程序也就得到了。
  IALM算法相比LM算法来说,可以直接计算准海森矩阵 Ψ ( t ) \boldsymbol{\varPsi }\left( t \right) Ψ(t)和梯度向量 Ω ( t ) \boldsymbol{\varOmega }\left( t \right) Ω(t),不需要执行 J a c o b i a n \mathrm{Jacobian} Jacobian 矩阵的乘法,从而降低了算法计算复杂度,并且自适应学习率 η ( t ) \boldsymbol{\eta }\left( t \right) η(t) 也有助于加快学习速度和提高泛化能力。
  

3 模型搭建与仿真

  仿真目的:使用模糊神经网络控制器控制倒立摆完成轨迹跟踪运动。
  在Simulink中搭建如下图所示的系统模型:

  参数设置:取 x 1 = θ x_1=\theta x1=θ ,期望轨迹为 θ d ( t ) = 0.1 sin ⁡ ( t ) \theta _{\mathrm{d}}\left( t \right) =0.1\sin \left( t \right) θd(t)=0.1sin(t) ,系统的初始状态为 [ π / 60 , 0 ] \left[ \pi /60, 0 \right] [π/60,0] ,网络初始权值取随机值,宽度取2,中心取-2至2 。模糊神经网络控制器的输入为误差和误差变化率,输出为控制量。

仿真结果
角度跟踪效果

角度跟踪误差

仿真分析
  根据仿真结果可得,角度跟踪效果良好,角度跟踪误差在1e-2数量级,较好的完成轨迹跟踪的目的,因此可得,模糊神经网络控制器设计成功。

4 总结

  模糊神经网络控制器的仿真程序比较复杂,涉及到很多数学运算,尤其是矩阵运算以及各种函数求导,在编写代码的时候要特别注意矩阵的维度问题。
  回想前两年学习的过程,我突然想到最开始我想用李雅普诺夫稳定性来更新神经网络权值,但最后始终有一个矩阵求偏导问题解决不了,而这次我用的梯度下降法来更新神经网络,各个矩阵求导公式也比较清晰,所以能够完成复现。
  模糊神经网络仿真初见成效,也算是解决了历史遗留问题,心里舒服多了。

5 参考文献

[1] 周红标,张钰,柏小颖,等. 基于自适应模糊神经网络的非线性系统模型预测控制[J]. 化工学报,2020,71(7):3201-3212. DOI:10.11949/0438-1157.20191531.

[2] 陶征勇,童仲志,侯远龙,等. 基于模糊神经网络的破障武器PID控制[J]. 电光与控制,2020,27(9):99-104. DOI:10.3969/j.issn.1671-637X.2020.09.020.

[3] 张璐,张嘉成,韩红桂,等. 基于模糊神经网络的污水处理生化除磷过程控制[J]. 化工学报,2020,71(3):1217-1225. DOI:10.11949/0438-1157.20191514.

[4] 徐智浩,李胜,张瑞雷,等. 基于LuGre摩擦模型的机械臂模糊神经网络控制[J]. 控制与决策,2014(6):1097-1102. DOI:10.13195/j.kzyjc.2013.0510.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/184818.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

elasticsearch基本操作

elasticsearch基本操作基础两种模式:ik分词器词库拓展索引库操作mapping映射属性typeindexanalyzerproperties索引库的CRUD创建修改查询删除文档操作创建查询修改删除基础 本教程使用es8.6.0与kibana作为测试环境 打开开发工具 ## 1.查看节点信息 GET /_cat/nodes?v ## 2.查…

【JUC并发编程】深入浅出Java并发基石——AQS

【JUC并发编程】深入浅出Java并发基石——AQS 参考资料&#xff1a; RedSpider社区——第十一章 AQS 深入剖析并发之AQS独占锁 1.5w字&#xff0c;30图带你彻底掌握 AQS&#xff01; 深入浅出AbstractQueuedSynchronizer 我画了35张图就是为了让你深入 AQS 动画演示AQS的核心原…

遍历 “可变参数模板” 的模板参数

类模板和函数模板&#xff0c;只能包含固定数量的模板参数&#xff0c;C11支持模板参数可变&#xff0c;那么在不知道模板参数有多少个的情况下&#xff0c;如何遍历模板参数&#xff1f; 目录 一、可变参数模板的声明 二、可变参数模板的遍历 1、递归遍历 2、非递归遍历 …

idea使用DataBase连接数据库 Free MyBatis Tool自动生成 实体类工具使用

DataBase DataBase连接数据库 设置DataSources Host 》IP地址Port 》端口号User 》用户名Password 》密码Database 》连接的数据库 设置驱动 Drives tables 文件夹中即所连接数据库中表 Free MyBatis Tool自动生成 实体类&#xff0c;Mapper &#xff0c;以及mapper.xml 选…

CleanMyMac4.12.3最新版本Mac系统清理工具

CleanMyMac可以为Mac腾出空间&#xff0c;软件已经更新到CleanMyMac X 支持最新版Macos 10.14系统。CleanMyMac具有一系列巧妙的新功能&#xff0c;可让您安全&#xff0c;智能地扫描和清理整个系统&#xff0c;删除大量未使用的文件&#xff0c;减小iPhoto图库的大小&#xff…

非类型模板参数/模板的特化/模板的分离编译

上一篇文章中&#xff0c;我们对模板有了初步的认识&#xff0c;接下来我们便对模板进一步地学习&#xff01; 1.非类型模板参数 模板参数分为类型形参与非类型形参&#xff1a; ①类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类…

20 个杀手级的 JavaScript 单行代码,可以节省你的编码时间

使用这些基本的单行代码将您的 JavaScript 技能提升到一个新的水平&#xff0c;这也将节省您的编码时间 &#x1f680;1) 查找数组中的最大值&#xff1a;Math.max(...array)2&#xff09;从数组中删除重复项&#xff1a;[...newSet(array)]3&#xff09;生成一个1到100之间的随…

Java开发环境搭建实践

前言 刚刚弄完python的环境搭建&#xff0c;今年打算也要好好学习Java&#xff0c;所以把Java的环境弄起来 搭建过程 jdk下载和安装 下载 官网&#xff1a;Oracle 甲骨文中国 | 云应用和云平台 打开官网 点击产品后下拉找到Java点进去。 下载Java 我就下载最新的jdk把…

Spring Boot学习之任务学习【异步、定时、邮件】

文章目录一 异步任务1.1 创建spring Boot项目&#xff0c;选择Spring Web1.2 创建AsyncService类1.3 编写controller类1.4 在启动类上开启异步功能1.5 测试结果二 定时任务2.1 基础知识2.2 项目创建2.3 创建一个ScheduledService2.4 在主程序上增加EnableScheduling 开启定时任…

Hbuilder打包成苹果IOS-App的详解

本文相关主要记录一下使用Hbuilder打包成苹果IOS-App的详细步骤。介绍一下个人开发者账号&#xff1a;再说下什么是免费的苹果开发者账号&#xff0c;就是你没交688年费的就是免费账号&#xff0c;如果你想变成付费开发者账号&#xff0c;提交申请付费就行&#xff0c;账号都是…

【C++】priority_queue使用模拟实现

priority_queue使用 http://www.cplusplus.com/reference/queue/priority_queue/ 文档介绍 优先级队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的(大堆为例) 在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)…

应用系统基于OAuth2实现单点登录的解决方案

1、OAuth2单点认证原理 基于OAuth2的认证方式包含四种&#xff0c;其中单点登录最常用的是授权码模式&#xff0c;其基本的认证过程如下&#xff1a; 用户访问业务应用&#xff0c;业务应用进行登录检查&#xff1b;业务应用重定向到OAuth2认证服务器&#xff0c;调用获取授权…

米哈伊年终奖是32万,我的年终奖是彩虹屁!

数据来源沉默王二 | 数据报表小熊绘制 年都过完了&#xff0c;年终奖结果也都出来了&#xff0c;我这个年没有过好&#xff0c;每次想到就难受&#xff0c;在看王二整理出来的年终奖&#xff0c;整个人都不好了。 本次统计基于49条数据的不准确统计&#xff0c;仅抽取部分公司部…

Lesson 4.4 随机梯度下降与小批量梯度下降

文章目录一、损失函数理论基础二、随机梯度下降&#xff08;Stochastic Gradient Descent&#xff09;1. 随机梯度下降计算流程2. 随机梯度下降的算法特性3. 随机梯度下降求解线性回归4. 随机梯度下降算法评价三、小批量梯度下降&#xff08;Mini-batch Gradient Descent&#…

SpringMVC执行流程和原理

1、用户发送出请求到前端控制器DispatcherServlet。 2、DispatcherServlet收到请求调用HandlerMapping&#xff08;处理器映射器&#xff09;。 3、HandlerMapping找到具体的处理器(可查找xml配置或注解配置)&#xff0c;生成处理器对象及处理器拦截器 (如果有)&#xff0c;再…

51单片机学习笔记-3模块化编程

3 模块化编程 [toc] 注&#xff1a;笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 3.1 模块化编程 传统方式编程&#xff1a;所有的函数均放在main.c里&#xff0c;若使用的模块比较多&#xff0c;则一个文件内会有很多的…

1604_linux环境下使用命令行把网页转换成pdf

全部学习汇总&#xff1a; GreyZhang/toolbox: 常用的工具使用查询&#xff0c;非教程&#xff0c;仅作为自我参考&#xff01; (github.com) 使用的工具很容易在彼此之间产生隔离性障碍&#xff0c;比如我最近使用的墨水屏阅读的最合适的文件格式我觉得是pdf&#xff0c;但是我…

路由工具之路由策略router-policy、acl列表与ip-prefix前缀列表的区别、过滤列表filter-policy

3.0.0 路由工具之路由策略router-policy、acl列表与ip-prefix前缀列表的区别、过滤列表filter-policy 目录IP-Prefix前缀列表前缀列表与ACLrouter-policy路由策略应用路由策略过滤路由1、环境介绍2、配置OSPF3、过滤路由&#xff08;1&#xff09;ACL匹配路由方式过滤&#xff…

带死区的PID控制算法及仿真

在计算机控制系统中&#xff0c;某些系统为了避免控制作用过于频繁&#xff0c;消除由于频繁动作所引起的振荡&#xff0c;可采用带死区的PID控制算法&#xff0c;控制算式为&#xff1a;式中&#xff0c;e(k)为位置跟踪偏差;e为一个可调参数&#xff0c;其具体数值可根据实际控…

软件测试职场六年,一个女测试工程师的自我认知

微软自动化测试二年&#xff0c;而后转入阿里做自动化测试三年&#xff0c;经历了入行时的迷茫&#xff0c;而后的笃定&#xff0c;转入移动后对自身定位和价值的怀疑&#xff0c;继而对自动化测试的重新认识&#xff0c;职场六年&#xff0c;终于敢对自动化测试有所论述了。 先…