基于广义多项式混沌算法的Van der Pol方程参数辨识

1 广义随机多项式(Generalized Polynomial Chaos)

系统的动态特征可以表述为
{ x ˙ = F ( t , x , u ; θ ) , 0 ≤ t ≤ t f , x ( 0 ) = x 0 y = C ( θ ) x (1) \left\{ \begin{array}{lr} \dot{x}=F(t,x,u;\theta), \quad 0 \leq t \leq t_f, \quad x(0)=x_0 \\ y=C(\theta) x\\ \end{array} \right. \tag{1} {x˙=F(t,x,u;θ),0ttf,x(0)=x0y=C(θ)x(1)

其中, x ∈ R n s x\in \mathbb R^{n_s} xRns,存在 n s n_s ns个状态变量; θ ∈ R n p \theta\in \mathbb R^{n_p} θRnp,存在 n p n_p np个未知参数; C ( θ ) C(\theta) C(θ)为线性矩阵。

根据gPC理论,将系统参数 θ ( ξ ) \theta(\xi) θ(ξ)与状态变量 x ( t , ξ ) x(t,\xi) x(t,ξ)利用正交多项式函数进行展开,第 i i i个参数 θ i \theta_i θi可以分解为随机变量 ξ i \xi_i ξi表示的:
θ i ( ξ i ) = ∑ m = 0 N p θ i , m ϕ m ( ξ i ) , i = 1 , . . . , n p (2) \theta_i(\xi_i) = \sum^{N_p}_{m=0}\theta_{i,m}\phi_m(\xi_i), \quad i=1,...,n_p \tag{2} θi(ξi)=m=0Npθi,mϕm(ξi),i=1,...,np(2)

其中,任意 i i i m m m θ i , m \theta_{i,m} θi,m这里认为已知(例如之前对数分布的 θ ( ξ ) = e μ + σ ξ \theta(\xi)=e^{\mu+\sigma\xi} θ(ξ)=eμ+σξ关系),且 ϕ m ( ξ i ) \phi_m(\xi_i) ϕm(ξi)代表正交基函数。如果第 i i i个参数 θ i \theta_i θi对应的概率密度函数为 ρ i ( ξ i ) \rho_i(\xi_i) ρi(ξi),那么相应的正交关系为
E [ ϕ m ( ξ i ) ϕ n ( ξ i ) ] = ∫ ϕ m ( ξ i ) ϕ n ( ξ i ) ρ i ( ξ i ) d ξ i (3) \mathbb E[\phi_m(\xi_i)\phi_n(\xi_i)] = \int \phi_m(\xi_i)\phi_n(\xi_i)\rho_i(\xi_i) d\xi_i \tag{3} E[ϕm(ξi)ϕn(ξi)]=ϕm(ξi)ϕn(ξi)ρi(ξi)dξi(3)

同时,第 j j j个状态变量 x ^ j ( t , ξ ) \hat{x}_j(t,\xi) x^j(t,ξ)可以分解为随机变量 ξ \xi ξ表示的:
x ^ j ( t , ξ ) = ∑ ∣ α ∣ = 0 N s x j , α ( t ) Φ α ( ξ ) , j = 1 , . . . , n s (4) \hat{x}_j(t,\xi) = \sum^{N_s}_{|\alpha|=0}x_{j,\alpha}(t)\Phi_\alpha(\xi), \quad j=1,...,n_s \tag{4} x^j(t,ξ)=α=0Nsxj,α(t)Φα(ξ),j=1,...,ns(4)

需要说明的是,标准的gPC理论将系统参数视为随机变量的函数,但是考虑到系统参数的不确定性会直接导致状态变量的不确定性,因而可以同样将状态变量视为随机变量的函数。由于 ξ i ( i = 1 , . . . , n p ) \xi_i(i=1,...,n_p) ξi(i=1,...,np)之间是相互独立的,从而有联合概率密度函数 ρ ( ξ ) \rho(\xi) ρ(ξ)以及 n p n_p np变量多项式基函数 Φ α \Phi_\alpha Φα
ρ ( ξ ) = ∏ i = 1 n p ρ i ( ξ i ) , Φ α ( ξ ) = ∏ i = 1 n p ϕ i ( ξ i ) , ξ = [ ξ 1 , . . . , ξ i , . . . , ξ n p ] (5) \rho(\xi)=\prod_{i=1}^{n_p}\rho_i(\xi_i),\quad \Phi_\alpha(\xi)=\prod_{i=1}^{n_p}\phi_{i}(\xi_i),\quad \xi=[\xi_1,...,\xi_i,...,\xi_{n_p}] \tag{5} ρ(ξ)=i=1npρi(ξi),Φα(ξ)=i=1npϕi(ξi),ξ=[ξ1,...,ξi,...,ξnp](5)

相应的正交关系有
E [ Φ α ( ξ ) Φ β ( ξ ) ] = ∫ Φ α ( ξ ) Φ β ( ξ ) ρ ( ξ ) d ξ (6) \mathbb E[\Phi_\alpha(\xi)\Phi_\beta(\xi)]=\int \Phi_\alpha(\xi)\Phi_\beta(\xi)\rho(\xi) d\xi \tag{6} E[Φα(ξ)Φβ(ξ)]=Φα(ξ)Φβ(ξ)ρ(ξ)dξ(6)

值得注意的是,这里的 α / β ∈ N 0 n p \alpha/\beta\in\mathbb N_0^{n_p} α/βN0np属于向量形式的 n p n_p np维标号,即 α = [ α 1 , . . . , α n p ] \alpha = [\alpha_1,...,\alpha_{n_p}] α=[α1,...,αnp],其绝对值代表所有元素标号之和,即 ∣ α ∣ = α 1 + . . . + α n p |\alpha|=\alpha_1+...+\alpha_{n_p} α=α1+...+αnp。在此基础之上,第 j j j个状态变量 x j ( t , ξ ) x_j(t,\xi) xj(t,ξ)的分解系数 x j , α ( t ) x_{j,\alpha}(t) xj,α(t)的总个数(式(4)的多项式总个数)为
r = ( N s + n p ) ! N s ! n p ! (7) r=\frac{(N_s+n_p)!}{N_s!n_p!} \tag{7} r=Ns!np!(Ns+np)!(7)

虽然系统参数的多项式分解系数是已知的,但是状态变量的多项式分解则需要单独计算。在 x j ( t , ξ ) x_{j}(t,\xi) xj(t,ξ)未知的情况下,需要使用Galerkin方法或随机配置法求解;在 x j ( t , ξ ) x_{j}(t,\xi) xj(t,ξ)已知的情况下,系数可以通过如下公式计算
x j , α ( t ) = E [ x j ( t , ξ ) Φ α ( ξ ) ] E [ Φ α ( ξ ) Φ α ( ξ ) ] = E [ x ^ j ( t , ξ ) Φ α ( ξ ) ] E [ Φ α ( ξ ) Φ α ( ξ ) ] (8) x_{j,\boldsymbol\alpha}(t)=\frac{\mathbb E[x_j(t,\xi)\Phi_\boldsymbol\alpha(\xi)]}{\mathbb E[\Phi_\boldsymbol\alpha(\xi)\Phi_\boldsymbol\alpha(\xi)]}=\frac{\mathbb E[\hat{x}_j(t,\xi)\Phi_\boldsymbol\alpha(\xi)]}{\mathbb E[\Phi_\boldsymbol\alpha(\xi)\Phi_\boldsymbol\alpha(\xi)]} \tag{8} xj,α(t)=E[Φα(ξ)Φα(ξ)]E[xj(t,ξ)Φα(ξ)]=E[Φα(ξ)Φα(ξ)]E[x^j(t,ξ)Φα(ξ)](8)

2 随机配执法(Stochastic Collection Method)

首先,依据全局概率密度函数 ρ ( ξ ) \rho(\xi) ρ(ξ)选取一个确定的配置点集 { μ ( 1 ) , . . . , μ ( i ) , . . . , μ ( Q ) } \{\mu^{(1)},...,\mu^{(i)},...,\mu^{(Q)}\} {μ(1),...,μ(i),...,μ(Q)},其中 Q ≥ r Q\geq r Qr表示配置点的数量。需要特别注意的是, Q Q Q必须要大于等于 r r r,否则会导致之后的 A # A^{\#} A#矩阵不存在。全部点均存在于参数变量空间,即 μ ( i ) ∈ R n p \mu^{(i)}\in\mathbb R^{n_p} μ(i)Rnp。利用这些点替代方程(1)中的随机变量 ξ \xi ξ,有
{ z ˙ ( i ) = F ( t , z ( i ) ( t ) ; θ ( μ ( i ) ) ) , i = 1 , . . . , Q z ( i ) ( 0 ) = z 0 ( i ) (9) \left\{ \begin{array}{lr} \dot{z}^{(i)}=F(t,z^{(i)}(t);\theta(\mu^{(i)})), \quad i=1,...,Q \\ z^{(i)}(0)=z_0^{(i)}\\ \end{array} \right. \tag{9} {z˙(i)=F(t,z(i)(t);θ(μ(i))),i=1,...,Qz(i)(0)=z0(i)(9)

其中,在第 i i i个定点的第 j j j个状态变量状态变量,有
z j ( i ) = ∑ ∣ α ∣ = 0 N s x j , α ( t ) Φ α ( μ ( i ) ) , j = 1 , . . . , n s (10) z_j^{(i)} = \sum^{N_s}_{|\alpha|=0}x_{j,\alpha}(t)\Phi_\alpha(\mu^{(i)}), \quad j=1,...,n_s \tag{10} zj(i)=α=0Nsxj,α(t)Φα(μ(i)),j=1,...,ns(10)

这里,可以利用数值积分的方法求解(9)中每一个配置点下的状态变量,从而得到 Q Q Q组解耦的集合,且每个集合包含 n s n_s ns个状态变量,有
Z = [ z ( 1 ) ⋮ z ( i ) ⋮ z ( Q ) ] Q ⋅ n s × 1 ∈ R Q × n s , z ( i ) = [ z 1 ( i ) ⋮ z j ( i ) ⋮ z n s ( i ) ] n s × 1 ∈ R n s (11) Z=\left[ \begin{array}{c} z^{(1)}\\ \vdots\\ z^{(i)}\\ \vdots\\ z^{(Q)}\\ \end{array} \right]_{Q\cdot n_s\times 1}\in\mathbb R^{Q\times n_s}, \quad z^{(i)}=\left[ \begin{array}{c} z^{(i)}_1\\ \vdots\\ z^{(i)}_j\\ \vdots\\ z^{(i)}_{n_s}\\ \end{array} \right]_{n_s\times 1}\in\mathbb R^{n_s} \tag{11} Z=z(1)z(i)z(Q)Qns×1RQ×ns,z(i)=z1(i)zj(i)zns(i)ns×1Rns(11)

其次,同时考虑到式(4)可以表示为内积的形式,则 n s n_s ns中第 j j j个状态变量可以写为矩阵形式,有
x ^ j ( t , ξ ) = ∑ ∣ α ∣ = 0 N s x j , α ( t ) Φ α ( ξ ) = P ( ξ ) T X j ( t ) , j = 1 , . . . , n s (12) \hat{x}_j(t,\xi) = \sum^{N_s}_{|\alpha|=0}x_{j,\alpha}(t)\Phi_\alpha(\xi) = P(\xi)^TX_{j}(t), \quad j=1,...,n_s \\ \\ \tag{12} x^j(t,ξ)=α=0Nsxj,α(t)Φα(ξ)=P(ξ)TXj(t),j=1,...,ns(12)

其中,
P ( ξ ) = [ ⋮ Φ α ( ξ ) ⋮ ] r × 1 ∈ R r , X j ( t ) = [ ⋮ x j , α ( t ) ⋮ ] r × 1 ∈ R r (13) P(\xi)=\left[\begin{array}{c} \vdots\\ \Phi_\alpha(\xi)\\ \vdots\\ \end{array} \right]_{r \times 1}\in \mathbb R^r ,\quad\quad X_j(t)=\left[\begin{array}{c} \vdots\\ x_{j,\alpha}(t)\\ \vdots\\\end{array} \right]_{r \times 1}\in \mathbb R^r \tag{13} P(ξ)=Φα(ξ)r×1Rr,Xj(t)=xj,α(t)r×1Rr(13)

进一步考虑全部的状态变量 x ^ ( t , ξ ) \hat{x}(t,\xi) x^(t,ξ),有
x ^ ( t , ξ ) = [ x ^ 1 ( t , ξ ) ⋮ x ^ j ( t , ξ ) ⋮ x ^ n s ( t , ξ ) ] n s × 1 = [ P T ( ξ ) O O O ⋱ O O O P T ( ξ ) ] n s × r ⋅ n s [ X 1 ( t ) ⋮ X j ( t ) ⋮ X n s ( t ) ] r ⋅ n s × 1 = P ( ξ ) X ( t ) (14) \hat{x}(t,\xi)=\left[ \begin{array}{c} \hat{x}_1(t,\xi)\\ \vdots\\ \hat{x}_j(t,\xi)\\ \vdots\\ \hat{x}_{n_s}(t,\xi)\\ \end{array} \right]_{n_s \times 1}= \left[ \begin{array}{ccc} P^T(\xi) & O & O\\ O & \ddots & O\\ O & O & P^T(\xi) \\ \end{array} \right]_{n_s \times r \cdot n_s} \left[ \begin{array}{c} X_1(t) \\ \vdots\\ X_j(t)\\\vdots \\ X_{n_s}(t) \\ \end{array} \right]_{r\cdot n_s \times 1} = \mathbb P(\xi)X(t) \tag{14} x^(t,ξ)=x^1(t,ξ)x^j(t,ξ)x^ns(t,ξ)ns×1=PT(ξ)OOOOOOPT(ξ)ns×rnsX1(t)Xj(t)Xns(t)rns×1=P(ξ)X(t)(14)

之后,考虑 Q Q Q个配置点,将式(11)与(14)联立,即 x ^ = z \hat{x}=z x^=z可以得到
Z = [ z ( 1 ) ⋮ z ( i ) ⋮ z ( Q ) ] Q ⋅ n s × 1 = [ P ( μ ( 1 ) ) ⋮ P ( μ ( i ) ) ⋮ P ( μ ( Q ) ) ] Q ⋅ n s × r ⋅ n s [ X 1 ( t ) ⋮ X j ( t ) ⋮ X n s ( t ) ] r ⋅ n s × 1 = A X ( t ) (15) Z=\left[\begin{array}{c} z^{(1)}\\ \vdots\\ z^{(i)}\\ \vdots\\ z^{(Q)}\\ \end{array} \right]_{Q\cdot n_s\times 1} = \left[\begin{array}{c} \mathbb P(\mu^{(1)})\\ \vdots\\ \mathbb P(\mu^{(i)})\\ \vdots\\ \mathbb P(\mu^{(Q)})\\ \end{array} \right]_{Q\cdot n_s\times r \cdot n_s} \left[ \begin{array}{c} X_1(t) \\ \vdots\\ X_j(t)\\\vdots \\ X_{n_s}(t) \\ \end{array} \right]_{r\cdot n_s \times 1} = \mathbb A X(t) \tag{15} Z=z(1)z(i)z(Q)Qns×1=P(μ(1))P(μ(i))P(μ(Q))Qns×rnsX1(t)Xj(t)Xns(t)rns×1=AX(t)(15)

不难发现,向量 X ( t ) X(t) X(t) X j ( t ) X_j(t) Xj(t)组成,而 X j ( t ) X_j(t) Xj(t) x j , α ( t ) x_{j,\alpha}(t) xj,α(t)组成,也就是说 X ( t ) X(t) X(t)中的 r ⋅ n s r\cdot n_s rns个元素实际上对应 n s n_s ns个状态变量的 r r r个概率多项式分解系数。

最后,可以通过如下矩阵运算求解相应的分解系数
X ( t ) = A # Z , A # = ( A T A ) − 1 A T ∈ R r ⋅ n s × Q ⋅ n s (16) X(t)=\mathbb A^{\#}Z, \quad \mathbb A^{\#} = (\mathbb A^T \mathbb A)^{-1}\mathbb A^T\in\mathbb R^{r \cdot n_s \times Q\cdot n_s}\\ \tag{16} X(t)=A#Z,A#=(ATA)1ATRrns×Qns(16)

其中,矩阵运算 A # \mathbb A^{\#} A#表示Moore-Penrose伪逆,配置点的选择过程中需要确保这一伪逆存在(即 Q ≥ r Q\geq r Qr)。

3 极大似然法(Maximum Likelihood Approach)
问题提出

下面研究在实际系统观测结果下,随机变量 ξ \xi ξ最佳数值的迭代参数辨识方案。在此基础之上,基于式(2)即可实现未知系统参数 θ ( ξ ) \theta(\xi) θ(ξ)的计算,这里重写如下
θ i ( ξ i ) = ∑ m = 0 N p θ i , m ϕ m ( ξ i ) , i = 1 , . . . , n p (17) \theta_i(\xi_i) = \sum^{N_p}_{m=0}\theta_{i,m}\phi_m(\xi_i), \quad i=1,...,n_p \tag{17} θi(ξi)=m=0Npθi,mϕm(ξi),i=1,...,np(17)

假设系统输出的噪声符合期望为零高斯分布,协方差矩阵为 R ∈ R n y × n y R\in\mathbb R^{n_y\times n_y} RRny×ny。同时,认为系统的每次采样间的观测结果是相互独立的,方程(1)中唯一的不确定来自于未知的参数,并且状态变量与系统参数的概率多项式分解存在。基于以上假设,可以将似然函数写为
L ( ξ ∣ y 0 , . . , y t ) = ∏ τ = 0 t ρ ( y ( τ ) ∣ ξ ) ∝ e − 1 2 ∑ τ = 0 t [ y ( τ ) − y ^ ( τ , ξ ) ] T R − 1 [ y ( τ ) − y ^ ( τ , ξ ) ] (18) \mathcal L(\xi|y_{0},..,y_{t})=\prod^{t}_{\tau=0} \rho(y(\tau)|\xi) \propto e^{-\frac{1}{2}\sum^{t}_{\tau=0}[y(\tau)-\hat{y}(\tau,\xi)]^TR^{-1}[y(\tau)-\hat{y}(\tau,\xi)]} \tag{18} L(ξy0,..,yt)=τ=0tρ(y(τ)ξ)e21τ=0t[y(τ)y^(τ,ξ)]TR1[y(τ)y^(τ,ξ)](18)

其中, L ( ξ ∣ y 0 , . . , y t ) \mathcal L(\xi|y_{0},..,y_{t}) L(ξy0,..,yt)是随机变量 ξ \xi ξ在全时刻系统观测结果 y 0 , . . , y t y_{0},..,y_{t} y0,..,yt条件下的似然函数, ρ ( y ( t ) ∣ ξ ) \rho(y(t)|\xi) ρ(y(t)ξ)是观测结果 y ( t ) y(t) y(t)在参数 ξ \xi ξ条件下的概率密度函数, y ^ ( t , ξ ) \hat{y}(t,\xi) y^(t,ξ)是随机模型的输出,即
y ^ = C ( θ ( ξ ) ) x ^ ( t , ξ ) (19) \hat{y}=C(\theta(\xi)) \hat{x}(t,\xi) \tag{19} y^=C(θ(ξ))x^(t,ξ)(19)

根据定义,极大似然辨识结果 θ ^ \hat{\theta} θ^使得(18)具有最大值,等价于不含复数的指数部分具有最小值,即
J ( t , ξ ) = 1 2 ∑ τ = 0 t [ y ( τ ) − y ^ ( τ , ξ ) ] T R − 1 [ y ( τ ) − y ^ ( τ , ξ ) ] ξ ^ = a r g m i n J ( t , ξ ) (20) \mathcal J(t,\xi)=\frac{1}{2}\sum^{t}_{\tau=0}[y(\tau)-\hat{y}(\tau,\xi)]^TR^{-1}[y(\tau)-\hat{y}(\tau,\xi)]\\ \hat{\xi}=argmin \mathcal J(t,\xi) \tag{20} J(t,ξ)=21τ=0t[y(τ)y^(τ,ξ)]TR1[y(τ)y^(τ,ξ)]ξ^=argminJ(t,ξ)(20)

问题分析

J ( t , ξ ) \mathcal J(t,\xi) J(t,ξ)的迭代更新是该方法递归的重要条件,这里利用概率多项式的性质来分离方程中时间与未知参数两部分,从而实现这种递归方法。将(14)与(19)代入(20),并进行代数化简,有
J ( t , ξ ) = 1 2 ∑ i = 1 n y ∑ j = 1 n y [ R − 1 ] i , j [ ( ∑ τ = 0 t y i y j ) − 2 C i P ( ∑ τ = 0 t X y j ) + C i P ( ∑ τ = 0 t X X T ) ( C i P ) T ] (21) \mathcal J(t,\xi)=\frac{1}{2}\sum^{n_y}_{i=1}\sum^{n_y}_{j=1} [R^{-1}]_{i,j}[(\sum_{\tau=0}^{t}y_i y_j)-2C_i\mathbb P(\sum_{\tau=0}^{t}Xy_j)+C_i\mathbb P(\sum^{t}_{\tau=0}XX^T)(C_i\mathbb P)^T]\tag{21} J(t,ξ)=21i=1nyj=1ny[R1]i,j[(τ=0tyiyj)2CiP(τ=0tXyj)+CiP(τ=0tXXT)(CiP)T](21)

其中, [ R − 1 ] i , j [R^{-1}]_{i,j} [R1]i,j表示协方差矩阵逆中第 i i i行向量中的第 j j j个元素,标量 y k y_k yk表示观测结果向量 y y y n y n_y ny个元素中的第 k k k个, C k C_k Ck表示输出矩阵 C C C中的第 k k k行。

可以看到,求和项中仅包含与时间有关的 X X X y y y项,并包含系数 X X X P \mathbb P P,只有对状态变量使用概率多项式分解后才能够得到这样的结构。

为了方便实现这里考虑求和项的递归实现方案。对于任意一个矩阵 G ( t ) G(t) G(t)定义如下形式

D G ( t ) = ∑ τ = 0 t G ( τ ) D G ( t + Δ t ) = ∑ τ = 0 t + Δ t G ( τ ) D^{(t)}_{G}=\sum^{t}_{\tau=0}G(\tau) \\ D^{(t+\Delta t)}_{G}=\sum^{t+\Delta t}_{\tau=0}G(\tau) DG(t)=τ=0tG(τ)DG(t+Δt)=τ=0t+ΔtG(τ)

⇒ D G ( t + Δ t ) = D G ( t ) + G ( t + Δ t ) (22) \Rightarrow D^{(t+\Delta t)}_{G}=D^{(t)}_{G} +G(t+\Delta t) \tag{22} DG(t+Δt)=DG(t)+G(t+Δt)(22)

其中, Δ t \Delta t Δt代表采样间隔。

定义 D y i y j ( t ) = ∑ τ = 0 t y i y j ∈ R D_{y_iy_j}^{(t)}=\sum_{\tau=0}^{t}y_i y_j\in\mathbb R Dyiyj(t)=τ=0tyiyjR D X y j ( t ) = ∑ τ = 0 t X y j ∈ R r ⋅ n s D_{Xy_j}^{(t)}=\sum_{\tau=0}^{t}Xy_j\in\mathbb R^{r\cdot n_s} DXyj(t)=τ=0tXyjRrns D X X T ( t ) = ∑ τ = 0 t X X T ∈ R r ⋅ n s × r ⋅ n s D_{XX^T}^{(t)}=\sum^{t}_{\tau=0}XX^T\in\mathbb R^{r\cdot n_s \times r\cdot n_s} DXXT(t)=τ=0tXXTRrns×rns为固定的变量,并将(21)重写为
J ( t , ξ ) = 1 2 ∑ i = 1 n y ∑ j = 1 n y [ R − 1 ] i , j [ D y i y j ( t ) − 2 C i P D X y j ( t ) + C i P D X X T ( t ) ( C i P ) T ] (23) \mathcal J(t,\xi)=\frac{1}{2}\sum^{n_y}_{i=1}\sum^{n_y}_{j=1} [R^{-1}]_{i,j}[D_{y_iy_j}^{(t)}-2C_i\mathbb PD_{Xy_j}^{(t)}+C_i\mathbb PD_{XX^T}^{(t)}(C_i\mathbb P)^T]\tag{23} J(t,ξ)=21i=1nyj=1ny[R1]i,j[Dyiyj(t)2CiPDXyj(t)+CiPDXXT(t)(CiP)T](23)
其中定义的变量可以在固定内存中存储相关数据,并根据时间进行迭代求解。

梯度下降优化

基于梯度的参数更新规则,有
ξ ^ t + 1 = ξ ^ t − Γ ∂ J ( t , ξ ) ∂ ξ ∣ ξ = ξ ^ (24) \hat{\xi}_{t+1}=\hat{\xi}_{t}-\Gamma\frac{\partial \mathcal J(t,\xi)}{\partial\xi} \Bigg |_{\xi=\hat{\xi}} \tag{24} ξ^t+1=ξ^tΓξJ(t,ξ)ξ=ξ^(24)

其中, ξ ^ t \hat{\xi}_{t} ξ^t代表 t t t时刻 ξ \xi ξ的辨识结果,不同的 Γ \Gamma Γ矩阵对应了不同类型的下降方法。

将(23)代入(24),可以得到
ξ ^ t + 1 = ξ ^ t − Γ ∑ i = 1 n y ∑ j = 1 n y [ R − 1 ] i , j × [ ∂ C i P ∂ ξ ∣ ξ = ξ ^ ( D X X T ( t ) ( C i P ) T ∣ ξ = ξ ^ − D X y j ( t ) ) ] (25) \hat{\xi}_{t+1}=\hat{\xi}_{t}-\Gamma \sum^{n_y}_{i=1}\sum^{n_y}_{j=1} [R^{-1}]_{i,j} \times\left[ \frac{\partial C_i\mathbb P}{\partial \xi} \Big | _{\xi=\hat{\xi}} \left( D_{XX^T}^{(t)}(C_i\mathbb P)^T \Big | _{\xi=\hat{\xi}} - D_{Xy_j}^{(t)}\right) \right] \tag{25} ξ^t+1=ξ^tΓi=1nyj=1ny[R1]i,j×[ξCiPξ=ξ^(DXXT(t)(CiP)Tξ=ξ^DXyj(t))](25)

注意到,上式中 D X X T ( t ) D_{XX^T}^{(t)} DXXT(t) D X y j ( t ) D_{Xy_j}^{(t)} DXyj(t)可能会随时间无约束的增加,因此这里需要进行归一化,有
ξ ^ t + 1 = ξ ^ t − Γ ∑ i = 1 n y ∑ j = 1 n y [ R − 1 ] i , j × [ ∂ C i P ∂ ξ ∣ ξ = ξ ^ × D X X T ( t ) ( C i P ) T ∣ ξ = ξ ^ − D X y j ( t ) 1 + ∣ ∣ D X y j ( t ) ∣ ∣ 2 ] (26) \hat{\xi}_{t+1}=\hat{\xi}_{t}-\Gamma \sum^{n_y}_{i=1}\sum^{n_y}_{j=1} [R^{-1}]_{i,j} \times\left[ \frac{\partial C_i\mathbb P}{\partial \xi} \Big | _{\xi=\hat{\xi}} \times \frac{ D_{XX^T}^{(t)}(C_i\mathbb P)^T \Big | _{\xi=\hat{\xi}} - D_{Xy_j}^{(t)}} {1+||D_{Xy_j}^{(t)}||_2} \right] \tag{26} ξ^t+1=ξ^tΓi=1nyj=1ny[R1]i,j×ξCiPξ=ξ^×1+DXyj(t)2DXXT(t)(CiP)Tξ=ξ^DXyj(t)(26)

其中,标量 ∣ ∣ D X y j ( t ) ∣ ∣ 2 = ∣ ∣ ∑ τ = 0 t X y j ∣ ∣ 2 ||D_{Xy_j}^{(t)}||_2 = ||\sum^{t}_{\tau=0}Xy_j||_2 DXyj(t)2=τ=0tXyj2。特别地,偏微分导数项有
∂ C i P ∂ ξ ∣ ξ = ξ ^ = ∂ C i ∂ ξ P ∣ ξ = ξ ^ + C i ∂ P ∂ ξ ∣ ξ = ξ ^ (27) \frac{\partial C_i\mathbb P}{\partial \xi} \Big | _{\xi=\hat{\xi}} = \frac{\partial C_i}{\partial \xi} \mathbb P \Big | _{\xi=\hat{\xi}} + C_i \frac{\partial \mathbb P}{\partial \xi} \Big | _{\xi=\hat{\xi}} \tag{27} ξCiPξ=ξ^=ξCiPξ=ξ^+CiξPξ=ξ^(27)

4 范德波尔方程参数辨识(Van der Pol)

Van der Pol方程可以描述为
{ x ˙ 1 = x 2 x ˙ 2 = − x 1 − 1 θ ( x 1 2 − 1 ) x 2 + sin ⁡ ( 50 t ) y = x 1 x 1 ( 0 ) = 0.1 , x 2 ( 0 ) = − 0.1 (28) \left\{\begin{array}{l}\dot{x}_{1}=x_2 \\\dot{x}_{2}=-x_1-\frac{1}{\theta}(x_1^2-1)x_2+\sin(50t) \\y=x_1\\x_1(0)=0.1,\quad x_2(0)=-0.1\\\end{array}\right. \tag{28} x˙1=x2x˙2=x1θ1(x121)x2+sin(50t)y=x1x1(0)=0.1,x2(0)=0.1(28)

function xdot = mVanderPol(t,x)
global theta;
xdot = [x(2);   (1-x(1)^2)*x(2)/theta-x(1)+sin(50*t) ];
end

其中,未知系统参数 θ ∼ U n i f o r m ( [ 5 , 11 ] ) \theta\sim Uniform([5,11]) θUniform([5,11])为均匀分布,因此可以令相关的随机变量为 ξ ∼ U n i f o r m ( [ − 1 , 1 ] ) \xi\sim Uniform([-1,1]) ξUniform([1,1]),对应的多项式分解基函数为 [ − 1 , 1 ] [-1,1] [1,1]区间上的Legendre多项式
ϕ 0 ( ξ ) = 1 , ϕ 1 ( ξ ) = ξ , ϕ 2 ( ξ ) = 3 2 ξ 2 − 1 2 , ϕ 3 ( ξ ) = 5 2 ξ 3 − 3 2 ξ , ϕ 4 ( ξ ) = 35 8 ξ 4 − 30 8 ξ 2 + 3 8 , ϕ 5 ( ξ ) = 63 8 ξ 5 − 70 8 ξ 3 + 15 8 ξ , . . . (29) \phi_0(\xi)=1, \quad\phi_1(\xi)=\xi, \quad\phi_2(\xi)=\frac{3}{2}\xi^2-\frac{1}{2}, \quad\phi_3(\xi)=\frac{5}{2}\xi^3-\frac{3}{2}\xi, \\ \quad\phi_4(\xi)=\frac{35}{8}\xi^4-\frac{30}{8}\xi^2+\frac{3}{8}, \quad\phi_5(\xi)=\frac{63}{8}\xi^5-\frac{70}{8}\xi^3+\frac{15}{8}\xi,... \tag{29} ϕ0(ξ)=1,ϕ1(ξ)=ξ,ϕ2(ξ)=23ξ221,ϕ3(ξ)=25ξ323ξ,ϕ4(ξ)=835ξ4830ξ2+83,ϕ5(ξ)=863ξ5870ξ3+815ξ,...(29)

这里的近似属于强近似,因此1阶的参数展开即可实现平均分布的近似,有( n p = 1 , N p = 1 n_p=1,N_p=1 np=1,Np=1)
θ ( ξ ) = ∑ m = 0 N p θ m = θ 0 + θ 1 ξ = 8 + 3 ξ (30) \theta(\xi)=\sum^{N_p}_{m=0}\theta_{m}=\theta_{0}+\theta_{1}\xi=8+3\xi \tag{30} θ(ξ)=m=0Npθm=θ0+θ1ξ=8+3ξ(30)

状态变量同样展开为多项式分解的形式( α \alpha α n p = 1 n_p=1 np=1的情况下为标量, n s = 1 n_s=1 ns=1 N s = 5 N_s=5 Ns=5 r = 6 r=6 r=6)

公 式 修 改 为 文 末 图 (31) 公式修改为文末图\tag{31} (31)

上式中,因为只有1个参数变量,因此多项式基 Φ = ϕ \Phi=\phi Φ=ϕ x j , 0 ∼ x j , 5 x_{j,0}\sim x_{j,5} xj,0xj,5为多项式未知系数,需要利用随机配置法求解。

根据随机配置法,随机变量 ξ \xi ξ [ − 1 , 1 ] [-1,1] [1,1]内按照均匀分布的原则选取 Q Q Q个点 μ ( 1 ) , . . . , μ ( Q ) \mu^{(1)},...,\mu^{(Q)} μ(1),...,μ(Q),因此有 P ( μ ( i ) ) P(\mu^{(i)}) P(μ(i))、$\mathbb P(\mu^{(i)}) 、 、 \mathbb A 进 而 可 以 计 算 得 到 进而可以计算得到 \mathbb A^#$。
P T ( μ ( i ) ) = [ ϕ 0 ( μ ( i ) ) ϕ 1 ( μ ( i ) ) ϕ 2 ( μ ( i ) ) ϕ 3 ( μ ( i ) ) ϕ 4 ( μ ( i ) ) ϕ 5 ( μ ( i ) ) ] ∈ R 1 × 6 P ( μ ( i ) ) = [ P T ( μ ( i ) ) O O P T ( μ ( i ) ) ] ∈ R 2 × 12 , A = [ P ( μ ( 1 ) ) ⋮ P ( μ ( Q ) ) ] ∈ R 2 Q × 12 (32) P^T(\mu^{(i)}) = [ \phi_{0}(\mu^{(i)}) \quad \phi_{1}(\mu^{(i)}) \quad \phi_{2}(\mu^{(i)}) \quad \phi_{3}(\mu^{(i)}) \quad \phi_{4}(\mu^{(i)}) \quad \phi_{5}(\mu^{(i)})] \in \mathbb R^{1\times6} \\ \mathbb P(\mu^{(i)}) = \left[ \begin{matrix} P^T(\mu^{(i)}) & O \\ O & P^T(\mu^{(i)}) \\ \end{matrix} \right] \in \mathbb R^{2\times12}, \quad \mathbb A = \left[ \begin{matrix} \mathbb P(\mu^{(1)}) \\ \vdots \\ \mathbb P(\mu^{(Q)}) \\ \end{matrix} \right] \in \mathbb R^{2Q\times12} \tag{32} \\ PT(μ(i))=[ϕ0(μ(i))ϕ1(μ(i))ϕ2(μ(i))ϕ3(μ(i))ϕ4(μ(i))ϕ5(μ(i))]R1×6P(μ(i))=[PT(μ(i))OOPT(μ(i))]R2×12,A=P(μ(1))P(μ(Q))R2Q×12(32)

在具体实现的过程中,接下来需要运行 Q Q Q次数值计算,从而得到某一时刻 t t t z ( i ) ( t ) z^{(i)}(t) z(i)(t)(全部时长的结果是一条空间轨迹),进而得到 Z Z Z。在此基础之上,基于 A # \mathbb A^\# A# Z Z Z,可以得到每一时刻的 X ( t ) X(t) X(t)(元素为分解系数 x ^ j , 1 ∼ 5 ( t ) \hat{x}_{j,1\sim 5}(t) x^j,15(t))。进一步地,代入(26)即可实现参数 ξ \xi ξ的辨识,经由(30)可以得到系统参数 θ \theta θ的辨识结果。仿真结果如下,相关代码见附录。

5 小结

这里仅仅对包含1个参数的情况进行了实施仿真。通过不同辨识参数的调整,得到如下结论:(1)改变测量噪声没有对收敛效果产生明显影响,但是增大采样率则有助于收敛速度的加快以及准确度的提升;(2)在进行随机配置过程中,将随机改为均匀分布能够得到同样的辨识效果;(3)该方法在系统参数发生动态跳变的过程中并没有很好的跟踪真实值,且修改采样步长无明显变化,应当对优化过程中的梯度算法进行调整。下一步的工作将着眼于多参数的辨识情况,以及优化算法中梯度下降能力的提升。

附录
%% 基本参数
global theta;   % 全局变量,vdp参数
real_theta = 1; esti_theta = 0;  % 真实值,辨识值   
e1 = 2; e2 = 1.5;
% 起始时间、计算步长、终止时间
t0 = 0; tf= 6; sample_stp = 0.001; 
% 总时长采样点数
t = t0:sample_stp:tf;  sample_num = length(t);   esti_xi = zeros(1,sample_num);
% 概率多项式展开参数
ns = 2; np = 1;Ns = 5; R = factorial(Ns+np)/(factorial(Ns)*factorial(np));  
% 随机变量选择Q(Q>R)个点 (-1,1)之间均匀分布
Gamma = 0.5;   Q = 15;   mu = [-1:2/Q:1];%rand(Q, 1)*2 - 1;
% Q个点对应的状态变量初始条件
x0 = zeros(ns,Q); x0(1,:) = 0.1; x0(2,:) = 10;  
%% 导入实际的采样输出
[ real_y,set_theta ] = getSampleData(x0,t0,sample_stp,sample_num,real_theta,15);
subplot(211);plot(t,real_y);hold on;xlabel('时间(s)');ylabel('电流(A)');grid on;legend('测量曲线');
%% 构造正交基矩阵,这部分与时间无关
% 勒让德多项式
xi = sym('xi'); phi = sym('phi', [R 1]); phi(1) = 1; phi(2)=xi;
for k=1:R-2  
    phi(k+1+1) = expand((2*k+1)/(k+1)*xi*phi(k+1) - k/(k+1)*phi(k));        
end
% 正交基矩阵 P
Pt = sym('Pt', [1 R]); 
for k=1:R
    Pt(k) = phi(k);
end
% 正交基矩阵 PP
PP = sym('PP1', [ns R*ns]);
for k=1:ns
    PP(k,:)=0;
    PP(k,(k-1)*R+1:k*R) = Pt;
end
% CP导数与CP矩阵计算
C = [1 0]; CPP = C*PP; dCPP = diff(CPP,xi,1);
% 
DXX = zeros(R*ns,R*ns); DXY = zeros(R*ns,1);
% 系数矩阵 AA 直接代入Q个随机变量
AA = sym('AA', [Q*ns R*ns]); % 正交基矩阵 AA
for k=1:Q
    xi = mu(k);
    AA((k-1)*ns+1:k*ns,:) = subs(PP);
end
AAp = double(inv(transpose(AA)*AA)*transpose(AA));
xi = sym('xi');
%% 迭代计算
tic;str = ['正在运行中'];
hwait = waitbar(0,'请等待>>>>>>>>');
for k=1:1:sample_num     
   t1 = t0 + sample_stp;      
   waitbar(k/sample_num,hwait,str);
   for q=1:Q      % 随机配置Q个随机变量点
       theta = e1 + e2 * mu(q); % 参数变化
       % 四阶Runge-Kutta计算
       K1(:,q) = mVanderPol(t0,x0(:,q));
       K2(:,q) = mVanderPol(t0+sample_stp/2,x0(:,q)+sample_stp*K1(:,q)/2);
       K3(:,q) = mVanderPol(t0+sample_stp/2,x0(:,q)+sample_stp*K2(:,q)/2);
       K4(:,q) = mVanderPol(t0+sample_stp,x0(:,q)+sample_stp*K2(:,q));
       x1(:,q) = x0(:,q) + sample_stp/6*(K1(:,q)+2*K2(:,q)+2*K3(:,q)+K4(:,q));           
   end  
   % 构造当前时刻X矩阵  列向量,每Q个为1组,ns组
   Z(:,k) = reshape(x0,Q*ns,1);
   Xfactor(:,k) = AAp*Z(:,k);  
   % 极大似然辨识
   xi = esti_xi(:,k); dCPP_num = double(subs(dCPP,xi)); CPP_num = double(subs(CPP,xi));
   DXX = DXX + Xfactor(:,k)*transpose(Xfactor(:,k));
   DXY = DXY + Xfactor(:,k)*real_y(:,k);
   esti_xi(:,k+1) = esti_xi(:,k) - 0.5*Gamma*(dCPP_num*(DXX*transpose(CPP_num) - DXY)/(norm(DXY)+1));
   % 为下一次迭代
   t0 = t1; x0 = x1; 
   Xcoll(:,:,k) = x0'; % 不同配置点的模拟轨迹
end
close(hwait); toc% 注意必须添加close函数
 xi = sym('xi');esti_xi(1)=[];
 subplot(212);plot(t,(e1 + e2 *esti_xi));hold on;plot(t,set_theta);
 xlabel('时间(s)');ylabel('参数\theta');grid on;legend('辨识结果');

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

obotisr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值