在Uppaal中生成一个随机数

时间:2015-06-25 17:52:15

标签: random numbers uppaal

我的问题是我可以在Uppaal中生成一个随机数吗?

我想从一系列值中生成一个数字。更重要的是,我想生成的不仅仅是整数,我想生成双值。

例如:double [7.25,18.3]

我发现这个question正在谈论同样的问题。我尝试过这个。 但是,我收到此错误:语法错误意外T_SELECT。

它不起作用。我在Uppaal世界很新,我很感激你能为我提供任何帮助。

问候,

1 个答案:

答案 0 :(得分:3)

这是Uppaal的一个常见且被误解的问题。

简单回答:

    double val; // declaration
    val = random(18.3-7.25)+7.25; // use in update, works in SMC (Uppaal v4.1)

详细回答:

  1. Uppaal支持符号分析以及统计学,治疗和可能性完全不同。因此,首先必须决定需要什么样的分析。通常从简单的符号分析开始,然后用随机特征进行扩充,有时也需要象征性地检查随机行为。

  2. 在符号分析中(查询A[]A<>E<>E[]等),random与非确定性同义,即如果模型包含一些&#34;随机&#34;行为,然后验证应该以任何方式检查所有这些。因此,这种行为被建模为边缘之间的非确定性选择。通过在声明临时变量的边缘上使用select语句并且其值可用于保护,同步和更新,可以轻松地在整数范围内设置一组边。符号分析仅支持整数数据类型(没有浮点类型,如double)和时钟上的连续范围(由守卫和不变量中的约束指定)。

  3. 统计分析(通过蒙特卡罗模拟,Pr[...](<> p)E[...](max: var)simulate等查询)支持double类型和浮点函数,如{ {1}},sincossqrtrandom(MAX)上的统一分布),[0, MAX)random_normal(mean, dev)数据类型。时钟变量也可以被视为浮点类型,除了它们的导数默认设置为1(可以在允许ODE的不变量中改变 - 常微分方程)。

  4. 可以使用浮点运算(包括int)创建模型,并且仍然可以应用符号分析,前提是浮点变量不会影响/约束模型行为,并且仅作为成本行事在州空间运作。以下是实现此目标的系统规则:

    a)ODE中使用的时钟必须声明为random类型。

    b)hybrid clockhybrid clock类型变量不能出现在保护和不变约束中。只允许在不变量的double s内使用ODE。