优化控制问题介绍
优化控制问题的数学形式
{
min
(
y
(
x
)
,
u
(
x
)
)
∈
Y
×
U
J
(
y
(
x
)
,
u
(
x
)
)
,
s.t.
F
(
y
(
x
)
,
u
(
x
)
)
=
0
in
Ω
,
and
u
(
x
)
∈
U
a
d
,
\left\{\begin{aligned} &\min _{(y(\mathbf{x}), u(\mathbf{x})) \in Y \times U} J(y(\mathbf{x}), u(\mathbf{x}) ),\\ &\text { s.t. } \ \mathbf{F}(y(\mathbf{x}),u(\mathbf{x})) = 0 \ \text{ in } \Omega, \text{ and } \ u(\mathbf{x})\in U_{ad}, \end{aligned}\right.
⎩
⎨
⎧(y(x),u(x))∈Y×UminJ(y(x),u(x)), s.t. F(y(x),u(x))=0 in Ω, and u(x)∈Uad,
在这里,我们仅仅考虑目标函数是积分形式,约束条件为偏微分方程的问题,其中函数
y
,
u
y,u
y,u分别称之为状态函数和控制函数。一个经典的偏微分方程约束下的优化控制问题数学形式如下所示:
{
min
y
,
u
J
(
y
,
u
)
=
1
2
∥
y
−
y
d
∥
L
2
(
Ω
)
2
+
α
2
∥
u
∥
L
2
(
Ω
)
2
,
subject to
{
−
Δ
y
=
u
,
in
Ω
,
y
=
1
,
on
∂
Ω
,
and
u
a
≤
u
≤
u
b
a.e. in
Ω
,
\left\{\begin{aligned} &\min _{y, u} J\left(y, u\right)=\frac{1}{2}\left\|y-y_{d}\right\|_{L_{2}\left(\Omega\right)}^{2}+\frac{\alpha}{2}\left\|u\right\|_{L_{2}\left(\Omega\right)}^{2}, \\ &\text { subject to } \left\{\begin{aligned} -\Delta y &=u , \text { in } \Omega, \\ y&=1 ,\text { on }\partial \Omega,\\ \end{aligned}\right.\\ &\text{and} \quad u_a \leq u \leq u_b \quad \text { a.e. in } \Omega, \end{aligned}\right.
⎩
⎨
⎧y,uminJ(y,u)=21∥y−yd∥L2(Ω)2+2α∥u∥L2(Ω)2, subject to {−Δyy=u, in Ω,=1, on ∂Ω,andua≤u≤ub a.e. in Ω,
这个例子来源于论文:Negri, F. , et al. “Reduced basis method for parametrized elliptic optimal control problems.” SIAM Journal on Scientific Computing 35.4(2013):A2316-A2340.
其中
y
,
u
y,u
y,u 都是banach空间的函数,
y
d
y_d
yd也是一个函数。优化控制问题的目标是在给定约束条件下,寻找两个最优的函数
y
,
u
y,u
y,u使得目标函数最小。
含参优化控制问题的引入
在实际应用中,我们往往需要针对不同的参数设置来构建不同的数学模型,并且希望能够得到一种快速有效的方法来求解不同参数设置下问题的最优解,由此就得到了含参优化控制问题。
{
min
(
y
(
x
,
μ
)
,
u
(
x
,
μ
)
)
∈
Y
×
U
J
(
y
(
x
,
μ
)
,
u
(
x
,
μ
)
;
μ
)
,
s.t.
F
(
y
(
x
,
μ
)
,
u
(
x
,
μ
)
;
μ
)
=
0
in
Ω
(
μ
)
,
and
u
(
x
,
μ
)
∈
U
a
d
(
μ
)
,
\left\{\begin{aligned} &\min _{(y(\mathbf{x}, \boldsymbol{\mu}), u(\mathbf{x}, \boldsymbol{\mu})) \in Y \times U} J(y(\mathbf{x}, \boldsymbol{\mu}), u(\mathbf{x}, \boldsymbol{\mu}) ; \boldsymbol{\mu}),\\ &\text { s.t. } \ \mathbf{F}(y(\mathbf{x}, \boldsymbol{\mu}),u(\mathbf{x}, \boldsymbol{\mu});\boldsymbol{\mu}) = 0 \ \text{ in } \Omega(\boldsymbol{\mu}), \text{ and } \ u(\mathbf{x}, \boldsymbol{\mu})\in U_{ad}(\boldsymbol{\mu}), \end{aligned}\right.
⎩
⎨
⎧(y(x,μ),u(x,μ))∈Y×UminJ(y(x,μ),u(x,μ);μ), s.t. F(y(x,μ),u(x,μ);μ)=0 in Ω(μ), and u(x,μ)∈Uad(μ),
在上面这个公式中,参数
μ
\boldsymbol{\mu}
μ有多种选择,比如说目标函数中的
α
\alpha
α,或者是不等式约束中的上下界限。比如说在论文Negri, F. , et al. “Reduced basis method for parametrized elliptic optimal control problems.” SIAM Journal on Scientific Computing 35.4(2013):A2316-A2340.里面
μ
=
(
μ
1
,
μ
2
)
∈
[
1
,
3.5
]
×
[
0.5
,
2.5
]
\boldsymbol{\mu} = (\mu_1,\mu_2) \in [1,3.5] \times [0.5,2.5]
μ=(μ1,μ2)∈[1,3.5]×[0.5,2.5]
y
d
(
μ
)
=
{
1
,
i
f
0
≤
x
0
≤
1
,
μ
2
,
i
f
1
<
x
0
≤
μ
1
.
y_{d}(\boldsymbol{\mu}) = \begin{cases} 1, \quad \mathrm{if} \ 0 \leq x_0 \leq 1 ,\\ \mu_2, \quad \mathrm{if} \ 1 < x_0 \leq \mu_1. \end{cases}
yd(μ)={1,if 0≤x0≤1,μ2,if 1<x0≤μ1.
α
=
0.01
,
Ω
(
μ
)
=
[
0
,
1
]
×
[
0
,
1
+
μ
1
]
,
u
a
=
−
2
,
u
b
=
0
\alpha = 0.01,\Omega(\boldsymbol{\mu}) = [0,1] \times [0,1 + \mu_1],u_a = -2,u_b = 0
α=0.01,Ω(μ)=[0,1]×[0,1+μ1],ua=−2,ub=0
由此得到下面这个统一的数学模型:
{
min
y
(
μ
)
,
u
(
μ
)
J
(
y
(
μ
)
,
u
(
μ
)
)
=
1
2
∥
y
(
μ
)
−
y
d
(
μ
)
∥
L
2
(
Ω
(
μ
)
)
2
+
α
2
∥
u
(
μ
)
∥
L
2
(
Ω
(
μ
)
)
2
,
subject to
{
−
Δ
y
(
μ
)
=
u
(
μ
)
,
in
Ω
(
μ
)
,
y
(
μ
)
=
1
,
on
∂
Ω
(
μ
)
,
and
u
a
≤
u
(
μ
)
≤
u
b
a.e. in
Ω
(
μ
)
,
\left\{\begin{aligned} &\min _{y(\boldsymbol{\mu}), u(\boldsymbol{\mu})} J\left(y(\boldsymbol{\mu}), u(\boldsymbol{\mu})\right)=\frac{1}{2}\left\|y(\boldsymbol{\mu})-y_{d}(\boldsymbol{\mu})\right\|_{L_{2}\left(\Omega(\boldsymbol{\mu})\right)}^{2}+\frac{\alpha}{2}\left\|u(\boldsymbol{\mu})\right\|_{L_{2}\left(\Omega(\boldsymbol{\mu})\right)}^{2}, \\ &\text { subject to } \left\{\begin{aligned} -\Delta y(\boldsymbol{\mu}) &=u(\boldsymbol{\mu}) , \text { in } \Omega(\boldsymbol{\mu}), \\ y(\boldsymbol{\mu})&=1 ,\text { on }\partial \Omega(\boldsymbol{\mu}),\\ \end{aligned}\right.\\ &\text{and} \quad u_a \leq u(\boldsymbol{\mu}) \leq u_b \quad \text { a.e. in } \Omega(\boldsymbol{\mu}), \end{aligned}\right.
⎩
⎨
⎧y(μ),u(μ)minJ(y(μ),u(μ))=21∥y(μ)−yd(μ)∥L2(Ω(μ))2+2α∥u(μ)∥L2(Ω(μ))2, subject to {−Δy(μ)y(μ)=u(μ), in Ω(μ),=1, on ∂Ω(μ),andua≤u(μ)≤ub a.e. in Ω(μ),
通过上面的描述,我们可以发现所谓优化控制问题本质上还是一个优化问题,并且是一个带约束的优化问题,因此我们可以利用优化方法的一些知识来尝试求解这个问题。
优化控制问题的现有传统数值求解算法
ADMM求解
考虑优化控制问题的数学模型和优化方法的知识,我们很容易就想到可以利用ADMM或者ALM来求解约束优化问题,但是传统的ADMM算法都是针对一个有限维空间的约束优化问题展开的,而优化控制问题需要优化的目标是两个函数,两个函数都可以看成是泛函空间中的一个点,并且泛函空间是无限维的。为此我们需要寻找一种方法先把问题转化为有限维约束优化问题。
对于积分,我们可以使用中心积分公式,将区域划分成若干子区域,然后选取子区域的中心作为积分节点。另一方面,对于PDE约束,我们同样可以采取类似的方法离散化处理,比如说使用五点差分法。我们以上面论文哪个具体例子来演示,得到下面这种
{
min
y
,
u
J
(
y
,
u
)
=
1
2
(
y
−
y
d
)
T
M
(
y
−
y
d
)
+
α
2
u
T
M
u
,
subject to
A
y
=
u
,
and
u
a
≤
u
≤
u
b
a.e. in
Ω
,
\left\{\begin{aligned} &\min _{y, u} J\left(y, u\right)=\frac{1}{2}(y-y_d)^T M (y- y_d) + \frac{\alpha}{2}u^TMu, \\ &\text { subject to } A y =u ,\\ &\text{and} \quad u_a \leq u \leq u_b \quad \text { a.e. in } \Omega, \end{aligned}\right.
⎩
⎨
⎧y,uminJ(y,u)=21(y−yd)TM(y−yd)+2αuTMu, subject to Ay=u,andua≤u≤ub a.e. in Ω,
其中矩阵M由中心积分形成,矩阵A由五点差分法形成。
这种方法的好处在于把无限维泛函空间的约束优化问题转换成有限维向量空间的约束优化问题,可以轻松得到网格点的最优值,但是缺点也显而易见,这种方法需要做均匀剖分(因为差分法),而且最终的数值精度一定会受到离散格式的影响,比如说我们知道五点差分法的误差估计是
u
−
u
h
=
O
(
h
2
)
u-u_h=O(h^2)
u−uh=O(h2),那么最终的数值解肯定也只能维持
O
(
h
2
)
O(h^2)
O(h2)的量级。
上面使用的是五点差分格式离散化PDE,所以只能得到固定网格点的最优值,我们也可以使用有限元方法离散化PDE,这样就可以得到有限元近似解,整个求解过程如出一辙,唯一的难点就是有限元法构建刚度矩阵
A
A
A 和负载向量b 很麻烦,最终的约束条件不会是简单的
A
y
=
u
Ay=u
Ay=u这种形式,读者可以自行思考。
dolfin-adjoint软件
dolfin是我们发现的一个专门求解PDE约束优化问题的软件,或者说是一个python的库,这个软件暂时缺乏用户手册,不过网页上有不少demo,本人就是根据网页上的demo来学习使用dolfin的,具体的原理也请参考网页
添加链接描述
,本人不做过多解释。这个软件的使用需要结合fenics库,参考fenics官网
添加链接描述
,fenics有用户手册,自己可以到官网下载.
下面重点讲解dolfin以及相关的库的安装方法,本人都是在linux服务器安装的.这里用户需要提前熟悉linux系统,可以在电脑上安装一个oracle box作为虚拟机的平台,oracle box软件的安装和下载只需要在百度上搜索即可了解,然后在linux中安装好相关的python软件,比如说anaconda,linux安装anaconda的过程可以参考本人的博客
添加链接描述
首先还是先建一个虚拟环境,本人建的虚拟环境名字为:project
conda create -n project python=3.8
然后一路yes,建立好虚拟环境以后,使用命令:
conda activate project
激活虚拟环境。然后键入命令:
conda install -c conda-forge fenics
pip install git+https://github.com/dolfin-adjoint/pyadjoint.git@2019.1.0
这样就可以安装好dolfin,使用dolfin的时候,很多时候考虑求解圆形区域的最优控制问题,这个时候需要安装mshr库,下面介绍一下mshr库的安装.
conda install -c conda-forge mshr
上面这行命令就可以直接安装mshr(之所以我全部给出这些命令是因为之前我安装官网的安装方法都安装失败).
假设安装好了dolfin和mshr,下面我们简单介绍一下这个软件.
这个软件求解PDE或者PDE约束优化问题,都是基于有限元框架,之前我写过使用传统方法求解PDE约束优化问题的代码都是使用差分法,主要原因也是人工构造有限元方法需要组装单元,扫描单元,那个太困难,尤其是对于非线性泊松方程,就算使用五点差分法离散化,也需要求解
F
(
u
)
=
b
F(u)=b
F(u)=b这样一个非线性方程,需要调用牛顿法或者别的优化方法来求解.
这部分将结合代码进行介绍dolfin的使用:
首先需要把相关的库导入,包括数值计算的numpy,可视化的matplotlib等等,我定义了一个类INSET,这个类接受的参数包括求解区域bound,均匀剖分的形状nx,精确解和近似解的句柄函数,这个类主要是负责后续可视化处理,当精确解和近似解的句柄函数有了以后,直接在计算区域采集样本点进行可视化。下面代码求解的问题是
{
min
y
,
u
J
(
y
,
u
)
:
=
1
2
∥
y
−
y
d
∥
L
2
(
Ω
)
2
+
α
2
∥
u
∥
L
2
(
Ω
)
2
,
subject to
{
−
Δ
y
+
y
3
=
u
+
f
in
Ω
y
=
0
on
∂
Ω
,
and
u
a
≤
u
≤
u
b
a.e. in
Ω
.
\left\{\begin{aligned} &\min_{y,u} J(y, u):=\frac{1}{2}\left\|y-y_{d}\right\|_{L_{2}(\Omega)}^{2}+\frac{\alpha}{2}\|u\|_{L_{2}(\Omega)}^{2} ,\\ &\text { subject to } \left\{\begin{aligned} -\Delta y + y^3&=u+f &&\text{ in } \Omega \\ y &=0 &&\text { on } \partial \Omega, \end{aligned}\right.\\ &\text{and}\quad u_a \leq u \leq u_b \quad \text { a.e. in } \Omega.\\ \end{aligned}\right.
⎩
⎨
⎧y,uminJ(y,u):=21∥y−yd∥L2(Ω)2+2α∥u∥L2(Ω)2, subject to {−Δy+y3y=u+f=0 in Ω on ∂Ω,andua≤u≤ub a.e. in Ω.
第二步就开始组装问题以及求解,第32,33行代码负责对计算区域进行剖分,33行那个代码使用的函数UnitSquareMesh(n,n)默认是对
[
0
,
1
]
2
[0,1]^2
[0,1]2进行均匀剖分,这里的mesh也可以我们使用Gmsh构建导入,细节暂时不提,可以参考本人的博客添加链接描述
第35一直到第40行是在原来的均匀剖分基础上对网格加细,加细的区域参考36,37行调用的函数CompliedSubDomain.第42行代码通过SpatialCoornidate(mesh)把网格读取出来,这里的 x x x相当于是一个二维矩阵,第一个维度存储 x x x轴方向的信息,第二个维度存储 y y y轴方向的信息.
第44,46行是在定义有限元空间,这里的CG表示连续有限元,DG表示间断有限元,那个1表示第一类有限元.第47一直到52行是在定义右端项,这里需要注意的是degree表示自由度,但是我也不太理解这个怎么使用,一般来说自由度大一些会比较好.第52行利用了一个插值函数.
第53一直到58行是在定义约束PDE,这里的第56行利用弱形式定义控制方程,第57行定义边界条件,on _ \_{} _boundary这个参数表示默认在所有边界上都适用,这里的意思是所有的边界上都取0边界条件,如果在不同边界上的边界条件不同,此时需要重点注意,这里参考本人博客的介绍添加链接描述第58行就是求解PDE约束的代码,如果只是想求解正问题,到这一步就可以结束了.
第68行是在组装目标函数,第69行是指出控制函数是哪一个,这个代码本人忘了修改,里面的 f f f表示的是我们上面提到的控制函数, u u u表示上面提到的状态函数.第70,71行就在调用里面的求解函数进行求解了,其中注意第71行里面有一个参数bound表示的是 U a d U_{ad} Uad,也就是控制函数可能出现的不等式约束.
第75,76行定义了这个优化控制问题的精确解,79行根据上述求解出来的控制函数代入PDE,求解初对应的近似状态函数,第84求解二范数误差,第89行求解
H
1
H_1
H1误差,后面只需要根据句柄函数进行可视化就行了.
DAL求解一阶最优性条件
DAL(direct-adjoint-looping)算法是一种利用循环迭代求解优化控制问题的最优性条件的算法,一阶最优性条件也就是所谓的KKT系统。
{
min
y
,
u
J
(
y
,
u
)
:
=
1
2
∥
y
−
y
d
∥
L
2
(
Ω
)
2
+
α
2
∥
u
∥
L
2
(
Ω
)
2
,
subject to
{
−
Δ
y
+
y
3
=
u
+
f
in
Ω
y
=
0
on
∂
Ω
,
and
u
a
≤
u
≤
u
b
a.e. in
Ω
.
\left\{\begin{aligned} &\min_{y,u} J(y, u):=\frac{1}{2}\left\|y-y_{d}\right\|_{L_{2}(\Omega)}^{2}+\frac{\alpha}{2}\|u\|_{L_{2}(\Omega)}^{2} ,\\ &\text { subject to } \left\{\begin{aligned} -\Delta y + y^3&=u+f &&\text{ in } \Omega \\ y &=0 &&\text { on } \partial \Omega, \end{aligned}\right.\\ &\text{and}\quad u_a \leq u \leq u_b \quad \text { a.e. in } \Omega.\\ \end{aligned}\right.
⎩
⎨
⎧y,uminJ(y,u):=21∥y−yd∥L2(Ω)2+2α∥u∥L2(Ω)2, subject to {−Δy+y3y=u+f=0 in Ω on ∂Ω,andua≤u≤ub a.e. in Ω.
我们以这个问题为例尝试推导出对应的KKT系统。
L
=
J
(
y
,
u
)
+
∫
Ω
p
(
−
Δ
y
+
y
3
−
u
−
f
)
d
Ω
+
∫
∂
Ω
λ
y
d
s
.
J
(
y
,
u
)
=
1
2
∫
Ω
(
y
−
y
d
)
2
d
Ω
+
α
2
∫
Ω
u
2
d
Ω
L=J(y,u)+\int_{\Omega}p(-\Delta y + y^3 - u -f)d\Omega + \int_{\partial \Omega} \lambda y ds.\\ J(y,u)=\frac{1}{2} \int_{\Omega}(y-y_d)^2 d\Omega + \frac{\alpha}{2} \int_{\Omega} u^2 d\Omega
L=J(y,u)+∫Ωp(−Δy+y3−u−f)dΩ+∫∂Ωλyds.J(y,u)=21∫Ω(y−yd)2dΩ+2α∫Ωu2dΩ
∂
L
∂
p
h
=
L
(
y
,
u
,
p
+
h
,
λ
)
−
L
(
y
,
u
,
p
,
λ
)
=
∫
Ω
h
(
−
Δ
y
+
y
3
−
u
−
f
)
d
Ω
,
∂
L
∂
λ
h
=
L
(
y
,
u
,
p
,
λ
+
h
)
−
L
(
y
,
u
,
p
,
λ
)
=
∫
∂
Ω
h
y
d
Ω
\boldsymbol{\frac{\partial L}{\partial p}h=L(y,u,p + h,\lambda) -L(y,u,p ,\lambda)=\int_{\Omega} h(-\Delta y + y^3 - u - f) d\Omega},\\ \boldsymbol{\frac{\partial L}{\partial \lambda}h=L(y,u,p,\lambda + h) -L(y,u,p ,\lambda)=\int_{\partial \Omega} h y d\Omega}
∂p∂Lh=L(y,u,p+h,λ)−L(y,u,p,λ)=∫Ωh(−Δy+y3−u−f)dΩ,∂λ∂Lh=L(y,u,p,λ+h)−L(y,u,p,λ)=∫∂ΩhydΩ
利用Green公式,我们有
L
=
J
(
y
,
u
)
+
∫
Ω
p
(
y
3
−
u
−
f
)
d
Ω
+
∫
Ω
y
(
−
Δ
p
)
d
Ω
+
∫
∂
Ω
(
−
∂
y
∂
n
p
+
∂
p
∂
n
y
)
+
∫
∂
Ω
λ
y
d
s
.
∂
L
∂
y
h
=
L
(
y
+
h
,
u
,
p
,
λ
)
−
L
(
y
,
u
,
p
,
λ
)
=
∫
Ω
h
(
−
Δ
p
+
3
p
y
2
+
y
−
y
d
)
d
Ω
+
∫
∂
Ω
(
−
∂
h
∂
n
p
+
∂
p
∂
n
h
)
,
∂
L
∂
u
h
=
L
(
y
,
u
+
h
,
p
,
λ
)
−
L
(
y
,
u
,
p
,
λ
)
=
∫
Ω
(
α
u
−
p
)
h
d
Ω
L=J(y,u)+\int_{\Omega}p( y^3 - u -f)d\Omega + \int_{\Omega} y(-\Delta p) d\Omega + \int_{\partial \Omega}(-\frac{\partial y}{\partial n}p + \frac{\partial p}{\partial n}y)+ \int_{\partial \Omega} \lambda y ds.\\ \boldsymbol{\frac{\partial L}{\partial y}h=L(y + h,u,p,\lambda) -L(y,u,p ,\lambda)=\int_{\Omega} h(-\Delta p + 3py^2+ y - y_d) d\Omega} + \int_{\partial \Omega}(-\frac{\partial h}{\partial n}p + \frac{\partial p}{\partial n}h),\\ \boldsymbol{\frac{\partial L}{\partial u}h=L(y ,u + h,p,\lambda) -L(y,u,p ,\lambda)= \int_{\Omega} (\alpha u - p)h d\Omega}
L=J(y,u)+∫Ωp(y3−u−f)dΩ+∫Ωy(−Δp)dΩ+∫∂Ω(−∂n∂yp+∂n∂py)+∫∂Ωλyds.∂y∂Lh=L(y+h,u,p,λ)−L(y,u,p,λ)=∫Ωh(−Δp+3py2+y−yd)dΩ+∫∂Ω(−∂n∂hp+∂n∂ph),∂u∂Lh=L(y,u+h,p,λ)−L(y,u,p,λ)=∫Ω(αu−p)hdΩ
如果没有额外的不等式约束,最终的KKT系统就是:
{
{
−
Δ
y
+
y
3
=
u
+
f
in
Ω
y
=
0
on
∂
Ω
,
{
−
Δ
p
+
3
p
y
2
=
y
d
−
y
in
Ω
p
=
0
on
∂
Ω
,
α
u
−
p
=
0
,
in
Ω
\left\{\begin{aligned} &\left\{\begin{aligned} -\Delta y + y^3&=u+f &&\text{ in } \Omega \\ y &=0 &&\text { on } \partial \Omega, \end{aligned}\right.\\ &\left\{\begin{aligned} -\Delta p + 3py^2&=y_d -y &&\text{ in } \Omega \\ p &=0 &&\text { on } \partial \Omega, \end{aligned}\right.\\ &\alpha u - p=0 ,\text{ in } \Omega \end{aligned}\right.
⎩
⎨
⎧{−Δy+y3y=u+f=0 in Ω on ∂Ω,{−Δp+3py2p=yd−y=0 in Ω on ∂Ω,αu−p=0, in Ω
d
J
u
=
α
u
−
p
dJ_{u} =\alpha u - p
dJu=αu−p称之为目标函数关于
u
u
u 的全导数,第一个PDE称之为状态方程(state equation),第二个PDE称之为伴随方程(adjoint equation)。
这里我们给出两个NS方程约束的优化控制问题:
第一个问题来自论文:Fikriye, et al. “A projection-based variational multiscale method for the optimal control problems governed by the stationary Navier–Stokes equations.” Applied Numerical Mathematics (2016).
y
∗
=
e
−
0.05
ν
(
sin
2
π
x
1
sin
π
x
2
cos
π
x
2
−
sin
2
π
x
2
sin
π
x
1
cos
π
x
1
)
,
λ
∗
=
(
e
−
0.05
ν
−
e
−
ν
)
(
sin
2
π
x
1
sin
π
x
2
cos
π
x
2
−
sin
2
π
x
2
sin
π
x
1
cos
π
x
1
,
)
.
u
∗
=
λ
∗
,
ν
=
0.01
,
Ω
=
[
0
,
1
]
2
,
d
J
u
=
u
−
λ
\begin{aligned} y^{*}&=e^{-0.05 \nu}\left(\begin{array}{c} \sin ^{2} \pi x_{1} \sin \pi x_{2} \cos \pi x_{2} \\ -\sin ^{2} \pi x_{2} \sin \pi x_{1} \cos \pi x_{1} \end{array}\right),\\ \lambda^{*}&=\left(e^{-0.05 \nu}-e^{-\nu}\right)\left(\begin{array}{c} \sin ^{2} \pi x_{1} \sin \pi x_{2} \cos \pi x_{2} \\ -\sin ^{2} \pi x_{2} \sin \pi x_{1} \cos \pi x_{1}, \end{array}\right).\\ u^*&=\lambda^* \end{aligned},\\ \nu=0.01,\Omega=[0,1]^2,\\ dJ_{u}=u-\lambda
y∗λ∗u∗=e−0.05ν(sin2πx1sinπx2cosπx2−sin2πx2sinπx1cosπx1),=(e−0.05ν−e−ν)(sin2πx1sinπx2cosπx2−sin2πx2sinπx1cosπx1,).=λ∗,ν=0.01,Ω=[0,1]2,dJu=u−λ
这个问题的伴随方程是:
−
ν
Δ
λ
−
(
y
⋅
∇
)
λ
+
(
∇
y
)
T
λ
+
∇
q
=
y
−
y
d
in
Ω
,
div
λ
=
0
in
Ω
,
λ
=
0
on
∂
Ω
,
\begin{aligned} -\nu \Delta \lambda-(y \cdot \nabla) \lambda+(\nabla y)^{T} \lambda+\nabla q &=y-y_{d} & & \text { in } \Omega, \\ \operatorname{div} \lambda &=0 & & \text { in } \Omega, \\ \lambda &=0 & & \text { on } \partial \Omega, \end{aligned}
−νΔλ−(y⋅∇)λ+(∇y)Tλ+∇qdivλλ=y−yd=0=0 in Ω, in Ω, on ∂Ω,
第二个问题来自论文:Yang, H. , F. N. Hwang , and X. C. Cai . “NONLINEAR PRECONDITIONING TECHNIQUES FOR FULL-SPACE LAGRANGE-NEWTON SOLUTION OF PDE-CONSTRAINED OPTIMIZATION PROBLEMS *.” Siam Journal on entific Computing (2016).
这个问题是赫赫有名的CVD问题,这个问题的伴随方程太复杂,本人没有推导,有兴趣的同学可以自己试一试,如果可以找到一种好算法快速求解,绝对可以发一篇非常好的论文。
{
min
J
=
1
2
∫
Ω
ω
2
d
Ω
+
γ
2
∫
Γ
2
∪
Γ
4
g
2
d
Γ
,
subject to
{
ω
=
−
∂
u
∂
y
+
∂
v
∂
x
−
Δ
u
−
∂
ω
∂
y
=
0
−
Δ
v
+
∂
ω
∂
x
=
0
−
1
R
e
Δ
ω
+
u
∂
ω
∂
x
+
v
∂
ω
∂
y
−
G
r
R
e
2
∂
T
∂
x
=
0
−
1
R
e
P
r
Δ
T
+
u
∂
T
∂
x
+
v
∂
T
∂
y
=
0
and
{
v
=
(
0
,
0
)
and
T
=
1
on
Γ
1
∪
C
1
∪
C
2
,
v
=
(
0
,
0
)
and
∂
T
∂
n
=
g
−
T
on
Γ
2
∪
Γ
4
,
v
=
(
0
,
−
4
(
x
−
1
/
3
)
(
2
/
3
−
x
)
)
and
T
=
0
on
Γ
3
,
m
,
v
=
(
0
,
2
x
(
1
/
3
−
x
)
)
and
∂
T
∂
n
=
0
on
Γ
3
,
l
∪
C
4
,
v
=
(
0
,
2
(
x
−
2
/
3
)
(
1
−
x
)
)
and
∂
T
∂
n
=
0
on
Γ
3
,
r
∪
C
3
,
\left\{\begin{aligned} &\min J=\frac{1}{2}\int_{\Omega}\omega^2 d\Omega+\frac{\gamma}{2}\int_{\Gamma_2\cup\Gamma_4}g^2d\Gamma, \\ &\text { subject to } \left\{\begin{aligned} \omega = -\frac{\partial u}{\partial y} + \frac{\partial v}{\partial x}\\ -\Delta u-\frac{\partial \omega}{\partial y}=0 \\ -\Delta v+\frac{\partial \omega}{\partial x}=0 \\ -\frac{1}{R e} \Delta \omega+u \frac{\partial \omega}{\partial x}+v \frac{\partial \omega}{\partial y}-\frac{G r}{R e^{2}} \frac{\partial T}{\partial x}=0 \\ -\frac{1}{R e P r} \Delta T+u \frac{\partial T}{\partial x}+v \frac{\partial T}{\partial y}=0 \end{aligned}\right.\\ &\text{and} \left\{\begin{array}{lll} \mathbf{v}=(0,0) \text { and } T=1 & \text { on } \quad \Gamma_{1} \cup C_{1} \cup C_{2}, \\ \mathbf{v}=(0,0) \text { and } \frac{\partial T}{\partial n}=g-T & \text { on } \quad \Gamma_{2} \cup \Gamma_{4}, \\ \mathbf{v}=(0,-4(x-1 / 3)(2 / 3-x)) \text { and } T=0 & \text { on } \quad \Gamma_{3, m}, \\ \mathbf{v}=(0,2 x(1 / 3-x)) \text { and } \frac{\partial T}{\partial n}=0 & \text { on } \quad \Gamma_{3, l} \cup C_{4}, \\ \mathbf{v}=(0,2(x-2 / 3)(1-x)) \text { and } \frac{\partial T}{\partial n}=0 & \text { on } \quad \Gamma_{3, r} \cup C_{3}, \end{array}\right. \end{aligned}\right.
⎩
⎨
⎧minJ=21∫Ωω2dΩ+2γ∫Γ2∪Γ4g2dΓ, subject to ⎩
⎨
⎧ω=−∂y∂u+∂x∂v−Δu−∂y∂ω=0−Δv+∂x∂ω=0−Re1Δω+u∂x∂ω+v∂y∂ω−Re2Gr∂x∂T=0−RePr1ΔT+u∂x∂T+v∂y∂T=0and⎩
⎨
⎧v=(0,0) and T=1v=(0,0) and ∂n∂T=g−Tv=(0,−4(x−1/3)(2/3−x)) and T=0v=(0,2x(1/3−x)) and ∂n∂T=0v=(0,2(x−2/3)(1−x)) and ∂n∂T=0 on Γ1∪C1∪C2, on Γ2∪Γ4, on Γ3,m, on Γ3,l∪C4, on Γ3,r∪C3,
神经网络算法求解优化控制问题
惩罚函数算法
惩罚函数算法的思想特别简单:
1:搭建神经网络分别拟合状态函数和控制函数,比如说得到
y
(
θ
y
)
,
u
(
θ
u
)
y(\theta_y),u(\theta_u)
y(θy),u(θu)
2:定义损失函数为
L
(
y
,
u
)
=
J
(
y
,
u
)
+
β
1
F
(
y
,
u
)
2
+
β
2
∥
u
−
P
U
a
d
(
u
)
∥
,
(
β
1
,
β
2
)
L(y,u)= J(y,u) + \beta_1 \mathbf{F}(y,u)^2 + \beta_2 \|u - \mathbf{P}_{U_{ad}}(u)\|,(\beta_1,\beta_2)
L(y,u)=J(y,u)+β1F(y,u)2+β2∥u−PUad(u)∥,(β1,β2)也被称之为惩罚系数。
3:在计算区域采集样本点,组装损失函数,然后利用pytorch自带的优化器不断优化损失函数,最终更新神经网络参数得到近似解,即
min
θ
L
(
y
(
θ
y
)
,
u
(
θ
u
)
)
\min_{\theta} L(y(\theta_y),u(\theta_u))
minθL(y(θy),u(θu))
值得注意的是,一般来说,只有当
(
β
1
,
β
2
)
(\beta_1,\beta_2)
(β1,β2)都接近正无穷的时候,此时的无约束问题才会和原始优化控制问题等价,但是当惩罚系数太大,这个无约束优化问题就会病态,此时我们用神经网络优化就很容易出现训练问题。一个好的惩罚系数对于数值精度有很大的帮助,但是经常我们不知道如何选择惩罚系数,所以很难得到一个可以接受的数值解。
事实上,在具体实现过程中,我们往往一开始选择一个比较小的惩罚系数,然后设置一个外迭代,每隔一定迭代次数就扩大一定比例的惩罚系数,这样更容易控制训练过程。
增广lagrange函数和神经网络的结合算法
为了避免惩罚系数对数值解造成主导性的影响,有的论文提出了一种hPINN的算法,这种算法的核心就在于利用增广lagrange函数结合神经网络。
L
(
y
,
u
)
=
J
(
y
,
u
)
+
(
p
1
,
F
(
y
,
u
)
)
+
(
p
2
,
u
−
P
U
a
d
(
u
)
)
+
β
1
F
(
y
,
u
)
2
+
β
2
∥
u
−
P
U
a
d
(
u
)
∥
L(y,u)= J(y,u) + (p_1,\mathbf{F}(y,u)) + (p_2,u - \mathbf{P}_{U_{ad}}(u))+ \beta_1 \mathbf{F}(y,u)^2 + \beta_2 \|u - \mathbf{P}_{U_{ad}}(u)\|
L(y,u)=J(y,u)+(p1,F(y,u))+(p2,u−PUad(u))+β1F(y,u)2+β2∥u−PUad(u)∥,内积其实就是两个函数在区域的乘积积分。这个时候就可以根据ADMM的法则来更新神经网络参数了。
1:初始化神经网络参数
(
θ
y
,
θ
u
)
(\theta_y,\theta_u)
(θy,θu),在计算区域中采集一定数目的样本点(也是区域的积分节点),假设得到
{
x
i
}
i
=
0
N
−
1
∈
Ω
\{\mathbf{x}_i\}_{i=0}^{N-1} \in \Omega
{xi}i=0N−1∈Ω 这样N个样本点,初始化向量
p
1
∈
R
N
,
p
2
∈
R
N
p_1 \in R^{N},p_2 \in R^{N}
p1∈RN,p2∈RN ,注意这两个向量的维度跟样本点数目完全一致,设置外循环迭代次数。
2a:
θ
y
k
+
1
=
arg
min
θ
y
L
(
y
(
θ
y
)
,
u
(
θ
u
k
)
,
p
1
k
,
p
2
k
)
\theta_y^{k+1}=\arg \min_{\theta_y} L(y(\theta_y),u(\theta_u^k),p_1^k,p_2^k)
θyk+1=argminθyL(y(θy),u(θuk),p1k,p2k)
2b:
θ
u
k
+
1
=
arg
min
θ
u
L
(
y
(
θ
y
k
+
1
)
,
u
(
θ
u
)
,
p
1
k
,
p
2
k
)
\theta_u^{k+1}=\arg \min_{\theta_u} L(y(\theta_y^{k+1}),u(\theta_u),p_1^k,p_2^k)
θuk+1=argminθuL(y(θyk+1),u(θu),p1k,p2k)
2c:
p
1
k
+
1
=
p
1
k
+
β
1
F
(
y
(
θ
y
k
+
1
)
,
u
(
θ
y
k
+
1
)
)
;
p
2
k
+
1
=
p
2
k
+
β
2
(
u
(
θ
u
k
+
1
)
−
P
U
a
d
(
u
(
θ
u
k
+
1
)
)
)
p_1^{k+1}=p_1^k + \beta_1 \mathbf{F}(y(\theta_y^{k+1}),u(\theta_y^{k+1}));p_2^{k+1}=p_2^k + \beta_2(u(\theta_u^{k+1})-\mathbf{P}_{U_{ad}}(u(\theta_u^{k+1})))
p1k+1=p1k+β1F(y(θyk+1),u(θyk+1));p2k+1=p2k+β2(u(θuk+1)−PUad(u(θuk+1)))
这种算法的特点就在于2a,2b两个更新参数的过程,相当于说2a(2b)其实都需要求解一个无约束优化的子问题,这个其实并不容易,一般我们调用优化器训练这种子问题损失函数的时候,或许也需要多个epoch才能停机。
这种算法一定程度上克服了上一个惩罚函数方法的缺点,但其实也是五十步笑百步,数值结果依然会受到惩罚系数影响,而且这种算法数值精度会受到积分离散化影响,如果选取的积分节点太少,数值结果很容易出错。
extended PINN
这是最近的一篇比较有意思的论文提出来的,主要针对的优化控制问题是下面这种形式:
{
min
(
y
(
x
,
μ
)
,
u
(
x
,
μ
)
)
∈
Y
×
U
J
(
y
(
x
,
μ
)
,
u
(
x
,
μ
)
;
μ
)
,
s.t.
F
(
y
(
x
,
μ
)
,
u
(
x
,
μ
)
;
μ
)
=
0
in
Ω
(
μ
)
\left\{\begin{aligned} &\min _{(y(\mathbf{x}, \boldsymbol{\mu}), u(\mathbf{x}, \boldsymbol{\mu})) \in Y \times U} J(y(\mathbf{x}, \boldsymbol{\mu}), u(\mathbf{x}, \boldsymbol{\mu}) ; \boldsymbol{\mu}),\\ &\text { s.t. } \ \mathbf{F}(y(\mathbf{x}, \boldsymbol{\mu}),u(\mathbf{x}, \boldsymbol{\mu});\boldsymbol{\mu}) = 0 \ \text{ in } \Omega(\boldsymbol{\mu}) \end{aligned}\right.
⎩
⎨
⎧(y(x,μ),u(x,μ))∈Y×UminJ(y(x,μ),u(x,μ);μ), s.t. F(y(x,μ),u(x,μ);μ)=0 in Ω(μ)
注意到这种数学形式最大的特点就在于
u
u
u没有施加额外的约束,给一个具体的例子如下所示:
{
min
y
,
u
J
(
y
,
u
)
:
=
1
2
∥
y
−
y
d
∥
L
2
(
Ω
)
2
+
α
2
∥
u
∥
L
2
(
Ω
)
2
,
subject to
{
−
Δ
y
+
y
3
=
u
+
f
in
Ω
y
=
0
on
∂
Ω
,
\left\{\begin{aligned} &\min_{y,u} J(y, u):=\frac{1}{2}\left\|y-y_{d}\right\|_{L_{2}(\Omega)}^{2}+\frac{\alpha}{2}\|u\|_{L_{2}(\Omega)}^{2} ,\\ &\text { subject to } \left\{\begin{aligned} -\Delta y + y^3&=u+f &&\text{ in } \Omega \\ y &=0 &&\text { on } \partial \Omega, \end{aligned}\right.\\ \\ \end{aligned}\right.
⎩
⎨
⎧y,uminJ(y,u):=21∥y−yd∥L2(Ω)2+2α∥u∥L2(Ω)2, subject to {−Δy+y3y=u+f=0 in Ω on ∂Ω,
针对这个问题,我们给出KKT条件如下:
{
{
−
Δ
y
+
y
3
=
u
+
f
in
Ω
y
=
0
on
∂
Ω
,
{
−
Δ
p
+
3
p
y
2
=
y
d
−
y
in
Ω
p
=
0
on
∂
Ω
,
α
u
−
p
=
0
,
in
Ω
\left\{\begin{aligned} &\left\{\begin{aligned} -\Delta y + y^3&=u+f &&\text{ in } \Omega \\ y &=0 &&\text { on } \partial \Omega, \end{aligned}\right.\\ &\left\{\begin{aligned} -\Delta p + 3py^2&=y_d -y &&\text{ in } \Omega \\ p &=0 &&\text { on } \partial \Omega, \end{aligned}\right.\\ &\alpha u - p=0 ,\text{ in } \Omega \end{aligned}\right.
⎩
⎨
⎧{−Δy+y3y=u+f=0 in Ω on ∂Ω,{−Δp+3py2p=yd−y=0 in Ω on ∂Ω,αu−p=0, in Ω
这种算法的核心在于构建了三个神经网络分别拟合近似解
y
,
u
,
p
y,u,p
y,u,p,然后利用PINN原理搭建损失函数如下:
L
o
s
s
=
L
s
+
L
a
+
L
d
,
L
s
=
∑
i
=
0
N
−
1
(
−
Δ
y
+
y
3
−
u
−
f
)
i
2
+
∑
j
y
j
2
,
L
a
=
∑
i
=
0
N
−
1
(
−
Δ
p
+
3
p
y
2
+
y
−
y
d
)
i
2
+
∑
j
p
j
2
,
L
d
=
∑
i
=
0
N
−
1
(
α
u
−
p
)
i
2
Loss = L_s + L_a + L_d,\\ L_s = \sum_{i=0}^{N-1} (-\Delta y + y^3 - u - f)_{i}^2 + \sum_{j}y_{j}^2,\\ L_a = \sum_{i=0}^{N-1} (-\Delta p + 3py^2 + y - y_d)_{i}^2 + \sum_{j}p_{j}^2,\\ L_d = \sum_{i=0}^{N-1} (\alpha u - p)_{i}^2
Loss=Ls+La+Ld,Ls=∑i=0N−1(−Δy+y3−u−f)i2+∑jyj2,La=∑i=0N−1(−Δp+3py2+y−yd)i2+∑jpj2,Ld=∑i=0N−1(αu−p)i2
其中
y
j
y_j
yj表示在区域边界的近似值,有了这个损失函数以后,我们就可以直接仿造PINN求解PDE的过程,不断优化损失函数得到最终的数值解,数值实验证明,这种算法求解这种简单的问题可以达到非常高的精度。
但是,一旦约束复杂,这种算法将会失效。比如说针对上面这个问题,我们引入不等式约束,得到的KKT系统就复杂多了。
{
{
−
Δ
y
+
y
3
=
u
+
f
in
Ω
y
=
0
on
∂
Ω
,
{
−
Δ
p
+
3
p
y
2
=
y
d
−
y
in
Ω
p
=
0
on
∂
Ω
,
α
u
−
p
−
λ
a
+
λ
b
=
0
,
in
Ω
,
λ
a
(
u
a
−
u
)
=
0
,
in
Ω
λ
b
(
u
b
−
u
)
=
0
,
in
Ω
u
a
≤
u
≤
u
b
,
in
Ω
λ
a
>
0
,
λ
b
>
0.
\left\{\begin{aligned} &\left\{\begin{aligned} -\Delta y + y^3&=u+f &&\text{ in } \Omega \\ y &=0 &&\text { on } \partial \Omega, \end{aligned}\right.\\ &\left\{\begin{aligned} -\Delta p + 3py^2&=y_d -y &&\text{ in } \Omega \\ p &=0 &&\text { on } \partial \Omega, \end{aligned}\right.\\ &\alpha u - p - \lambda_a + \lambda_b=0 ,\text{ in } \Omega ,\\ &\lambda_a(u_a - u)=0,\text{ in } \Omega\\ &\lambda_b(u_b-u)=0,\text{ in } \Omega\\ &u_a \leq u \leq u_b,\text{ in } \Omega\\ &\lambda_a >0, \lambda_b > 0. \end{aligned}\right.
⎩
⎨
⎧{−Δy+y3y=u+f=0 in Ω on ∂Ω,{−Δp+3py2p=yd−y=0 in Ω on ∂Ω,αu−p−λa+λb=0, in Ω,λa(ua−u)=0, in Ωλb(ub−u)=0, in Ωua≤u≤ub, in Ωλa>0,λb>0.
对于这个复杂的KKT系统,如果也去定义一个类似的损失函数,将会导致损失函数附带多个惩罚系数,届时算法就会失效。
L1稀疏优化控制问题的数值解法
先给定一个L1稀疏优化控制问题的数学模型如下:
{
min
y
,
u
J
(
y
,
u
)
=
1
2
∥
y
−
y
d
∥
L
2
(
Ω
)
2
+
α
2
∥
u
∥
L
2
(
Ω
)
2
+
β
∥
u
∥
L
1
(
Ω
)
,
subject to
{
−
Δ
y
=
u
+
f
,
in
Ω
,
y
=
0
,
on
∂
Ω
,
and
u
a
≤
u
≤
u
b
a.e. in
Ω
,
\left\{\begin{aligned} &\min _{y, u} J\left(y, u\right)=\frac{1}{2}\left\|y-y_{d}\right\|_{L_{2}\left(\Omega\right)}^{2}+\frac{\alpha}{2}\left\|u\right\|_{L_{2}\left(\Omega\right)}^2 + \beta \left\|u\right\|_{L_{1}\left(\Omega\right)}, \\ &\text { subject to } \left\{\begin{aligned} -\Delta y &=u + f, \text { in } \Omega, \\ y&=0 ,\text { on }\partial \Omega,\\ \end{aligned}\right.\\ &\text{and} \quad u_a \leq u \leq u_b \quad \text { a.e. in } \Omega, \end{aligned}\right.
⎩
⎨
⎧y,uminJ(y,u)=21∥y−yd∥L2(Ω)2+2α∥u∥L2(Ω)2+β∥u∥L1(Ω), subject to {−Δyy=u+f, in Ω,=0, on ∂Ω,andua≤u≤ub a.e. in Ω,
来自大连理工大学数学科学学院的于波老师团队专门针对这种问题写了一篇论文。
[1] Song, X. , et al. “A FE-inexact heterogeneous ADMM for Elliptic Optimal Control Problems with {
L
1
L^1
L1-Control Cost.” Journal of Systems Science & Complexity 31.6(2017).
这篇论文有一个非常有意思的细节,这篇文章专门解析了上面这种优化控制问题的最优性条件:
{
{
−
Δ
y
=
u
+
f
in
Ω
y
=
0
on
∂
Ω
,
{
−
Δ
p
=
y
d
−
y
in
Ω
p
=
0
on
∂
Ω
,
u
=
P
[
u
a
,
u
b
]
(
1
α
L
(
p
,
β
)
)
,
in
Ω
L
(
p
,
β
)
=
s
g
n
(
p
)
max
{
∣
p
∣
−
β
,
0
}
\left\{\begin{aligned} &\left\{\begin{aligned} -\Delta y &=u+f &&\text{ in } \Omega \\ y &=0 &&\text { on } \partial \Omega, \end{aligned}\right.\\ &\left\{\begin{aligned} -\Delta p &=y_d -y &&\text{ in } \Omega \\ p &=0 &&\text { on } \partial \Omega, \end{aligned}\right.\\ &u = \mathbf{P}_{[u_a,u_b]}(\frac{1}{\alpha}\mathbf{L}(p,\beta)) ,\text{ in } \Omega \end{aligned}\right.\\ \mathbf{L}(p,\beta)=sgn(p) \max \{|p| - \beta,0\}
⎩
⎨
⎧{−Δyy=u+f=0 in Ω on ∂Ω,{−Δpp=yd−y=0 in Ω on ∂Ω,u=P[ua,ub](α1L(p,β)), in ΩL(p,β)=sgn(p)max{∣p∣−β,0}
sgn是示性函数,在左半轴为-1,原点为0,右半轴为1