我的问题是我可以在Uppaal中生成一个随机数吗?
我想从一系列值中生成一个数字。更重要的是,我想生成的不仅仅是整数,我想生成双值。
例如:double [7.25,18.3]
我发现这个question正在谈论同样的问题。我尝试过这个。 但是,我收到此错误:语法错误意外T_SELECT。
它不起作用。我在Uppaal世界很新,我很感激你能为我提供任何帮助。
问候,
答案 0 :(得分:3)
这是Uppaal的一个常见且被误解的问题。
简单回答:
double val; // declaration
val = random(18.3-7.25)+7.25; // use in update, works in SMC (Uppaal v4.1)
详细回答:
Uppaal支持符号分析以及统计学,治疗和可能性完全不同。因此,首先必须决定需要什么样的分析。通常从简单的符号分析开始,然后用随机特征进行扩充,有时也需要象征性地检查随机行为。
在符号分析中(查询A[]
,A<>
,E<>
,E[]
等),random与非确定性同义,即如果模型包含一些&#34;随机&#34;行为,然后验证应该以任何方式检查所有这些。因此,这种行为被建模为边缘之间的非确定性选择。通过在声明临时变量的边缘上使用select语句并且其值可用于保护,同步和更新,可以轻松地在整数范围内设置一组边。符号分析仅支持整数数据类型(没有浮点类型,如double
)和时钟上的连续范围(由守卫和不变量中的约束指定)。
统计分析(通过蒙特卡罗模拟,Pr[...](<> p)
,E[...](max: var)
,simulate
等查询)支持double
类型和浮点函数,如{ {1}},sin
,cos
,sqrt
(random(MAX)
上的统一分布),[0, MAX)
等random_normal(mean, dev)
数据类型。时钟变量也可以被视为浮点类型,除了它们的导数默认设置为1(可以在允许ODE的不变量中改变 - 常微分方程)。
可以使用浮点运算(包括int
)创建模型,并且仍然可以应用符号分析,前提是浮点变量不会影响/约束模型行为,并且仅作为成本行事在州空间运作。以下是实现此目标的系统规则:
a)ODE中使用的时钟必须声明为random
类型。
b)hybrid clock
和hybrid clock
类型变量不能出现在保护和不变约束中。只允许在不变量的double
s内使用ODE。