最优化原理大作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于粒子群算法的神经网络在电液伺服系统中的应用

摘要:由于人工神经网络在解决具有非线性、不确定性等系统的控制问题上具有极大的潜力,因而在控制领域正引起人们的极大关注,并且已在一些响应较慢的过程控制中获得成功应用。由于电液伺服系统属

于非线性系统,因此本文利用神经网络控制电液伺服系统,并利用粒子群优化算法训练该神经网络的

权值。通过对神经网络的优化实现对电液伺服系统的控制。

关键词:神经网络电液伺服系统粒子群算法优化

近年来,由于神经网络具有大规模并行性、冗余性、容错性、本质的非线性及自组织自学习自适应能力,所以已成功地应用于众多领域。但在具有复杂非线性特性的机电设备的实时控制方面,虽然也有一些神经网络技术的应用研究,但距实用仍有一段距离。电液伺服系统就属于这类设备[1]。

神经网路在用于实时控制时,主要是利用了网络所具有的其输人——输出间的非线性映射能力。它实际上是通过学习来逼近控制对象的动、静态特性。也就是构造实际系统的神经网络模型[2]。本文利用神经网络控制一电液伺服系统,并利用粒子群优化算法训练该神经网络的权值,将结果与BP神经网络控制该系统的结果进行比较。从而得在电液伺服系统中引入神经网络是可行的。

1、粒子群算法

粒子群优化算法(Particle Swarm optimization, PSO)是一种进化计算技术, 由Eberhart博士和kennedy博士发明, 源于对鸟群捕食的行为研究, 粒子群优化算法的基本思想是通过群体中个体之间的协作和信息共享来寻找最优解[3]。算法最初受到飞鸟和鱼类集群活动的规律性启发,利用群体智能建立了一个简化模型,用组织社会行为代替了进化算法的自然选择机制,通过种群间个体协作来实现对问题最优解的搜索[4]。

在找到这两个最优值时, 粒子根据如下的公式来更新自己的速度和新的位置

v[]=v[]+c1*rand()*(pbest[]-present[]) + c2*rand()*(gbest[]-present[])

present[]=persent[]+v[]

式中ω为惯性权重,ω取大值可使算法具有较强的全局搜索能力,ω取小值则算法倾向于局部搜索。一般的做法是将ω初始取0.9并使其随迭代次数的增加而线性递减至0.4,这样就可以先侧重于全局搜索,使搜索空间快速收敛于某一区域,然后采用局部精细搜索以获得高精度的解;c1、c2为两个学习因子,一般取为2;randl和rand2为两个均匀分布在(0,l)之间的随机数;i=1,2,⋯,m;k=1,2,⋯,d。另外,粒子在每一维的速度Vi都被一个最大速度Vmax所限制。如果当前粒子的加速度导致它在某一维的速度

超过该维上的最大速度Vmax,则该维的速度被限制为最大速度[5]。

粒子群算法流程如下:

(一)初始化粒子群。设群体规模为m,在允许的范围内随机设置粒子的初始位置和速

度。

(二)评价每个粒子的适应值。

(三)调整每一个粒子的位置和速度。

(四)如果达到最大迭代次数genmax或误差达到最初设定数值终止迭代,否则返回(2)。

2、神经网络

神经网络一般由输入层、隐含层、输出层组成。对于输入信号,先向前传播到隐节点,经过节点作用函数后,再把隐节点的输出信息传播到输出节点,最后输出结果。节点的作用函数通常选取S 型函数f(x)=1/(1+e-x)。神经网络算法的学习过程分为正

向传播和反向传播过程。如果正向传播输出的误差达不到预期精度,则沿误差的负梯度方向反复修改各层神经元的权值和阈值,直至网络全局误差信号最小[6]。

3、粒子群算法优化神经网络

神经网络的建立需要确定神经网络的层结构、各个层的神经元个数、每一层的传递函数、神经元权重和阈值调整的训练算法等。采用神经网络三层前馈型网络,包括输入层、隐含层、输出层。输入层和输出层由实际的数据规模来确定其节点数,隐含层的节点数一般只能大致确定,再用构造法确定[7]。采用Sigmoid函数作为隐含层的作用函数,采用线性函数作为输出层的作用函数。神经元权重的调整采用改进的粒子群算法优化。

对全局搜索,通常的方法,在前期有较强的全局搜索能力,在后期侧重于算法的局部搜索,为此可将w设为随时间线性减小:

w=w max−T(w max−w min)/T max

式中:w max为最大惯性权值系数,w min为最小惯性权值系数,T为迭代次数,T max为迭代总数。

学习因子c1、c2用于调整粒子的自身经验与群体经验在其运动中所起的作用,通常c1、c2的范围在0~4之间。

采用粒子群算法训练BP神经网络时,首先应将特定结构中所有需要优化的神经元间的连接权值和阀值编码成实数码串表示的个体。神经网络中包含D个优化参数,则每个个体将由一个D维向量来表示。

粒子群优化神经网络的实现步骤为:①确定神经网络的结构;设定粒子群的群体规模为m、学习因子、惯性权重,在允许的范同内随机给定每个粒子的初始位置和速度,根据优化的目标定义适应函数。②采用粒子群算法对神经网络的参数进行优化。评价粒子的优劣,对每个粒子计算适应值,如果其适应值好于其经过的最好位置P,,则用当

前的位置取代P 。将所有粒子中最好的P 作为当前的全局最好位置P 根据公式(1)更新粒子状态,包括速度和位置。③判断是否达到优化要求,若达到,结束;否则转步骤②。

④判断是否达到最大迭代数,若达到终止条件,结束;否则转步骤②[8]。

4、电液伺服系统的开环传递函数的阶跃响应

已知电液伺服系统的开环传递函数为:

G(s)=

73.339

s(s2

156.82

+0.305s

156.8

+1)

由于本系统是连续系统,应该先进行离散化处理,取采样周期为1ms,经过z变换后的离散化对象为:

y k=−den2y k−1−den3y k−2−den4y k−3+num2u k−1

+num3u k−2+num4u(k−3)

采用Matlab编程实现:

ts=0.001

num=[73.339];

den=[1/((156.8)^2) 0.305/156.8 1 0];

sys=tf(num,den)

dsys=c2d(sys,ts,'z')

[num,den]=tfdata(dsys,'v')

代入数据,得到如下函数式:

y k=2.9293∗y k−1−2.8826∗y k−2+0.9533∗y k−3+0.0003∗u k−1 +0.0012∗u k−2+0.0003∗u(k−3)

相关文档
最新文档