目前在中文网站还没有对uppaal的使用介绍有过多的说明的,本文为方便后续对uppaal工具的使用,作此中文介绍一篇,对UPPAAL工具的使用说明。所使用软件为uppaal 5.0版本。下载过程网上很多,进入时的密钥key怎么获取我也写了一篇,此处不作详述。
零、介绍
文件和编辑模块不需要过多解释,和我们平时使用word文档功能类似是,字面意思很好理解
**
其中,简单介绍一下open Example,这里面放了很多模型例子,可以进行初始的学习,根据大概意思去推敲每一步是怎么设置,增加自己对模型的理解能力
1.列车闸门控制器综合
2.猫和老鼠
3.自适应巡航控制
4.报纸共享
5.通过高峰时段的交通
一、视图模块
**
显示label:显示一个子菜单,可以从该菜单中选择应在图纸区域中显示哪种类型的标签。即使隐藏,所有标签也可以在位置和边缘的工具提示中看到。
这里是在建模时用到各类标签
selection:选择非确定性地将给定标识符绑定到给定范围内的值。一条边的其他三个标签都在此绑定范围内。
Guard:卫士条件通常是布尔表达式,为 True 时迁移被触发
Synchronisation:进程可以通过通道进行同步。在公共通道上标记有互补动作的边同步。发送和接收信号分别用符号“!”和
“?”来表示。广播频道允许一对多同步。直觉是,一个边缘与同步标签e!在信道e上发射广播,并且任何具有同步标签e的已启用边缘?将与发射过程同步。即,无论是否启用任何接收边缘,广播信道上具有发射同步的边缘都可以始终激发(前提是满足防护要求)。但那些被启用的接收边缘将同步。请注意,在广播频道上接收的边缘不允许使用时钟保护。首先执行发射边缘上的更新。接收边缘的更新按照系统定义中给出的处理顺序从左到右执行。
Update:遍历边时,将计算该边的更新表达式。此表达式的副作用会改变系统的状态。更新是以逗号分隔的表达式列表。这些表达通常会产生副作用。对时钟的赋值仅限于正则=赋值运算符,并且在此类赋值的右侧只允许使用整数表达式。正则赋值运算符,=,可用于为整数、布尔值、记录和时钟变量赋值。其他赋值运算符仅限于整数和布尔变量,并且与C中的一样工作,例如,i+=2等效于i=i+2,除了在第一种情况下计算i的任何副作用只执行一次,而在后一种情况下执行两次。
Invariant:不变量,用于表示某种约束,里面填写bool算式,没有达到条件时,强制迁出
Comments:
Weight:可以为从分支点发出的边指定概率权重。这种边缘转移的概率与边缘权重成比例,并且与离开该分支点的所有边缘上的权重之和成反比。
显示栅格,隐藏栅格:主要是可以显示网格线,使模型画起来更规整。
栅格变疏,栅格变密:调整栅格之间的距离,在处理线的细节时候,可以根据栅格做参考。
Gantt Chart:甘特图,是模拟器的最中间面板。根据系统定义中给出的甘特图规范,它显示了生成的跟踪的另一种视图。在甘特图表视图中,水平轴表示时间跨度,在垂直轴中,列出了甘特图规范中定义的活动(通常是某些系统过程)的列表。垂直线用于表示当前时间(对应于仿真Trace-Combo框中显示的时间)。当根据迹线的当前状态满足甘特图规范中的不同表达式时,不同长度和颜色的水平条表示。如果将鼠标放置在甘特(gantt bar)上,则显示满足相应表达式的间隔的信息。
甘特图,通常用于项目管理,是一种条形图,显示按时间显示的活动。图表左侧是活动列表,顶部是合适的时间刻度。每个活动都用一个小节表示;条形图的位置和长度反映了活动的开始日期、持续时间和结束日期。
在UPPAAL中,甘特图用于在具体模拟器中(模拟器2)自动可视化轨迹。需要指定活动列表,并为每个活动指定条形图的不同颜色部分应反映的内容。
Coverage:
进程:显示了一栏对话框窗口,用于隐藏和显示模拟器的过程面板中的过程
变量:显示了一栏对话框窗口,用于在模拟器的变量面板中隐藏和显示变量。
Full DBM:显示了模拟器变量面板中时钟的所有约束条件。如果未选择,将显示最小数量的约束。
二、工具模块
检查语法:检查在编辑系统中的语法和类型是否正确。任何发现的错误和警告均在系统编辑器的绘图区域的下部列出,并且(如果适用)在自动机中列出。
转换语法:将符合Uppaal 3.4版本中使用的语法的系统转换为当前语法
Plot Compser:创建一个新的Plot Composer窗口,以叠加Verifier中统计模型检查的多个结果。
可以在模拟器2(Concrete Simulator)中对要展示的参数进行集中显示
支持动态系统(带常微分方程的模型)和模拟轨迹上的可变值轨迹
Test Cases:测试用例(Yggdrasil)选项卡包含一个离线测试用例生成工具,目的是增加边缘覆盖率。它从模型中生成跟踪,并根据在注释旁边的边缘和位置输入到模型中的测试代码将它们转换为测试用例。
Queries:可以在“验证程序”选项卡中使用A[] not deadlock查询检查死锁,存在查询(E<>)可用于指定要测试的所需功能,因此可被选为测试用例生成的测试目的。可以选择所有或特定的查询,并添加结果跟踪以用作测试用例。
Depth: 第二个选项使用随机深度的启发式方法,首先搜索指定数量的步骤,以期增加覆盖范围。所得的迹线用作测试用例。重复搜索过程,直到新生成的跟踪不会在先前的痕迹上贡献新的覆盖范围。为了使用此方法,必须声明名为__REACH__的全局整数变量,初始化为零,不应在模型中的任何地方使用。步骤数取决于模型(模型的大小和深度)和应用域(可以接受多长时间的测试用例)。如果将深度配置得太小,则可能不会覆盖许多边缘。如果深度非常高,则将生成不必要的长测试用例。
Process:第三个选项尝试覆盖先前生成的迹线未覆盖的剩余边缘。此方法为每个未覆盖的边缘提交一个单独的可达性查询。大型模型可能有许多边,因此许多查询可能需要很长时间才能执行。更糟糕的是:有些边缘可能根本无法访问,因此需要彻底搜索,这可能会消耗大量时间和内存。为了使用此方法,必须声明名为__single__的全局整数变量,并将其初始化为零,不应在整个模型中使用。
Search:除非非常熟悉Uppaal的搜索算法,否则将选项保留为默认设置。
Trace:除非非常熟悉Uppaal的搜索算法,否则将选项保留为默认设置。
Add:按钮Add将根据options(选项)菜单中选择的验证选项生成跟踪,其中搜索顺序Search和诊断跟踪Trace选项被相应的下拉列表选择覆盖。
Traces:左下方为跟踪路径列表。
Trace statistics:在右侧的跟踪路径统计信息中显示此跟踪的统计信息。
Total Coverage(总覆盖率):将显示迄今为止添加的所有跟踪的组合统计信息,在Trace statistics中显示
Save Test Cases:保存测试用例
双击跟踪会在模拟器1选项卡中加载跟踪,在该选项卡中可以详细检查执行场景。当在“视图”菜单下选择“标记已访问”选项时,模拟器将覆盖的位置和边着色为蓝色。
三、选项模块
1.搜索顺序:此选项会影响探索状态空间的顺序。
宽度优先
按广度优先的搜索顺序搜索状态空间。当必须搜索完整的状态空间时,这通常是最有效的选项。当生成最短或最快的轨迹时,这可能是最佳设置。
深度优先
按深度优先搜索顺序搜索状态空间。如果预期存在反例或见证跟踪,则此设置通常比广度优先设置好。当生成最短或最快的跟踪时,不建议使用此搜索顺序。
随机深度优先
以随机深度优先搜索顺序搜索状态空间。如果预期存在反例或见证痕迹,这通常是最佳设置。由于随机性,跟踪可能因运行而异。当生成最短或最快的跟踪时,不建议使用此搜索顺序。
2.Exploration
3.状态空间化简:在搜索状态空间时,Uppaal不一定必须将所有状态存储在内存中以保证终止。此选项影响了Uppaal努力避免存储状态的积极性。空间和速度之间通常会有一个权衡。
不化简:存储所有状态。
保守:避免存储已提交的状态。
积极:避免每个周期存储多个状态。
4.状态空间表示:此选项确定应如何在模型检查器中表示状态空间。
Difference Bound Matrices (DBM):DBM通常很快,但是对于具有许多时钟的模型,它们需要大量的内存。
Compact Data Structure(紧致压缩/数据结构):比DBM更紧凑但速度较慢的表示。特别是对于具有许多时钟的型号,此设置通常会显著降低内存消耗。即使对于没有时钟或时钟很少的型号,此选项也会以牺牲速度为代价启用其他内存节省技术。
Under Approximation(近似):使用位状态哈希来表示状态空间。这会导致近似不足,但可以通过调整哈希表的大小来调整近似程度:大型哈希表会导致搜索更大部分的状态空间。哈希表大小可以使用_hash table size_选项进行选择。
Over Approximation(过度近似):使用区域的凸包近似。这导致了状态空间的过近似。对于没有时钟的型号,此设置无效。
5.诊断路径:此选项控制验证期间是否应生成反例或见证跟踪(如果有)。验证后,跟踪被加载到模拟器中。启用跟踪生成有两个副作用:a、一次只能验证一个属性。b、对称性减少已禁用。
不化简:不要生成任何诊断跟踪。
某些:生成诊断跟踪。
最短:生成最短的跟踪,即转换次数最少的跟踪。
最快:生成最快的跟踪,即具有最短累积时间延迟的跟踪。
6.外推:时钟的范围是无限的,即时钟可以获得任意大的实数值。为了保证终止,UPPAAL使用了一种称为外推法的抽象技术。外推的状态空间是有限的。UPPAAL实现了许多在外推状态空间的大小上不同的外推技术。并不是所有的外推技术都能保留所有类型模型的所有特性。UPPAAL会自动选择粗略的外推,这仍然保留了正在分析的特性。
自动:选择保留要分析的属性的最粗糙的外推。如有疑问,请使用此设置。
不化简:请勿使用外推。终止不再保证。由于执行外推相对较昂贵,因此,如果您知道符号状态空间是有限的,则可能会使用。
Difference:每当模型或查询都包含时钟上的差异约束时,例如x -y ❤️。
Local:当查询包含死锁关键字或涉及活跃度属性时使用(除非模型或查询包含差异约束)。
Lower/Upper:在执行可达性分析时使用,但使用死锁关键字或模型或查询包含差异约束时除外。
7.Hash表大小:调整使用位状态哈希时用于表示状态空间的内存量。除非选择了欠近似,否则此选项无效。
8.Statistical Parameters(统计参数)
Lower probabilistic deviation (-δ)
用于假设测试(定性模型检验),以指定无差异的下限region from the specified probability.
Upper probabilistic deviation (+δ)
用于假设测试(定性模型检验),以指定无差异的上限region from the specified probability.
Probability of false negatives (α)
用于假设检验(定性模型检验)和概率估计(定量模型检验),以指定显著性水平。
Probability of false positives (β)
用于假设检验(定性模型检验),以指定显著性水平。
Probability uncertainty (ε)
用于概率估计(定性模型检查),以约束概率区间。
Ratio lower bound (u0)
用于比较两种概率
Ratio upper bound (u1)
用于比较两个概率。
Histogram bucket width
指定直方图中每列的宽度。默认情况下,它设置为零,这意味着宽度由整个直方图宽度除以桶计数的比率确定
Histogram bucket count
指定直方图中的列数。默认情况下,它被设置为零,这意味着计数是通过取样本总数的平方根并除以四来确定的。
五.画图工具栏
工具栏分为四组,用竖线分割。最左边的三个组可以快速访问一些最常用的菜单项。最右边的组包含编辑工具。
1.第一组包含以下按钮:“新建”、“打开项目”和“保存”。“文件”菜单部分介绍了这些功能。
2.第二组包含以下按钮:“撤消”和“重做”。编辑菜单部分介绍了这些功能。
3.第三组包含以下按钮:“缩放到适合”、“放大”和“缩小”。这些功能在“视图”菜单部分进行了说明。
4.第四组包含编辑器中用于选择和移动自动机元素以及添加位置、边和指甲的工具。有关这些功能的说明,请参见“绘图”部分。
着重讲一下第四栏
该栏主要用于自动机的编辑
选择工具:用于选择,移动,修改和删除元素。可以通过单击它们或拖动一个或多个元素来选择元素。双击元素会提出该元素的编辑器。右键单击元素会提出一个弹出菜单,可以从中更改该元素的属性。
添加Location:位置工具用于添加新位置。只需单击鼠标左键即可添加新位置。
添加Branch点(树枝节点):分支工具用于创建概率分支。只需用鼠标左键单击即可添加新的分支点,然后选择边工具创建连接边。
添加Edge:用于在位置之间添加新边。通过单击源位置开始边缘,然后单击以放置钉子,最后单击目标位置。按下鼠标右键可以取消该操作
添加Nail:用于将新钉子添加到边缘。只需单击并拖动边缘上的任意位置即可添加和放置新钉子。该功能主要调节Edge的线条美观性。
六、左侧声明栏
类型、常量、变量和函数可以在全局范围内定义,方法是将它们放在标记为Declarations或System Declarations的全局部分中;对于模板,可以在模板的Declarationss部分中进行本地定义。
流程是通过在系统声明部分放置流程赋值来实例化的。
七、模拟器1 (符号模拟)
模拟器是一种验证工具,可在早期设计(或建模)阶段检查系统的可能动态执行。从这个意义上讲,它在模型检查器验证之前提供了廉价的故障检测平均值。模拟器还用于可视化验证者生成的执行(即符号痕迹)。
(补充知识)符号痕迹:由于时钟范围超过非负实数,因此定时自动机可以具有无限的许多状态(不要与位置混淆)和无限的痕迹。模拟器无法可视化所有这些混凝土痕迹。相反,它显示了一组无限的痕迹 - 所谓的符号跟踪。符号跟踪的每个符号状态都是一组状态,其延迟继任者描述了时钟上的许多约束。在给定的符号状态下,所有状态的主动位置和离散变量的值均相同。
模拟器由四个面板组成:最左边称为模拟控制,中间称为变量,右上角称为过程,右下角称为消息序列图。
1.模拟控制面板:模拟控件是模拟器的左面板。它用于控制模拟并选择(符号)状态或过渡,以在模拟器的其他两个面板中可视化。控制面板分为两个部分:
a、上部用于执行逐步模拟。列表视图显示启用的过渡,并高亮显示当前选定的过渡。按下Next(下一步)按钮可使模拟系统进行选定的转换。Reset(重置)按钮用于将模拟系统重置为其初始状态。
b、控制面板的下部具有显示生成的迹线的视图。显示的轨迹是控制位置向量和过渡的交替序列。在此视图中,模拟总是从突出显示的元素中进行。可以使用鼠标更改选择。
2.变量面板:它在仿真控制面板轨迹中选择的当前状态或过渡中显示数据和时钟变量的值。
3.过程:它显示系统描述的过程实例。红色令牌标记每个自动机的当前控制点。一个或多个自动机边缘也可能是红色的,以指示模拟控制面板中当前选择的过渡。
4.消息序列图:它显示生成迹线的MSC视图(也显示在模拟器的模拟控制面板中)
在MSC视图中,每个进程有一条垂直线,每个同步点有一条水平线。每条垂直线的进程名称显示在MSC面板的上部。竖线上显示的节点名称指示自动机的控制位置。如果选择了某个位置,则相应地更新过程面板和模拟控制面板。
八、模拟器2(具体模拟)
5.0版本暂时没找到甘特图的展示功能。放个之前版本的截图在下面
具体模拟器与符号模拟类似,因为它是一种验证工具,可以在早期设计(或建模)阶段检查系统可能的动态执行。不同之处在于,模拟是基于具体轨迹的,即可以选择特定时间来触发转换。该工具有助于查看何时可以触发转换。
混凝土模拟器由以下面板组成:模拟控制;变量面板;过程面板;消息序列图;甘特图表面板
1.模拟控制面板:模拟控制是模拟器的左侧面板。它用于控制模拟,并选择要在模拟器的其他面板中可视化的状态或过渡。控制面板分为两部分:
a、上部用于执行逐步模拟。转换选择器区域是一个可点击的区域,其中垂直轴显示该位置的活动转换,水平轴显示转换完成的时间。启用转换的时间间隔和可选择转换的时间区间以不同的方式着色。可以触发转换的时间间隔(可选择转换的情况下)由标记定界:一个小圆圈在间隔的开始处,一个在间隔的结束处(如果关闭则为满,如果打开则为空)。当鼠标移动到可选择的区域时,间隔的颜色会变得更亮。通过单击可以选择特定的转换和启动转换的特定时间。选定的转换将高亮显示。所选时间显示在“延迟”组合框中。一旦选择了转换,也可以在“延迟”组合框中直接指定时间。如果在转换的不可选择区域中单击一次,该工具将选择最近的有效时间。Reset Delay(重置延迟)按钮用于将延迟重置为零。按下Take transition按钮会使模拟系统在指定时间触发选定的转换。Reset(重置)按钮用于将模拟系统重置为其初始状态。
b、控制面板的下部,模拟跟踪区域,有一个显示生成跟踪的视图。显示的轨迹是控制位置矢量和转换的交替序列。模拟始终从该视图中高亮显示的图元开始进行。可以使用鼠标更改选择。
2.变量模板:变量面板是模拟器的中间面板。它显示模拟控制面板轨迹中选择的当前状态或转换中的数据和时钟变量的值。
3.过程模板:过程面板是模拟器的最右上面板。它显示系统描述的流程实例。红色标记标记每个自动机的当前控制点。自动机边缘中的一个或多个也可以是红色的,以指示当前在模拟控制面板中选择的转换。
4.消息队列图模板:消息序列图(MSC)面板是模拟器的最低面板。它显示生成迹线的MSC视图(也显示在模拟器的模拟控制面板中)。
5.甘特图表面板:甘特图面板是模拟器最右边的中间面板。它显示根据系统定义中给出的甘特图规范生成的跟踪的另一个视图。在甘特图视图中,横轴表示时间跨度,纵轴列出甘特图规范中定义的活动列表(通常是一些系统流程)。垂直线用于表示当前时间(对应于“模拟Trace”组合框中显示的时间)。不同长度和颜色的水平条表示何时根据跟踪的当前状态满足甘特图规范中的不同表达式。
九、验证器
验证器通过对系统的状态空间进行动态探索,根据约束表示的符号状态来检查系统的安全性和活跃性。UPPAAL中的验证工具还提供了一个需求规范编辑器,用于指定和记录系统需求。
系统需求的概述(在下面和GUI中称为查询)显示在名为overview of the verifier的面板中。切换按钮“注释/查询”用于控制是在概览中显示查询还是注释。
查询可以单独使用鼠标选择和取消选择,也可以与Shift键或键盘的Control键组合使用(使用Shift键(取消)选择一系列条目,使用Control键(放弃)选择单个条目)。第一个选择的需求及其注释始终显示在名为Query和comment的两个编辑器字段中,在这两个字段中可以对它们进行编辑。
VERIFYING REQUIREMENTS
查询(即系统要求)通过UPPAAL的验证器接口进行验证。验证始终根据主菜单栏的“选项”菜单中指定的设置执行。
当按下名为“检查”的按钮时,将验证所选查询。验证进度对话框显示验证了多少查询的进度、通过的等待列表的当前负载、当前处理器使用时间(验证花费的时间用蓝色表示,操作系统花费的时间是红色表示),主机随机访问内存的当前使用情况(验证内存为蓝色,其他运行进程使用的内存为灰色,操作系统缓存和缓冲区为黄色)、交换磁盘使用情况(交换出的验证为蓝色,另一个为灰色)。请注意,资源数字不包括UPPAAL GUI的开销,命令行实用程序(如在verifyta上运行的memtime)更准确。有些数字在某些操作系统上不可用(Windows API上没有记录系统缓存分配,Linux内核也没有维护每个进程的交换使用情况),因此它们可能不会显示。
验证输出显示在验证器面板底部的状态字段中。结果也由“概述”面板最右侧列中的圆形标记指示。灰色标记表示该特性的真值未知,绿色标记表示满足该特性,红色标记表示不满足该特性。
如果启用了“过近似”或“欠近似”选项,则验证器的输出可能是该属性“可能满足”。当验证器由于使用了近似值而无法确定属性的真值时,就会发生这种情况。
统计模型检查
可以在“选项”菜单中更改统计模型检查的参数。通过右键单击统计属性,可以通过弹出菜单访问各种数据图(如果可用)。y轴始终表示概率或其密度,而x轴表示受统计查询限制的变量值或模型运行中的步长(过渡)计数。
概率密度分布
根据概率分布创建的直方图,其中每个桶通过桶宽度进行归一化。有助于比较各种分布,可能具有不同的铲斗宽度。
概率分布
根据频率直方图创建的直方图,其中每个桶通过运行总数进行归一化。用于评估在时间间隔的特定时刻满足特性的概率。
累积概率分布
通过将所有频率直方图桶与当前桶相加创建的直方图,并通过运行总数进行归一化。
概率的置信区间
概率的置信区间是使用给定置信水平(1-α)的二项式分布的Clopper-Pearson方法(也称为“精确”)计算的。该方法在某种意义上是保守的,因为它保证了在(1-α)种情况下实概率的最小覆盖。在图中,估计的置信度一次仅对一个桶有效(收集的数据被重新用于计算每个单独的桶)。
平均值的置信区间
平均估计的置信区间是使用给定置信水平1-α的Student t-分布的分位数计算的。注意,当样本数量高时,t分布接近常用的正态(高斯)分布。
频率直方图
频率直方图是通过计算在时间间隔的特定时刻满足该特性的运行次数来创建的。用于计算运行次数。