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;θ),0≤t≤tf,x(0)=x0y=C(θ)x(1)
其中, x ∈ R n s x\in \mathbb R^{n_s} x∈Rns,存在 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=0∑Npθ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,ξ)=∣α∣=0∑Nsxj,α(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=1∏npρi(ξi),Φα(ξ)=i=1∏npϕ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
Q≥r表示配置点的数量。需要特别注意的是,
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)=∣α∣=0∑Nsxj,α(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)⎦⎥⎥⎥⎥⎥⎥⎤Q⋅ns×1∈RQ×ns,z(i)=⎣⎢⎢⎢⎢⎢⎢⎢⎡z1(i)⋮zj(i)⋮zns(i)⎦⎥⎥⎥⎥⎥⎥⎥⎤ns×1∈Rns(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,ξ)=∣α∣=0∑Nsxj,α(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×1∈Rr,Xj(t)=⎣⎢⎢⎡⋮xj,α(t)⋮⎦⎥⎥⎤r×1∈Rr(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(ξ)OOO⋱OOOPT(ξ)⎦⎤ns×r⋅ns⎣⎢⎢⎢⎢⎢⎢⎡X1(t)⋮Xj(t)⋮Xns(t)⎦⎥⎥⎥⎥⎥⎥⎤r⋅ns×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)⎦⎥⎥⎥⎥⎥⎥⎤Q⋅ns×1=⎣⎢⎢⎢⎢⎢⎢⎡P(μ(1))⋮P(μ(i))⋮P(μ(Q))⎦⎥⎥⎥⎥⎥⎥⎤Q⋅ns×r⋅ns⎣⎢⎢⎢⎢⎢⎢⎡X1(t)⋮Xj(t)⋮Xns(t)⎦⎥⎥⎥⎥⎥⎥⎤r⋅ns×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 r⋅ns个元素实际上对应 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)−1AT∈Rr⋅ns×Q⋅ns(16)
其中,矩阵运算 A # \mathbb A^{\#} A#表示Moore-Penrose伪逆,配置点的选择过程中需要确保这一伪逆存在(即 Q ≥ r Q\geq r Q≥r)。
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=0∑Npθi,mϕm(ξi),i=1,...,np(17)
假设系统输出的噪声符合期望为零高斯分布,协方差矩阵为
R
∈
R
n
y
×
n
y
R\in\mathbb R^{n_y\times n_y}
R∈Rny×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)=τ=0∏tρ(y(τ)∣ξ)∝e−21∑τ=0t[y(τ)−y^(τ,ξ)]TR−1[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τ=0∑t[y(τ)−y^(τ,ξ)]TR−1[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=1∑nyj=1∑ny[R−1]i,j[(τ=0∑tyiyj)−2CiP(τ=0∑tXyj)+CiP(τ=0∑tXXT)(CiP)T](21)
其中, [ R − 1 ] i , j [R^{-1}]_{i,j} [R−1]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)=τ=0∑tG(τ)DG(t+Δt)=τ=0∑t+Δ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)=∑τ=0tyiyj∈R、
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)=∑τ=0tXyj∈Rr⋅ns、
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)=∑τ=0tXXT∈Rr⋅ns×r⋅ns为固定的变量,并将(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=1∑nyj=1∑ny[R−1]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=1∑nyj=1∑ny[R−1]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=1∑nyj=1∑ny[R−1]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=∣∣∑τ=0tXyj∣∣2。特别地,偏微分导数项有
∂
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(x12−1)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ξ2−21,ϕ3(ξ)=25ξ3−23ξ,ϕ4(ξ)=835ξ4−830ξ2+83,ϕ5(ξ)=863ξ5−870ξ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=0∑Npθ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,0∼xj,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,1∼5(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('辨识结果');