【论文精读】时序逻辑应用之模型预测控制Model Predictive Control with Signal Temporal Logic Specifications

2023-11-20

前言:因为天天写代码实在是太枯燥了,所以读点其他东西来调剂一下,这样科研进度不至于停下。前面读了几篇关于时序逻辑学习的文章,今天来了解一下时序逻辑公式在控制中的应用。

Raman, V., Donze, A., Maasoumy, M., Murray, R. M., Sangiovanni-Vincentelli, A., & Seshia, S. A. (2014, December). Model predictive control with signal temporal logic specifications. 53rd IEEE Conference on Decision and Control. https://doi.org/10.1109/cdc.2014.7039363

概览

对系统特性做出约束是时序逻辑的作用之一。在这篇文章中,STL可以用来描述系统的safety, response, bounded liveness等多种属性。而控制器的设计要把这些属性约束考虑在内,这篇文章探讨的就是如何将形式语言转化为模型语言,即数学公式,设计控制器使得系统满足时序逻辑约束。本文把混合整数线性规划问题与模型预测控制相结合,完成了对STL公式的编码。验证实验为大楼的能源和温度控制。

流水账笔记

1 Introduction

  • 主要工作
  1. 将STL约束编码 转换为MILP约束
  2. 设计MPC控制器
  3. 大楼暖空的模型验证

2 Preliminary

A. Discrete-Time Continuous Systems

离散时间连续系统:采样时间是离散值,信号的状态可以取连续值。
x t + 1 = f ( x t , u t ) x_{t+1}=f(x_t,u_t) xt+1=f(xt,ut)
DTCS的三要素:

  • 初始状态 x 0 x_0 x0
  • 控制信号 u N = u 0 u 1 u 2 . . . u N − 1 \mathbf{u}^N = u_0 u_1 u_2 ... u_{N-1} uN=u0u1u2...uN1
  • 状态轨迹(run) x ( x 0 , u N ) = x 0 x 1 x 2 … x N \mathbf{x}\left(x_{0}, \mathbf{u}^{N}\right)=x_{0} x_{1} x_{2} \ldots x_{N} x(x0,uN)=x0x1x2xN
    这里我们把N称作信号的边界(horizon),代表装填轨迹的最大编号。
    接下来还定义了代价函数: J ( x , u ) J(\mathbf{x}, \mathbf{u}) J(x,u),具体怎么用还没讲。

B. Signal Temporal Logic

参考前几篇文献对STL的定义。
另外补充bounded-time STL的时间上界(Horizon)的求取方法:
所有嵌套额时序操作子的上边界相加,表示为验证时序逻辑公式所需的最小轨迹长度。

C. Robust Satisfication of STL formulas

这篇文献.

3 Problem Statement

基于STL的优化控制

在系统轨迹符合STL公式 φ \varphi φ的前提下,优化一个与系统轨迹有关的代价函数:
argmin ⁡ u N J ( x ( x 0 , u N ) )  s.t.  x ( x 0 , u N ) ⊨ φ \begin{array}{ll} \operatorname{argmin}_{\mathbf{u}^{N}} & J\left(\mathbf{x}\left(x_{0}, \mathbf{u}^{N}\right)\right) \\ & \text { s.t. } \mathbf{x}\left(x_{0}, \mathbf{u}^{N}\right) \models \varphi \end{array} argminuNJ(x(x0,uN)) s.t. x(x0,uN)φ

基于STL的模型预测控制

最小化每一步的代价函数:
argmin ⁡ u H , t J ( x ( x t , u H , t ) , u H , t ) )  s.t.  x ( x 0 , u ) ⊨ φ \begin{aligned} \operatorname{argmin}_{\mathbf{u}^{H, t}} &\left.J\left(\mathbf{x}\left(x_{t}, \mathbf{u}^{H, t}\right), \mathbf{u}^{H, t}\right)\right) \\ & \text { s.t. } \mathbf{x}\left(x_{0}, \mathbf{u}\right) \models \varphi \end{aligned} argminuH,tJ(x(xt,uH,t),uH,t)) s.t. x(x0,u)φ
这里解释一下优化控制的优化函数与MPC的优化函数的主要差别。观察前后两式,唯一不同的就在于输入信号轨迹的长度一个是 N N N而另一个是 H , t H,t H,t. 其中 N N N是信号的总长度,而 H , t H,t H,t是信号在t时刻后缀的长度(暂且这么理解,后面不对再改).

4 Open-loop Controller Synthesis

MILP(混合整数线性规划)中的约束分为系统约束与STL约束两部分,下面分别进行了介绍.

A. Constraints on system evolution

系统约束,即信号轨迹要满足系统转移函数 x t + 1 = f ( x t , u t ) x_{t+1}=f(x_t,u_t) xt+1=f(xt,ut).

B. STL constraints

引入了一个满足标志位 z t φ z^\varphi_t ztφ, 用来表示在 t t t时刻信号是否满足 φ \varphi φ. 那么可以推测, z φ z^\varphi zφ应该是一条与信号轨迹等长的序列,其值取0或1.

命题约束:

那么如何将命题针对优化问题进行编码呢?对于线性的原子命题 x t ≥ μ x_t \geq \mu xtμ,定义 μ ( x t ) = x t − μ \mu(x_t)=x_t-\mu μ(xt)=xtμ,于是有:

μ ( x t ) ≤ M t z t μ − ϵ t − μ ( x t ) ≤ M t ( 1 − z t μ ) − ϵ t \begin{aligned} \mu\left(x_{t}\right) & \leq M_{t} z_{t}^{\mu}-\epsilon_{t} \\ -\mu\left(x_{t}\right) & \leq M_{t}\left(1-z_{t}^{\mu}\right)-\epsilon_{t} \end{aligned} μ(xt)μ(xt)MtztμϵtMt(1ztμ)ϵt
上式中 M t M_t Mt是一个任意大的数, ϵ t \epsilon_t ϵt是一个任意小的数.

  1. 如果 t t t时刻的信号或信号后缀满足公式 μ \mu μ,则 z t μ = 1 z_t^\mu=1 ztμ=1, 上式变为:
    μ ( x t ) ≤ M t − ϵ t − μ ( x t ) ≤ − ϵ t \begin{aligned} \mu\left(x_{t}\right) & \leq M_{t}-\epsilon_{t} \\ -\mu\left(x_{t}\right) & \leq -\epsilon_{t} \end{aligned} μ(xt)μ(xt)Mtϵtϵt
    μ ( x t ) > 0 \mu(x_t)\gt0 μ(xt)>0
  2. 如果不满足公式 μ \mu μ, 则 z t μ = 0 z_t^\mu=0 ztμ=0, 上式变为:
    μ ( x t ) ≤ − ϵ t − μ ( x t ) ≤ M t − ϵ t \begin{aligned} \mu\left(x_{t}\right) & \leq -\epsilon_{t} \\ -\mu\left(x_{t}\right) & \leq M_{t}-\epsilon_{t} \end{aligned} μ(xt)μ(xt)ϵtMtϵt
    μ ( x t ) < 0 \mu(x_t)<0 μ(xt)<0
MILP变量的逻辑操作

这里定义可以对满足标志信号进行逻辑操作. 为什么需要操作这个信号呢?是为了后面递归地计算出 z 0 μ z_0^\mu z0μ

非:  z t ψ = ¬ z t φ z t ψ = 1 − z t φ \text{非: } z_{t}^{\psi}=\neg z_{t}^{\varphi} \quad z_{t}^{\psi}=1-z_{t}^{\varphi} ztψ=¬ztφztψ=1ztφ

这一条比较好理解,如果信号满足命题 ψ \psi ψ,那么信号一定不满足 ψ \psi ψ的反命题。

与:  z t ψ = ∧ i = 1 m z t i φ i z t ψ ≤ z t i φ i , i = 1 , … , m  and  z t ψ ≥ 1 − ∑ i = 1 m ( 1 − z t i φ i ) \text{与: } z_{t}^{\psi}=\land_{i=1}^{m} z_{t_{i}}^{\varphi_{i}} \quad z_{t}^{\psi} \leq z_{t_{i}}^{\varphi_{i}}, i=1, \ldots, m \text{ and } z_t^\psi\geq1-\sum\limits_{i=1}^m(1-z^{\varphi_i}_{t_i}) ztψ=i=1mztiφiztψztiφi,i=1,,m and ztψ1i=1m(1ztiφi)

定义这一步操作的目的是为了给下面的Always算子提供计算基础。
预计算 z t ψ    ψ = □ [ a , b ] φ ∵ ∀ t i ∈ [ t + a , t + b ]    s [ t i ] ⊨ φ ∴ z t ψ = ∧ i = 1 m z t i φ \text{预计算}z_t^{\psi}\ \ \psi=\square_{[a,b]}\varphi\\ \because \forall t_i \in[t+a,t+b] \ \ s[t_i]\models \varphi \\ \therefore z^\psi_t = \land^m_{i=1} z_{t_i}^{\varphi} 预计算ztψ  ψ=[a,b]φti[t+a,t+b]  s[ti]φztψ=i=1mztiφ
或操作同理:
或:  z t ψ = ∨ i = 1 m z t i φ i z t ψ ≥ z t i φ i , i = 1 , … , m  and  z t ψ ≤ ∑ i = 1 m z t i φ i \text{或: }z_{t}^{\psi}=\lor_{i=1}^{m} z_{t_{i}}^{\varphi_{i}} \quad z_{t}^{\psi} \geq z_{t_{i}}^{\varphi_{i}}, i=1, \ldots, m \text{ and } z_{t}^{\psi} \leq \sum\limits_{i=1}^{m} z_{t_{i}}^{\varphi_{i}} ztψ=i=1mztiφiztψztiφi,i=1,,m and ztψi=1mztiφi

时序约束

包含时序操作子的公式所定义的约束成为时序约束,这里定义了 ⋄ \diamond , □ \square U [ a , b ] \mathcal{U}_{[a,b]} U[a,b]三种时序操作子的编码方式。

Always: ψ = □ [ a , b ] φ ⇒ z t ψ = ∧ i = min ⁡ ( t + a , N ) min ⁡ ( t + b , N ) z i φ \psi=\square_{[a, b]} \varphi \quad \Rightarrow \quad z_{t}^{\psi}=\land_{i=\min (t+a, N)}^{\min (t+b, N)} z_{i}^{\varphi} ψ=[a,b]φztψ=i=min(t+a,N)min(t+b,N)ziφ

Eventually: ψ = ⋄ [ a , b ] φ ⇒ z t ψ = ∨ i = min ⁡ ( t + a , N ) min ⁡ ( t + b , N ) z i φ \psi=\diamond_{[a, b]} \varphi \quad \Rightarrow \quad z_{t}^{\psi}=\lor_{i=\min (t+a, N)}^{\min (t+b, N)} z_{i}^{\varphi} ψ=[a,b]φztψ=i=min(t+a,N)min(t+b,N)ziφ

Until: ψ = φ 1 U [ a , b ] φ 2 ⇒ z t φ 1   U [ a , b ] φ 2 = z t □ [ 0 , a ] φ 1 ∧ z t ⋄ [ a , b ] φ 2 ∧ z t ⋄ [ a , a ] ( φ 1 U φ 2 ) \psi=\varphi_{1} \mathcal{U}_{[a, b]} \varphi_{2} \quad \Rightarrow \quad z_t^{\varphi_1\ \mathcal{U}_{[a,b]}\varphi_2} = z_t^{\square_{[0,a]}\varphi_1}\land z_t^{\diamond_{[a,b]}\varphi_2}\land z_t^{\diamond_{[a,a]}(\varphi_1 \mathcal{U} \varphi_2)} ψ=φ1U[a,b]φ2ztφ1 U[a,b]φ2=zt[0,a]φ1zt[a,b]φ2zt[a,a](φ1Uφ2)

编码的复杂度分析

由于总共 ∣ P ∣ |P| P个原子命题, 对应长度为N的信号, 因此产生满足标志信号z的数量为 O ( N ⋅ ∣ P ∣ ) O(N\cdot|P|) O(NP)

优化问题中连续变量的数目是 O ( N ⋅ ∣ φ ∣ ) O(N\cdot|\varphi|) O(Nφ), ∣ φ ∣ |\varphi| φ是公式中操作子的数量。看了下一节才知道原来这个continuous variable指的是后面的鲁棒性信号。

5 Robustness-based Encoding

基于鲁棒性的编码方式是一种与上面不同的编码方式,这里把鲁棒性编码进目标函数 J J J里。

这里用定义了一个新的变量 r t φ r^\varphi_t rtφ,用来表示信号在 t t t时刻对于公式 φ \varphi φ的鲁棒性。那么优化问题的命题约束就简化为了 r t φ > 0 r_t^\varphi \gt 0 rtφ>0

接着又定义了一个新的二元变量 p t i φ i p_{t_i}^{\varphi_i} ptiφi

算了我实在看不懂了,先看案例吧。

6 Model Predictive Control Synthesis

A. Synthesis for bounded-time STL formulas

B. Extension to unbounded formulas

7 Experimental Results

A. Boolean vs Robust Encoding

B. Mathematical Model of a Building

8 Discussion

未来工作

  • 拓展更多系统性质的监督
  • 拓展在线监督方法

心得与记录

  • 可能是我理解能力有限,我觉得这篇文章写得蛮凌乱的,每次看到一半看不下去,断断续续花了好几天才看完
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【论文精读】时序逻辑应用之模型预测控制Model Predictive Control with Signal Temporal Logic Specifications 的相关文章

随机推荐

  • Visual Studio 2017无法登录问题解决

    前两天登录VS2017的时候遇到无法登录问题 截图如下 期间试了各种方法 更新重启 添加一系列站点至信任域等等 还是没有效果 同时突然想起来自己的IE浏览器一直无法正常上网 不确定和VS无法登录是否有一定的联系 抱着试试看的心态上网搜索了一
  • IGWO-SVM:改良的灰狼优化算法改进支持向量机。 采用三种改进思路:两种Logistic和Tent混沌映射和采用DIH策略

    IGWO SVM 改良的灰狼优化算法改进支持向量机 采用三种改进思路 两种Logistic和Tent混沌映射和采用DIH策略 采用基于DIH维度学习的狩猎搜索策略为每只狼构建邻域 增强局部和全局搜索能力 收敛速度比GWO更快 适用于pape
  • 工控安全PLC固件逆向三

    之前我们详细分析了bootram和Vxworks的基本启动流程 这篇文章中我们把视线转到plc的网络部分 同时来复现我们第一个 第二个工控安全漏洞 一 VxWorks的网络设备驱动 一般我们说有三种设备 块设备 字符设备 网络设备 但是考虑
  • 【封装】实体类(entity)

    实体类entity 一 ORM 1 1 ORM 实体类 entity 零散数据的载体 1 1 1 ORM应用 一 ORM ORM Object Relational Mapping 从数据库查询到的结果集 ResultSet 在进行遍历时
  • Error while parsing UI hierarchy XML file: Invalid ui automator hierarchy file. Error while parsing

    官方的工具就这吊样各种报错 不如使用二次开发的工具 使用 https github com alibaba web editor 替代
  • el-select实现懒加载

    先看一个线上的演示示例 https code juejin cn pen 7273352811440504889 背景 我们在实际开发中经常遇到这样的需求 el select实现懒加载 用通俗的话说 为了增加响应速度 就是初始下拉只展示50
  • 网络流量在线分析系统的设计与实现

    编译环境 visual studio2019 安装并配置winpcap和pthreads库函数 1 配置环境 1 1 安装vscode 参考微信公众号 软件安装管家 1 2 安装MinGW w64 下载地址 添加链接描述 安装参考博客 Mi
  • 实验二 程序流程控制

    1 编写程序计算 1 3 5 7 99 之和 summ 0 for i in range 1 100 summ summ i print 和为 summ 2 编写程序 计算 2 4 6 8 100 之和 summ 0 for i in ra
  • 计算机网络试题

    一 选择题 1 OSI模型与TCP IP模型都具有的层次是 A 会话层 网络层和物理层 B 表示层 会话层和数据链路层 C 网络层 传输层和应用层 D 表示层 数据链路层和物理层 2 对于计算机网络体系结构 下列关于第N层和第N 1层的关系
  • 蓝桥杯:字符串

    题目链接 include
  • notepad++字符串替换

    删除空白行 在编辑选项里面包括很多功能 编辑 gt 行操作 gt 移除空行 包括空白字符 行首添加字符串 按CTRL F 选择替换页签 选择正则表达式 查找目标 设置为 替换为 设置自己想要替换的字符串 特殊字符需要添加 进行转义 行尾添加
  • 【MySQL】34道SQL综合练习详解(员工表、部门表、工资等级表)

    文章目录 一 34道SQL综合练习 二 测试使用的数据表 三 创建测试表的SQL语句 一 34道SQL综合练习 1 查询取得每个部门最高工资的人员信息 select e ename t from emp e join select dept
  • 如何使用PCL将XYZRGB点云转换为彩色mesh模型

    如何使用PCL将XYZRGB点云转换为彩色mesh模型 最近完成了一个使用RGBD传感器 构建物体模型的小demo 其中有点难的最后一步是如何将获得的物体点云变成彩色mesh模型 效果图如下 从点云变成彩色mesh 其实整体的步骤可以总结如
  • M1 macbook上安装docker 编译内核 并使用qemu启动内核。

    一 编译内核并通过qemu启动内核 1 在M1上安装docker这个就不用提供步骤了 网上自行搜索 2 在M1上pull一个ubuntu的容器 docker pull ubuntu 18 04 docker images REPOSITOR
  • 卡尔曼滤波及其MATLAB程序

    今天写了个卡尔曼滤波的小程序 希望对有需要的同学有点帮助 卡尔曼滤波是一个很常用的滤波算法 与维纳滤波相比有很多长处 这里我们把Kalman Filter简称为KF KF的基本思想是 采用信号 噪声 状态空间模型 利用前一时刻的状态最优估计
  • 学习python笔记01

    一 python是什么 人生苦短 我用python python是一门解释型语言 边解释边运行 与编译型语言的区别是 编译型语言是先编译后运行 python语言的特点 1 优雅 2 明确 3 简单 python是一个完全面向对象语言 具有强
  • 纯java实现相片转素描

    1 实例演示图片转素描效果 首先我们来看一下具体的效果 在项目中添加依赖
  • unity制作一个可以自由滑动收缩的历史记录功能。

    公司在做一款模拟经营类的卖车游戏 需要一个简单的历史记录功能 放在左上角 记录最近20条的收入 支出记录 超过2秒不动则收起 收起时展示最近的一个消息记录 用到的组件是ScrollView 使用方法可以参考我写过的一篇博客 ScrollVi
  • Input.GetAxis _ Unity3d

    Input GetAxis 获取轴 static function GetAxis axisName string float Description描述 Returns the value of the virtual axis iden
  • 【论文精读】时序逻辑应用之模型预测控制Model Predictive Control with Signal Temporal Logic Specifications

    前言 因为天天写代码实在是太枯燥了 所以读点其他东西来调剂一下 这样科研进度不至于停下 前面读了几篇关于时序逻辑学习的文章 今天来了解一下时序逻辑公式在控制中的应用 Raman V Donze A Maasoumy M Murray R M