一种基于SHA的信物融合系统自动建模与验证方法及系统

文档序号:29703217发布日期:2022-04-16 15:03阅读:212来源:国知局
一种基于SHA的信物融合系统自动建模与验证方法及系统
一种基于sha的信物融合系统自动建模与验证方法及系统
技术领域
1.本发明属于信物融合系统领域,具体涉及一种基于sha(随机混成自动机)的信物融合系统自动建模与验证方法及系统。


背景技术:

2.信息物理融合系统中存在各种智能的自动化设备,为用户提供便利的自动化或智能服务体验。以智能家居为例,具统计分析,到2020年,全球智能家居市场的收入为783亿美元,预计到2025年将达到1353亿美元。尽管用户使用tap规则可以直观且容易地表达自己期望的自动化需求,但确保底层控制系统与用户真正需求的一致性实际上并不容易。由于这些用户通常不具备专业知识,他们在制定专属的tap规则时,无法知道自己的规则的运行是否符合预期。
3.目前已有不少基于形式化方法,如模型检测或smt求解器,对用户制定的个性化方法进行安全性验证的方法,但对于用户来说并不能直观地看到自己制定的规则的运行过程,虽然也有让用户自己拖拽组件或自己控制设备状态或自己设置环境属性以触发自己的规则的仿真方式,但这需要用户自定义场景的初始状态,也很难尽数覆盖所有规则。


技术实现要素:

4.针对信物融合系统中对用户自定义tap规则验证方法的不足,本发明的目的是提出一种基于sha的信物融合系统自动建模与验证方法及系统,其基本思想是,根据环境参数化模型、设备位置信息表,以及用户自定义的tap规则生成系统模型并进行仿真,最后对仿真结果进行验证分析,检测用户制定的规则是否会导致设备发生状态冲突。
5.本发明提出的一种基于sha的信物融合系统自动建模与验证方法及系统的具体实现步骤如下:
6.一种基于sha的信物融合系统自动建模与验证方法,包括以下步骤:
7.步骤1:将被监视实体预建模成sha参数化模型,包括:
8.1)预建人的参数化sha模型,包括建模状态和变迁;
9.2)预建不确定行为的被监视实体的sha模型,包括建模状态和变迁,以及随机性;
10.3)预建包含各种环境属性的空气实体的sha模型;
11.具体为:
12.所述被监视实体包括人、具有不确定行为的实体、具有各环境属性的空气实体;
13.所述预建人的参数化sha模型:将人所处的空间位置作为状态,将人的空间转移作为状态的变迁,使用状态标识符标记人的状态变化,并用sha中的不变式形式的时间约束作为参数确定人状态变迁的时机,从而将人建模为sha参数化模型;
14.所述不确定行为的被监视实体,包括是否下雨这类具有不确定性的实体,通过经验和分析获得不确定行为实体的可能状态,作为sha模型中的状态,状态能变迁到自己也能变迁到其他状态,并使用sha的随机性建模,经过统计分析获得不同状态发生的概率,作为
状态变迁时的概率;
15.会受设备影响的各环境属性,具有随时间的变化率,即具有连续性,将其作为空气实体的属性,用sha中的不变式表示属性的连续性,将空气实体建模为只具有一个状态的sha模型,在该状态上添加各属性的不变式,用来表示属性随时间的总的变化率,以约束属性的变化。
16.步骤2:将被控制实体预建模成sha参数化模型,包括:
17.1)预建可控设备的参数化sha模型,包括建模状态和变迁;
18.2)预建传感器sha模型,包括建模状态和变迁;
19.具体为:
20.所述被控制实体包括各类可控设备以及各类传感器,可控设备通常具有固定的状态信息,而传感器每经过一段时间检测环境属性;
21.建模可控设备首先确定可控设备具有的状态,并根据这些状态之间的转换关系建模变迁;由于可控设备是事件驱动的,使用sha中的同步接收信号synchronization作为状态变迁条件;部分可控设备会对环境属性产生影响,确定该类可控设备不同状态下对某些环境属性的影响值,通过在状态变迁时更新环境属性的总变化率的值达到影响环境属性的目的;此外使用状态标识符来标记设备的当前状态;通过添加[i]参数实现参数化模型;
[0022]
所述传感器sha模型只有一个状态,状态的变迁为从该状态到该状态的变迁,同时返回监测的环境属性的数据,通过在变迁时更新被监测环境属性的取值监测数据,通过给该状态添加不变式形式的时间约束以确定变迁的时机,即监测数据的时机。
[0023]
步骤3:根据参数化模型和设备位置信息表自动实例化环境模型;包括:
[0024]
1)设备位置信息表的内容格式;
[0025]
2)根据设备位置信息表实例化环境模型;
[0026]
具体为:
[0027]
根据用户提供的设备位置信息表和建模后的环境模型实例化环境实体;设备位置信息表告知各个空间中存在的所有设备实例信息;根据设备位置信息表提供的设备实例信息实现对各类可控设备参数化模型的实例化;
[0028]
设备位置信息表为多行“devicei={devicename:name,devicetype:device,location:l}”组合的格式,每行表示一个设备实例;其中“device
i”为唯一标识符,表示第i个实例设备,“name”也是唯一的,对应实例设备名,“device”对应参数化模型中的某类设备,“l”对应人的行为模型中的某个空间,表示该实例设备所处的空间;
[0029]
根据不同类型的设备的实例个数以及在设备位置信息表中列出的顺序确定所属设备类型的实例序号,从而得到实例模型,包括设备名、设备所属类型以及设备类型的实例序号的结果。
[0030]
步骤4:根据实例化环境模型和用户自定义的tap规则生成控制器的sha模型,包括:
[0031]
1)根据tap规则的trigger生成控制器sha中的节点和变迁;
[0032]
2)根据tap规则的action生成控制器sha中的节点和变迁;
[0033]
具体为:
[0034]
用户的需求为一组遵循“if trigger then action”格式的tap规则集合,用以表
示在什么情况下希望哪个设备执行什么动作;在实例化环境模型的基础上,根据用户的tap规则自动生成控制器的sha,用以判断规则的条件,并发送信号,每条tap规则对应生成一个控制器的sha;将tap规则中的trigger和action解析出来,然后分别对trigger和action进行处理生成该tap规则对应的控制器sha;其中针对每条tap规则首先对应生成一个初始节点;控制器sha为时间驱动模型,因此在该节点上有以sha的不变式表示的时间约束,表示控制器sha每经过一段时间执行;
[0035]
每个trigger对应生成一个节点,该节点为不做停留的committed节点;根据trigger内容获得状态变迁的条件,trigger满足则变迁到下一个节点,即在到下一个节点的变迁上添加trigger满足对应的guard卫式,否则变迁到初始节点,即在到初始节点的变迁上添加trigger不满足对应的guard卫式;在生成trigger对应的guard卫式时,需要根据实例化的环境模型进行转换;
[0036]
每个action对应生成一个节点,该节点为不做停留的committed节点;根据该action内容生成在该节点到下一个节点的变迁上的同步发送信号synchronization,若为最后一个action,该节点变迁到初始节点。
[0037]
步骤5:根据实例化环境模型和控制器模型自动生成系统的随机混成自动机网络模型,即系统模型,并使用uppaal-smc工具进行系统仿真,获得仿真结果,包括:
[0038]
1)生成模型声明;
[0039]
2)生成通道声明;
[0040]
3)生成全局变量声明;
[0041]
4)生成仿真查询语句,并使用uppaal-smc工具执行仿真;
[0042]
具体为:
[0043]
除了环境模型和控制器模型,系统模型还包括信号模型声明、通道声明和全局变量声明,这些声明根据环境模型和控制器模型自动生成;
[0044]
在模型声明中声明人的实例模型、设备实例模型、仿真中运行的模型;确定人在每个空间的停留时间,并将确定的停留时间值作为参数传入人的参数化模型,根据传值后的实例化结果声明人的实例模型;根据设备实例化的结果将各设备实例对应所属设备类型的实例序号作为参数值传入所属设备的参数化模型,根据传值后的实例化结果对设备实例模型进行声明;声明仿真中运行的模型,即控制器sha以及控制器sha中所涉及的其他实体模型;
[0045]
通道即对应同步信号,从所有可控设备的sha模型中获得所有同步接收信号,即为通道,并根据设备实例化结果获得各类设备的实例数量,用“urgent broadcast chan”声明通道数组;
[0046]
全局变量包括各环境属性变量及其对应的总的变化率变量、各实体的状态标识符;将连续的环境属性声明为clock类型并赋初值,并将总的变化率变量声明为double类型;根据设备实例数量声明设备的状态标识符,声明为int类型的数组;声明具有不确定行为的实体状态标识符,为int类型;声明人的状态标识符,同样为int类型;
[0047]
在uppaal-smc工具上执行仿真,需要声明仿真查询语句,仿真查询语句关键字为simulate,声明后运行即进行仿真,获得仿真结果。
[0048]
步骤6:对仿真结果进行状态冲突的验证分析,包括:
[0049]
1)解析出设备的仿真结果;
[0050]
2)定义状态冲突并验证;
[0051]
具体为:
[0052]
根据所获得的仿真结果,分析并验证仿真过程中是否存在设备状态冲突问题;
[0053]
状态标识符与实体一一对应,根据仿真结果中的状态标识符名识别设备实例的仿真结果,识别出设备实例后对其进行标记;
[0054]
针对仿真结果,定义状态冲突为同一时刻状态标识符有两种取值,分别分析每个设备的仿真结果,验证是否存在状态冲突。
[0055]
一种实施上述方法的系统,包括参数化模型加载模块、设备位置信息表加载模块、tap规则编辑模块、模型自动生成模块、仿真模块以及自动验证分析模块。参数化模型加载模块支持参数化模型的载入;设备位置信息表加载模块支持设备位置信息表的载入;tap规则编辑模块支持用户输入自定义的tap规则;模型自动生成模块以载入的参数化模型、设备信息表、用户自定义的tap规则作为输入,输出系统模型;仿真模块输入系统模型,在uppaal-smc工具的支持下执行仿真,输出仿真结果;自动验证分析模块以仿真结果和状态冲突的定义作为输入,输出验证结果。
[0056]
本发明针对信物融合系统中环境的不确定以及用户自定义tap规则的多变性,提出的一种基于sha的信物融合系统自动建模与验证方法及系统,支持环境模型重用,在tap规则多变的情况下,自动生成系统模型并进行仿真验证,直接向用户反馈规则验证结果,便于用户修改并制定安全的规则。使用sha建模,允许表示更真实的环境,保证仿真结果更加可靠,为信物融合系统验证中不确定环境的动态建模提供了一种有效的途径。
附图说明
[0057]
图1为本发明的方法流程图;
[0058]
图2为本发明中参数化模型示例图;
[0059]
图3为本发明中的设备位置信息表示例图;
[0060]
图4为本发明中控制器模型生成规则的示例图;
[0061]
图5为本发明中系统模型各声明生成结果的示例图;
[0062]
图6为本发明中系统模块的组成及关系示例图;
[0063]
图7、图8为本发明中实施例在支持系统中运行过程的示例图。
具体实施方式
[0064]
下面将结合本发明实施例及附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0065]
参阅图1,本发明的一种基于sha的信物融合系统自动建模与验证方法,包括:
[0066]
步骤一,将被监视实体预建模成sha参数化模型
[0067]
在信物融合系统中,被监视实体包括人、不确定行为的被监视实体(如雨,可能下雨也可能不下雨),以及具有各种环境属性的空气,需要在初始阶段分别将这些被监视实体
预建模成sha参数化模型。
[0068]
1)预建人的参数化sha模型,需要建模人的状态和状态的变迁,以及当中涉及的参数化信息。人的模型呈现人的行为轨迹。
[0069]
首先建模人的状态,人的状态表示人在该信物融合系统中所处的空间位置,在得知所有空间位置信息后,每个空间位置对应建模成sha中的一个节点表示状态(需标有状态名),其中需要一个committed(表示在该节点上不消耗时间)初始节点表示预备状态,使用一个状态标识符如“position”表示人当前所处的空间位置;
[0070]
其次建模状态的变迁,由于人的行为是可预设的,故可以根据预设的行为轨迹建立状态之间的变迁,对于有空间l1,l2,

,ln,可预设轨迹的人的模型为“init-》l1-》l2-》
…‑
》ln”,在状态变迁时更新状态标识符“position”的值,代表人的位置发生变化;
[0071]
最后预建参数化信息,认为人的行为模型是时间驱动的,在特定的时期从一个状态变迁下一个状态,因此通过时间约束限制人的状态变迁的时机,即在每个状态上添加不变式,如“time《=ti”,并在该状态到下一个状态的变迁上添加变迁卫式(guard),如“time》=ti”,表示在“time=ti”的时刻人从该状态(空间位置)变迁到下一个状态(空间位置),人的每次空间位置的转变(状态变迁)时间是参数,后续通过传入ti的值实例化。
[0072]
2)预建不确定行为实体的sha模型,这类实体通常具有随机性,体现在它的状态变迁具有不确定性,因此需要获得该实体具有的状态以及所有状态发生的概率。
[0073]
首先建模该实体的状态,通常能根据经验和分析得知该类实体有哪些状态,每个状态对应sha中的一个节点(需有状态名),其中需要一个committed(表示在该节点上不消耗时间)初始节点表示预备状态,使用一个状态标识符表示该实体当前所处的状态;
[0074]
其次建模状态间的变迁,需要通过统计分析获得该类实体不同状态发生的概率,根据不同状态发生的概率构建状态之间变迁的概率,每个状态(初始节点除外)都可能变迁到自己或其他状态,需要建立一个branch点,从当前节点建立到branch的变迁,再从branch建立分支变迁到自己或其他节点,变迁上分别有各状态对应的发生概率,从初始节点迁移后不会再回到初始节点,在变迁时更新状态标识符的对应取值,表示变迁到下一状态;该类实体模型是时间驱动的模型,只有在满足约束的条件下能发生状态变迁,因此同样在每个状态上有相应的时间相关的不变式如“t《=v”,并在该状态到下一个状态的变迁上添加变迁卫式如“t》=v”,同时在变迁上将t更新为0如“t=0”,表示在该状态停留v秒。
[0075]
3)预建模包含各种环境属性的空气实体的sha模型,这类实体体现各种环境属性随时间的变化率,因此需要获得关注的各种环境属性。此类实体只有一个状态(节点),同时也是初始节点;环境属性随时间的变化率表现为在该节点上的不变式,每个环境属性对应一个不变式,例如温度(temperature)属性在该节点上的不变式为“temperature’==dtemper”,“dtemper”是表示temperature随时间的总变化率的变量,该变化率可能受设备状态影响,不同设备对该属性的影响可通过改变总变化率“dtemper”的取值实现影响叠加。
[0076]
步骤二,将被控制实体预建模成sha参数化模型
[0077]
在信物融合系统中,被控制实体包括各类可控设备以及各种传感器。可控设备的状态可被控制系统获得,其状态变化也在受控制系统控制。传感器监视被监视实体的变化包括人的空间位置的变化,具有不确定行为实体的状态变化,以及各种环境属性的取值变化。
[0078]
1)预建可控设备的参数化sha模型,有些设备的可能会对一些环境属性产生影响,需要建模该类实体的状态和状态的变迁,实体对环境属性的影响,以及当中涉及的参数化信息。
[0079]
首先建模该类实体的状态,该类实体具有确定的状态,通过调查分析获得该类实体的状态,每个状态对应建立一个节点(需有状态名),由于每种设备一开始都处于关闭状态,故关闭状态对应的节点为初始节点,使用一个状态标识符“device”来表示设备当前的状态;
[0080]
其次建模该类实体状态的变迁,该类实体是事件驱动模型,在接收到相应的信号后将从当前状态变迁到下一个状态,信号的接收由同步接收信号synchronisation表示,通常为“sync?”,其中“sync”表示信号通道,“?”表示接收,在变迁过程中更新状态标识符的取值,表示从当前状态变迁到下一个状态;
[0081]
之后建模该类实体对环境属性的影响,有些设备处于不同状态时可能会对某些环境属性产生影响,使之上升或是下降,根据设备对环境的影响确定该类设备不同状态对某些环境属性的影响值(会使相应环境属性的总变化率发生变化),并在该模型的声明中分别声明double类型的变量存储各个状态对应的对相应环境属性的影响值,在状态发生变迁的过程中将相应环境属性总变化率更新为在原总变化率的基础上加上状态转变时对变化率影响的差值,通过更改环境属性的总变化率实现不同设备对相同环境属性的影响的叠加;
[0082]
最后预建参数化信息,同类设备的不同实例同属一类模型,但表示其状态的状态标识符应该不同,信号通道也应该不同,故用数组下标表示不同的设备实例,对于状态标识符“device”,其参数化结果为“device[i]”,i用来表示实例的序号,对于信号“sync?”,其参数化结果为“sync[i]?”,i用来表示实例的序号,可在后续通过传入参数i的取值实例化。
[0083]
2)预建模传感器sha模型,传感器每经过一定时间获取监测的数据。
[0084]
首先建模状态,传感器只负责监测相应数据,因此只有一个状态,对应一个节点;其次建立状态的变迁,由于只有一个状态,状态的变迁发生在该状态自身上,即从该状态到该状态的变迁,在变迁过程中获得监测数据,通过get方法获得,其中get方法在该模型声明中声明,返回监测的数据本身。传感器是时间驱动模型,每经过一定时间发生变迁,因此给该状态添加时间约束“t《=v”,并在变迁上添加变迁卫式“t》=v”,同时在变迁上将t更新为0如“t=0”,表示每经过v秒传感器获得一次监测数据。
[0085]
步骤三,根据参数化模型和设备位置信息表自动实例化环境模型
[0086]
设备位置信息表由用户提供,能提供系统中的设备实例信息。在设备位置信息表中,每行对应一个实例设备的具体信息,由“devicei={devicename:name,devicetype:device,location:l}”的格式给出,其中“devicei”为唯一标识符,表示第i号设备,“name”也是唯一的,对应实例设备名,“device”对应参数化模型中的某类设备,“l”对应人的行为模型中的某个空间,表示该实例设备所处的空间。
[0087]
根据设备位置信息表中的设备实例信息和各类设备的sha参数化模型自动实例化设备模型。设备位置信息表中的设备信息含有设备名及所属设备类型的信息,首先获取同类设备实例,其次为同类设备的不同实例标号,同一类型的不同设备名的实例对应不同标号,最大标号为(同类设备实例数-1),从而得到各设备的实例模型,包括设备名,设备所属类型(对应参数化模型),设备实例序号等代表设备实例的结果。
[0088]
步骤四,根据用户自定义的一组tap规则和环境模型生成控制器的sha模型
[0089]
要求用户自定义的tap规则提及的人的位置信息与构建的人的参数化模型中的空间信息对应,并且当中涉及的设备名实例化后的设备相对应。
[0090]
用户的每条tap规则对应一个控制器的sha模型,控制器模型为时间驱动模型,每个控制器每隔一段时间重新判断条件,如果条件满足则发送信号,通知相应的设备执行动作。
[0091]
tap规则遵循格式“if trigger then action”。其中trigger可以是“attribute》(》=,《,《=)value”,也可以是“entity.state”,前者的attribute可以是空气实体中的各环境属性,表示该属性的取值范围;而后者表示实体状态,实体可以是人(person),表示人的位置,或是不确定行为的实体如雨,表示雨的状态,也可以是实例设备(devicename),表示该实例的状态。action的格式为“devicename.sync”,其中devicename是实例设备名,sync与设备的同步信号通道相对应,是devicename所属设备类型的参数化模型中的无参的信号通道,如“window_0.open_window”,其中“window_0”是设备名,所属设备类型是window,window模型中信号通道“open_window[i]”,对应的无参信号通道为“open_window”。
[0092]
参阅图4,一条tap规则生成控制器的sha模型的规则如下:
[0093]
首先生成一个初始节点,在该节点上有时间约束,表示规则执行周期;
[0094]
其次根据tap规则的trigger生成节点和变迁关系。获得该规则的所有trigger,分别生成一个committed节点,从该节点能变迁到下一个节点,变迁的卫式条件为trigger满足,从该节点变迁也能到初始节点,变迁的卫式条件为trigger不满足。对于格式为“attribute》(》=,《,《=)value”的trigger,其变迁到下一个节点的卫式条件也为“attribute》(》=,《,《=)value”,对其取反获得变迁到初始状态的卫式条件为“attribute《=(《,》=,》)value”,例如对于trigger“temperature》28”,变迁到下一个节点的卫式条件为“temperature》28”,而变迁到初始状态的卫式条件为“temperature《=28”;对于“entity.state”格式的trigger,从环境模型中找到该实体状态对应的状态标识符的取值“identifier=v”,则变迁到下一个节点的卫式条件为“identifier==v”,对其取反获得变迁到初始状态的卫式条件为“identifier!=v”。如果entity是人,则identifier为“position”;如果entity是实例设备,则根据步骤三的实例化结果获得该实例的设备类型和设备实例序号i,从该设备类型的参数化模型中获得其状态标识符“device”,则identifier为“device[i]”,例如对于trigger“window_0.wopen”,是实例设备window_0,属于window设备,设备实例序号为0,window参数化模型的状态标识符为window,则该实例的状态标识符为“window[0]”,由于wopen状态对应取值为1,变迁到下一个节点的卫式条件为“window[0]==1”,对其取反获得变迁到初始状态的卫式条件为“window[0]!=1”。初始节点变迁到第一个trigger的节点,同时在初始节点上有不变式“t《=v”,并且在该变迁上有卫式条件“t》=v”和更新“t=0”表示每经过v秒重新执行判断,图4中v=1,表明每秒执行一次控制器的判断。
[0095]
最后根据tap规则的action生成节点和变迁关系。获得该规则的所有action,分别生成一个committed节点,对于“devicename.sync”格式的action,devicename是实例设备名,根据步骤三的实例化结果获得该实例的设备类型和设备实例序号i,“sync“对应该类设
备的无参信号通道,从该节点变迁到下一个节点时有同步发送信号synchronisation“sync[i]!”,其中“sync[i]”为信号通道,“!”表示发送信号,“sync[i]!”表示发送“sync[i]”信号,例如对于action“bulb_0.turn_bulb_off”,其中“turn_bulb_off”对应“sync”,bulb_0属于bulb设备,设备实例序号为0,从该节点变迁到下一个节点时有synchronisation“turn_bulb_off[0]!”。最后一个trigger的节点变迁到第一个action的节点并发送信号,如果为最后一个action,则从该节点变迁到初始节点并发送信号。
[0096]
步骤五,根据实例化环境模型和控制器模型自动生成系统的随机混成自动机网络模型,即系统模型,并使用uppaal-smc进行系统仿真,获得仿真结果
[0097]
系统模型除了环境模型和控制器模型,还需要进行模型声明、通道声明和全局变量声明。为了在uppaal-smc上执行仿真,还需要声明仿真查询语句。
[0098]
1)模型声明,包括人的行为模型实例化声明,设备实例化声明和运行模型声明。
[0099]
首先声明人的行为模型实例,由于人的行为模型为“l1-》l2-》
…‑
》ln”,假设人在每个空间都停留相同时间,假设仿真时间为t秒,共n各空间位置,则每个空间停留t/n秒,获得人的行为模型声明“personinstance=person(t/n,2t/n,

,(n-1)t/n)”;
[0100]
其次声明设备实例,根据步骤三的设备实例化结果包括设备名、设备类型及其设备实例序号对设备模型进行声明,例如对于如下实例设备名“window_3”,设备类型“window”,设备实例序号“3”有设备实例声明结果“window_3=window(3)”;
[0101]
最后声明在仿真过程中会运行的模型,包括所有控制器模型、控制器模型中涉及到的被监视实体、控制器模型中涉及到的设备实例化模型等,由system关键字声明。
[0102]
2)通道声明,即声明信号通道。
[0103]
声明信号通道,需获得环境模型中的所有可控制设备的sha模型中的所有同步信号synchronization,并根据设备实例化结果获得每类设备的实例化数量,声明通道数组。例如从图2(d)空调的参数化模型中能获得3个信号通道变量“turn_ac_cool”、“turn_ac_off”和“turn_ac_heat”,如果空调的实例个数为m,则声明信号通道的数组长度m,有“urgent broadcast chanturn_ac_cool[m],turn_ac_off[m],turn_ac_heat[m]”,为这3个信号通道的声明。
[0104]
3)全局变量声明,包括设备状态标识符声明,环境属性及其变化率声明,可控实体状态标识符声明,以及人的位置变化标识符声明。
[0105]
首先声明设备状态标识符,从参数化模型中获得一类设备的状态标识符“device”,并根据设备实例化结果获得该类设备的实例个数m,由于状态表示是离散的,声明为“int”类型,声明结果为“intdevice[m]”;
[0106]
其次声明环境属性及其变化率,环境属性都为连续变化的,故声明为clock类型,需要为环境属性赋初始值,可随机赋值或通过其他计算赋值,表示其初始的取值;而其变化率为double类型,初始值为“0.0”,即表明初始时不随时间变化;
[0107]
之后声明不可控实体状态标识符,根据不可控实体的sha模型,获得其状态标识符identifier,由于状态是离散的,故同样声明为int类型,声明结果为“intidentifier”;
[0108]
最后声明人的位置变化标识符,人的位置变化标识符为“position”,表示人当前所处的空间位置,为离散的,同样声明为int类型,因此声明结果为“int position”。
[0109]
4)声明仿真查询语句,生成系统模型后,为了能在uppaal-smc工具上执行仿真需
要声明仿真查询语句。
[0110]
仿真查询语句的格式为simulate[《=t]{a1,a2,

,ai,c1,c2,cj,

,d1,d2,

,dn}。其中t为仿真时间;a1,a2,

,ai为被监视的环境属性和各被监视实体的状态标识符;c1,c2,cj为控制器sha模型的标识符;d1,d2,

,dn为设备状态标识符。仿真后则获得仿真结果。
[0111]
步骤六,根据步骤五得到的仿真结果,对各设备实例的仿真结果验证分析,检测是否存在设备状态冲突。
[0112]
设备实例的仿真结果为“device[i]:(t1,v1)(t1,v2)(t3,v3)

(tn,vn)”的形式,其中ti》=t
i-1
。“device”为某类设备的无参状态标识符,“i”为该类设备的实例序号,因此可根据设备和实例序号找到所属设备实例设备名“instance”。根据仿真结果分析是否存在设备状态冲突,其中状态冲突的定义为在同一时刻该设备处于两个状态,对于“instance”,如果ti=t
i-1
且vi≠v
i-1
,则说明“instance”在ti时刻存在状态冲突。
[0113]
经由上述的技术方案可知,本发明提供了一种基于随即混成自动机(sha)的信物融合系统自动建模与验证方法,使用仿真方法实现对用户需求的验证分析。
[0114]
实施例
[0115]
本实施例以智能家居为例。
[0116]
参阅图1,本发明的基于sha的信物融合系统自动建模与验证方法主要包含以下几个步骤:
[0117]
第一步,将被监视实体预建模成sha参数化模型
[0118]
在该实施例中被监视实体包括人、具有不确定行为的雨,以及含有各环境属性的空气。
[0119]
1)预建人(person)的参数化模型
[0120]
首先建模人的状态,该实施例中空间位置包括“lobby、kitchen、bathroom、bedroom和out”,每个空间位置对应一个节点(需标有状态名),同时需要一个committed初始节点表示预备状态,状态标识符为“position”,参阅图2(a);
[0121]
其次建模状态的变迁,该实施例中预设人的行为轨迹为“lobby-》kitchen-》bathroom-》bedroom-》out”,则有预设轨迹的人的模型为“init-》lobby-》kitchen-》bathroom-》bedroom-》out”,在状态变迁时更新状态标识符“position”的值,参阅图2(a);
[0122]
最后预建参数化信息,即在每个状态上添加不变式,如“time《=ti”,并在该状态到下一个状态的变迁上添加变迁卫式,如“time》=ti”,表示在“time=ti”的时刻人从该状态(空间位置)变迁到下一个状态(空间位置),在该实施例中i∈1-4,参阅图2(a)。
[0123]
2)其次预建具有不确定行为的雨(rain)的模型
[0124]
首先建模该实体的状态,雨有两种状态:下雨(“israin”)和不下雨(“notrain”),分别对应一个节点(需有状态名),同时需要一个committed初始节点表示预备状态,状态标识符为“rain”,参阅图2(b);
[0125]
其次建模状态间的变迁,在该实施例中通过简单的统计分析结果获得其状态变迁的概率(不下雨的概率为8,下雨的概率为2),每个状态(初始节点除外)都可能变迁到自己或其他状态,建立一个branch点,从当前节点建立到branch的变迁,再从branch建立分支变迁到自己或其他节点,变迁上分别有各状态对应的发生概率,其中变迁到“notrain”节点的概率为8,变迁到“israin”的概率为2,此外在变迁时更新状态标识符的取值;在该实施例中
简单认为雨这个实体的两个状态的停留时间都为30s,故在每个状态上都有不变式“t《=30”,并在该状态到下一个状态的变迁上添加变迁卫式如“t》=30”,同时在变迁上将t更新为0如“t=0”,表示在该状态停留30s,参阅图2(b)。
[0126]
3)预建模包含各种环境属性的空气(air)实体的模型
[0127]
在该实施例中考虑环境属性温度(temperature)、湿度(humidity)、pm2.5浓度(pm_2_5)、co2浓度(co2ppm)以及空气质量指数(aqi)。air有一个节点,同时也是初始节点;在该节点上,每个环境属性对应一个不变式,例如温度(temperature)属性在该节点上的不变式为“temperature’==dtemper”,其他环境属性的不变式参阅图2(c)。
[0128]
第二步,将被控制实体预建模成sha参数化模型
[0129]
被控制实体包括各类具有固定状态的可控设备和传感器。
[0130]
1)预建可控设备的参数化模型,以该实施例中考虑的空调进行说明:
[0131]
首先建模该类实体的状态,经过分析可知空调(airconditioner)具有三个状态,关(对应sha中的“acoff”),制冷(对应“cool”),以及制热(“heat”),分别对应一个节点(需有状态名),初始状态节点为“acoff”,状态标识符为“airconditioner”,参阅图2(d);
[0132]
其次建模该类实体状态的变迁,对于具有三个状态的空调,应有3种相对应的同步信号,使空调关的同步信号通道为“turn_ac_off”,使空调制冷的同步信号通道为“turn_ac_cool”,使空调制热的同步信号通道为“turn_ac_heat”,从任意状态可以到其他两种状态,故每个状态有到其他状态的变迁,变迁上有对应的同步接收信号synchronisation,用“?”表示信号接收,在变迁过程中更新状态标识符的取值,关状态取值为0,即“airconditioner=1”,制冷为1,制热为2,在相应的变迁上更新标识符取值,参阅图2(d);
[0133]
之后建模该类实体对环境属性的影响,空调的不同状态会对环境属性中的温度有不同影响,在关时没有影响,在制冷时会使温度下降,制热时会使温度上升,通过简单的统计分析确定不同状态对温度的影响取值,在空调的模型声明中分别声明double类型的变量“offdt(对应关状态对温度的影响)=0”,“cooldt(对应制冷状态对温度的影响)=-0.5”,“heatdt(对应制热状态对温度影响)=0.5”。在状态发生变迁的过程中将相应环境属性总变化率更新为在原总变化率的基础上加上状态转变时对变化率影响的差值,以acoff状态变迁到accool状态为例,将温度的总变化率dtemper更新为“dtemper+(cooldt-offdt)”,其中“(cooldt-offdt)”为状态变迁后对总变化率影响的差值,参阅图2(d)。
[0134]
最后预建参数化信息,对于空调设备,其参数化结果体现在状态标识符“airconditioner[i]”,以及信号通道“turn_ac_off[i]”、“turn_ac_cool[i]”和“turn_ac_heat[i]”,参阅图2(d)。
[0135]
其他设备按同样方式建模。
[0136]
2)预建模传感器模型,在该实施例中传感器每经过3s获取监测的数据。参阅图2(e)的温度传感器进行说明。首先建模状态,只有一个节点;其次建立状态的变迁,为从该状态到该状态的变迁,在变迁过程中更新temperature,将get方法的返回值赋予temperature,在该模型声明中声明get方法,方法中返回temperature数据。给该节点添加时间约束“t《=3”,并在变迁上添加变迁卫式“t》=3”,同时在变迁上将t更新为0如“t=0”,表示每经过3秒传感器获得一次监测数据。
[0137]
第三步,根据参数化模型和设备位置信息表自动实例化环境模型
[0138]
该实施例中的设备位置信息表参阅图3,可见在该实施例中有5盏灯、4扇窗户、1个空调、一个加湿器、一个风扇和一个电视。根据参数化模型进行实例化。
[0139]
第四步,根据用户自定义的一组tap规则和环境模型生成控制器的sha模型
[0140][0141]
假设实施例中用户自定义一组9条tap规则如上所示,用户提供的这组tap规则与其提供的设备位置信息表中的信息相符。对于如上的9条tap规则,可根据实例化的环境模型生成9个控制器的sha模型。其中第一条tap规则生成的控制器模型参阅图4。
[0142]
第五步,根据实例化环境模型和控制器模型自动生成系统的随机混成自动机网络模型,并使用uppaal-smc进行系统仿真,获得仿真结果。
[0143]
为获得系统模型,进行模型声明、通道声明和全局变量声明。
[0144]
首先是模型声明,对于人的行为模型声明,假设在该实施例中仿真时长为300s,由于有5个空间位置,则在每个空间位置状态停留时间为60s,该实施例中人的行为模型声明结果为“personinstance=person(60,120,180,240)”;再根据设备实例化结果对设备模型进行声明,根据设备名、设备类型及其序号获得实例的声明结果,例如“window_3=window(3)”对应设备名“window_3”,设备类型“window”,设备序号“3”,其他实例设备参阅图5的模型声明;最后对会在仿真中运行的模型进行声明,包括所有九个控制器模型(rule1-rule9)、各被监视的实体如人的行为模型(personinstance)和雨(rain)以及空气(air)模型、控制器模型中涉及到的设备实例化模型如“window_0,airconditioner_0,bulb_0,humidifier_0,tv_0”,由system关键字声明。
[0145]
再进行通道声明,信号通道声明需获得环境模型中的所有可控制设备的sha模型中的所有synchronization,并获得该设备的实例化数量,声明通道数组。例如从图2(d)空调的参数化模型中能获得3个信号通道“turn_ac_cool”、“turn_ac_off”和“turn_ac_heat”,由于只有一个实例,故声明数组长度为1,有“urgent broadcast chanturn_ac_cool[1],turn_ac_off[1],turn_ac_heat[1]”,为这3个信号通道的声明。其他设备window、bulb、humidifier、tv、fan的信号通道声明方式相同。声明结果参阅图5中的通道声明。
[0146]
最后进行全局变量声明,包括设备状态标识符声明,根据设备实例化数量获得,如“int window[4]”,由于状态表示是离散的,用int类型表示,“window”为“window”设备的状态标识符,由于有四个window实例,故声明数组“[4]”,其他设备的状态标识符声明方式相同;环境属性及其变化率声明,环境属性都为连续变化的,具有随时间的约束,声明为clock类型,而变化率为double类型,如“clock temperature=v0”为属性temperature的声明,“v0”为初值,它的值可随机赋值或通过其他计算赋予,“double dtemper=0.0”为temperature对应的变化率声明,初始值为“0.0”,即表明初始时不随时间变化,同样可获得环境属性humidity、pm_2_5、co2ppm、aqi等;不可控实体状态标识符声明,根据不可控实体
的sha模型,获得其状态取值范围,如“int rain”,“rain”为雨模型的状态标识符;人的位置变化标识符声明,为“int position”,position不同取值表示人处于不同空间位置。声明结果参阅图5中的全局变量声明。
[0147]
获得系统模型后,进行仿真查询语句声明:simulate[《=300]{temperature,humidity,

,rule1,rule2,

,window[0],window[1]

,bulb[0]

},在uppaal-smc工具上执行仿真,仿真后则获得仿真结果。
[0148]
第六步,根据步骤五得到的仿真结果,对仿真结果验证分析,检测是否存在设备状态冲突。
[0149]
分析步骤五获得的各类设备的仿真结果,在该实施例中检测出设备bulb_0、window_0会发生状态冲突,表明用户定义的这9条tap规则会导致这些设备发生状态冲突。
[0150]
本发明中的系统中各模块之间的关系参阅图6,对该实施例的支持参阅图7和8,其中图7是第5步到第六步的实现,图8为本实施例中对状态冲突的自动验证分析结果,显然,在该实施例中设备bulb_0和window_0发生了状态冲突。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1