Page 79 - 《软件学报》2021年第12期
P. 79
王博 等:SSRules:让智能家居自动化规则更易于编写和检查 3743
算法 2 求出到达X 2 的所有执行前提-动作序列对(图 4 左下方的 4 种动作序列).另一方面,该模块也要输出 \ X S 2 不
兼容的条件Ψ X 2 用于稍后的事件筛选,Ψ X 2 = 模式.状态==回家模式 AND 温湿度传感器.温度 >28°C AND (电
扇.开关!=开 OR 电扇.风速!=低).
Fig.4 Generating sequences of commands information
图 4 动作序列信息生成
• 事件筛选模块
该模块先使用算法 3 生成候选事件,接着进一步使用算法 4,根据系统可能的状态变迁对事件进行筛选.算
法 3 主要根据一个执行前要满足的条件 C 生成候选事件集,旨在以较低运算成本快速得到较小的待筛选事件
集.其中:第 2 行分别获取 C 中出现的实体能力集合 ECs 以及原子条件集合 C atom ,原子条件有当前状态判断(e,c,
O,v)和历史状态判断(e,c,O h ,t,v)这两种形式(如表 7);第 4 行的 SplitRangeByCond 则是根据 C atom 对实体E的能力
c 的状态值域 V c 进行划分,将对所有原子条件的判断影响一致的状态取值划分到同一个子集,从而将实数类型
H
l
的事件转移转化为了有限情形;第 5 行~第 7 行分别产生状态变化事件 E 和状态保持事件 E ,能够涵盖 C 中出
现的原子条件取值变化的情形.对于历史状态原子条件(e,c,O h ,t,v),由于只支持二值类型的能力 c,在固定 e,c,t 下,
O h 和 v 最多有 8 种组合,我们为之按 v 的两种取值产生 2 种状态保持事件,忽略 O h ;而被忽略的 O h 仍在 C 中,传
E
H
递到后续由算法 5 产生的 EE 规则 R =(E,C,A)中.这种状态保持事件 E 能在状态迁移中快速知道实体能力保
持状态的时长,再结合 C 中的 O h 进行状态保持的可满足性检查.
算法 3. 候选事件生成算法(CandidateEvents).
输入:条件表达式 C,系统实体-能力抽象 W;
输出:包含所有可能使 C 的值变化的事件集合E.
1. E=∅
2. ECs=C| (e,c) ; C atom =AtomFormulas(C)
3. for each (e,c) in ECs,由 W 得 c 的值域 V c do
4. Sets=SplitRangByCond(e,c,V c ,C atom ) //划分值域 V c
5. E=E∪{(e,c,V 1 ,V 2 )|∀V 1 ,V 2 ∈Sets,V 1 ≠V 2 }
6. T={t|(e,c,O h ,t,v)∈C atom } //C 中原子条件涉及对 c 的时长 t 的要求
7. E=E∪{(e,c,v,t)|∀v∈V c ,∀t∈T}
8. end for
算法 4. 事件排除判定算法(ShouldRejectEvent).
输入:事件 E,事件发生后应为真的条件Ψ,