前言:每天看文献总是不知道该写点什么好,不记录点东西读了就忘,就随时补充记录在博客里吧。(希望导师能够看到知道我没在摸鱼)
文章目录
概览
根据STL公式模板推理出满足dense-time real-valued信号的可行参数空间,即可行域的推导。文中提供了两种方法:
- 量词消去法 quantifier elimination
- 自适应(“暴力”)搜索法
流水账笔记
1 Introduction
首先对背景进行了介绍,系统设计中通常使用某种量化指标对系统的performance进行评估,及使用量化方法作用于动态系统的trace(有时候又称:信号、波形、轨迹)。因此设计评估方法的同时也反映了工程师对系统表现的期望。
本文进行相反的工作,已知信号来得到评价期望(specification)。即,用原文的话来说:
Given a PSTL formula, find the range of parameters that render the formula satisfied by a given set of traces.
2 Parametric Signal Temporal Logic
定义了几个重要的概念:
PSTL:
包含参数的STL
parameter valuation:
赋值,将PSTL变为STL
polarity π ( p , φ ) \pi(p,\varphi) π(p,φ) :
φ \varphi φ中的参数 p p p变大,信号是更容易满足 φ \varphi φ还是更难满足 φ \varphi φ,更容易为正
validity domain:
可行域,在这个空间中的参数都能够使信号满足公式 φ \varphi φ
3 Computing Validity Domains
介绍计算可行域的计算流程
3.1 Semilinear Validity Domains
这里为什么要定义一个semilinear的概念并不是太懂,原文是这样定义的:
A subset of the parameter space is semilinear if it can be written as a Boolean combination of linear inequalities on the corresponding variables.
即,半线性可行域可以用有关不同变量的不等式的线性组合表示。
接着证明了以下Proposition:
For every PSTL formula φ \varphi φ and piecewise-linear signal x x x, the validity domain D ( x , φ ) D(x,\varphi) D(x,φ) is semilinear.
可行域计算步骤
用以上方法得到的可行域是不等式的布尔运算组合(可以理解为在时间上分段的不等式),如图
选取最优参数
得到可行域后,我们得到的是个超曲面(多维的区间),曲面上的点都是可用的参数组合。这时,我们会想要得到optimal valuation,由于前面的假设,每个参数的polarity都是非负即正,这里选择边界的点作为最优解。边界可以看做是Pareto front,所得到的参数是tightest。
Tightness vs. robustness
这就引出了时序逻辑的两个向对概念:tightness和robustness. 我是这样理解的:
Tightness可译为极限度,表示极性为正(负)的参数的参数减小(增大),信号更容易违反公式的程度。
Robustness可以为鲁棒度,表示参数的变化不容易导致公式被违反的程度。
可以理解为,越靠边界上的点,tightness越大,robustness越小;越靠里面的点,tightness越小,robustness越大。
3.2 Example
案例复现
案例中要求解的STL如下
φ
=
⋄
[
0
,
s
2
]
□
[
0
,
s
1
]
(
x
<
p
)
\varphi=\diamond_{[0,s_2]} \square_{[0,s_1]}(x<p)
φ=⋄[0,s2]□[0,s1](x<p)
给出的信号为有5个点,通过线性插值分成了四段:
x
(
t
)
=
{
2
t
0
≤
t
<
2
8
−
2
t
2
≤
t
<
4
2
t
−
8
4
≤
t
<
5
12
−
2
t
5
≤
t
<
6
x(t)=\left\{ \begin{aligned} 2t && 0\leq t \lt2 \\ 8-2t && 2 \leq t \lt 4 \\ 2t-8 && 4 \leq t \lt 5 \\ 12-2t && 5 \leq t \lt 6 \\ \end{aligned} \right.
x(t)=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧2t8−2t2t−812−2t0≤t<22≤t<44≤t<55≤t<6
接着按照子公式的层级,从内向外进行可行域的迭代:
这是子公式
φ
1
=
(
x
<
p
)
\varphi_1=(x<p)
φ1=(x<p)的可行域
V
1
V_1
V1, 可以通过
x
(
t
)
x(t)
x(t)的表达式直接得出:
接下来怎么得到子公式
φ
2
\varphi_2
φ2的有效域
V
2
V_2
V2呢?首先,我们要处理掉
□
[
0
,
s
1
]
\square_{[0,s_1]}
□[0,s1]这个universal quantifier, 通过量词消去将其转化为全称量词“
∀
\forall
∀”:
V
2
=
d
(
x
,
φ
2
)
=
d
(
x
,
□
[
0
,
s
1
]
φ
1
)
=
{
(
t
,
p
,
s
1
)
∣
∀
t
′
∈
[
t
,
t
+
s
1
]
∩
[
0
,
6
)
,
(
t
′
,
p
,
s
1
)
∈
V
1
}
V_2=d(x,\varphi_2) \\ =d(x,\square_{[0,s_1]}\varphi_1) \\ =\{(t,p,s_1)|\forall t'\in [t,t+s_1] \cap [0,6),(t',p,s_1)\in V_1\} \\
V2=d(x,φ2)=d(x,□[0,s1]φ1)={(t,p,s1)∣∀t′∈[t,t+s1]∩[0,6),(t′,p,s1)∈V1}
可以通过画数轴来理解一下上式:
对于[0,6]区间内的任意长度为
s
1
s_1
s1的区间,该区间内都存在一点
t
′
t'
t′,使得子公式
φ
1
\varphi_1
φ1成立。
复杂度分析
如果笔算此时的可行域 V 2 V_2 V2的话,我们会发现,由于可行域 V 1 V_1 V1分成了四段,那么 t t t可以取4种情况, t ′ t' t′则可以取5种情况(可以大于6),组合下来就是20种情况。
计算的复杂度取决于分段的段数,也就是最初采样点的个数。如果有n+1个采样点,那么信号就被分成了n段,则需要分 n × ( n + 1 ) n\times(n+1) n×(n+1)中情况,复杂度直接爆炸。
同理,下文中的
V
3
V_3
V3也可以通过类似的方法用存在量词“
∃
\exist
∃”消去always量词“
⋄
\diamond
⋄”:
V
3
=
d
(
x
,
⋄
[
0
,
s
2
]
φ
2
)
=
{
(
t
,
p
,
s
1
,
s
2
)
∣
∃
t
′
∈
[
t
,
t
+
s
2
]
∩
[
0
,
6
)
,
(
t
′
,
p
,
s
1
,
s
2
)
∈
V
2
}
V_3=d(x,\diamond_{[0,s_2]}\varphi_2)\\ =\{(t,p,s_1,s_2)|\exist t'\in[t,t+s_2]\cap[0,6), (t',p,s_1,s_2)\in V_2 \}
V3=d(x,⋄[0,s2]φ2)={(t,p,s1,s2)∣∃t′∈[t,t+s2]∩[0,6),(t′,p,s1,s2)∈V2}
3.3 Experimental Results
问题理解
φ
s
t
:
□
(
(
x
≥
p
)
→
⋄
[
0
,
s
2
]
□
[
0
,
s
1
]
(
x
<
p
)
)
\varphi_{st}: \square((x\geq p) \rightarrow \diamond_{[0,s_2]} \square_{[0,s_1]}(x<p))
φst:□((x≥p)→⋄[0,s2]□[0,s1](x<p))
上式反映的是稳定特性,要求信号一旦超过设定的阈值
p
p
p,则系统控制应该能够在
s
2
s_2
s2时间内把信号拉回阈值内,并且拉回去之后,信号能够稳定在阈值内至少
s
1
s_1
s1时间。
计算工具
这里使用了Redlog这个软件。因为数据量稍微大一点,手算就不现实了。
计算结果
得到的结果就是计算时间实在是太长了,才取128个点,第二级的计算时间就超过了10分钟(这里*是指10min time-out)。
这里提到了Fourier-Motzkin quantifier elimination,有空再补充吧。
表格中的description size的解释如下
The size of the solution corresponds to the number of linear inequalities used for its representation.
4 Approximating Validity Domains
由于上面的方法实在是太慢了,于是又提出了一种基于智能搜索的算法。
下面这一句话怎么理解呢?
For every point ( u , v ) (u, v) (u,v) in the parameter space we can pose a query concerning its membership in D ( x , φ ) D(x, φ) D(x,φ) by constructing the STL formula φ ( u , v ) φ(u,v) φ(u,v) and checking whether x ⊨ φ ( u , v ) x\models φ(u,v) x⊨φ(u,v).
用人话就是说:对于参数空间的每一个点,我们都可以带进STL公式试试看,这组参数是否在可行域 D ( x , φ ) D(x,\varphi) D(x,φ)内。
Monotonic Validity Domain
又出现了新名词——单调可行域
人话:我探究的变量是
P
=
(
p
1
,
.
.
.
,
p
i
,
.
.
.
,
p
g
+
h
)
P=(p_1,...,p_i,...,p_{g+h})
P=(p1,...,pi,...,pg+h),假设已经得到一组在可行域中的参数
V
V
V,如果这一组参数中有一个参数
v
i
v_i
vi的极性为正(负),则增大(减小)
v
i
v_i
vi,这组参数仍然在可行域
V
V
V内。(忘记polarity的定义可以点击大纲回去看一看)
坐标变换
接下来,为了统一讨论,对于负极性的变量,通过“ p ′ = − p p'=-p p′=−p”坐标变换将所有参数的极性都统一为正极性,即 p p p增大,robustness增大。这样的话,可行域就是边界的上半部分的参数空间。
寻找Pareto前沿
从可行域外的点出发,尝试更大的参数组合,直到找到满足条件的最小值——临界面上的某个点。在多参数优化问题中,这个临界面被称为Pareto前沿,借一张图示意。
注意由于可行域的定义中取的是“
<
\lt
<”符号,所以这里得到的可行域是不包括边界的,需要找一个在可行域内无限接近于边界的点(
ϵ
\epsilon
ϵ-approximation)。
从上图可以看出,分界是处于
D
+
D_+
D+和
D
−
D_-
D−之前的,所以这里采取了类似我们中学学过的二分法逐步逼近边缘,因此我愿将这个方法成为暴力搜索法。(文中用的词是“adaptive”,但我没看出体现)
复杂度分析
容易想象,当变量一多,搜索的复杂度也是爆炸的,但是在编程上比第一种方法要容易实现的多。并且,至少不再制约于信号样本的规模了,应用范围就大了很多。
4.1 Experimental Results
这里使用BREACH对计算结果进行了评估,计算了公式的准确性。
关于BREACH,这篇文献进行了详细介绍:
Donzé A. (2010) Breach, A Toolbox for Verification and Parameter Synthesis of Hybrid Systems. In: Touili T., Cook B., Jackson P. (eds) Computer Aided Verification. CAV 2010. Lecture Notes in Computer Science, vol 6174. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-14295-6_17
得到的结果就是暴力搜索法速度快、可行性高,但是其准确性不如量词消去法。但是,可以通过增加搜索次数,牺牲计算时间来达到任意实际精度。
上面的实验结果颇具疑惑性,本来还以为是学习公式所画的时间,结果仔细一看是针对不同的input大小和公式模板,进行搜索算法运行一个循环(satisfaction query)赋值试错所花费的时间。
5 Discussion
后期工作
- 增加公式模板复杂度以及input规模
- 程序化、泛化量词消去法的算法
- 参考下面两篇文章提高量词消去法的计算效率
[1] Monniaux, D.: A Quantifier Elimination Algorithm for Linear Real Arithmetic. In:
Cervesato, I., Veith, H., Voronkov, A. (eds.) LPAR 2008. LNCS (LNAI), vol. 5330, pp. 243–257. Springer, Heidelberg (2008)
[2] Monniaux, D.: Automatic modular abstractions for linear constraints. In: POPL 2009, pp.
140–151. ACM (2009)
- 探讨polarity不连续、无单调性的情况
- 探讨tightness和robustness间的trade-off
- 公式模板的学习
- 探索工程应用
思考与记录
作为时序逻辑学习与推理的元老级文献,这篇文章中提出的方法可以说是比较intuitive的,计算效率不能得到有效保障,阅读下一篇文献的目的应为找到更高效的计算方法。