我需要使用 UPPAAL 将系统建模为定时自动机,我对 UPPAAL 根据经过时间管理时钟和守卫的方式感到非常困惑:看起来 UPPAAL 只是忽略了时钟守卫!我想我的问题是我正在从一种非常“物理”的方法进行建模,所以我面临着这种问题。
所以这里出现了一个微不足道的自动机。在 UPPAAL 模拟上运行时,我希望它在初始位置和 A 位置之间永远循环,永远不会到 B。但事实并非如此:它在 A 和 B 之间随机交替(至少使用最新的 UPPAAL 快照;我不能尝试版本,因为没有 Linux 64 版本)。
那么我缺少什么?UPPAAL 真的如何对待时钟守卫?
当我第一次遇到这个问题时,我试图做的是模拟超时,所以如果在 30 秒之前没有满足标称行为的保护,自动机就会采取不同的优势。
十分感谢
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE nta PUBLIC '-//Uppaal Team//DTD Flat System 1.1//EN' 'http://www.it.uu.se/research/group/darts/uppaal/flat-1_2.dtd'>
<nta>
<declaration>// Place global declarations here.
clock t;</declaration>
<template>
<name x="5" y="5">Template</name>
<declaration>// Place local declarations here.
</declaration>
<location id="id0" x="153" y="8">
<name x="170" y="0">B</name>
</location>
<location id="id1" x="0" y="119">
<name x="-8" y="136">A</name>
</location>
<location id="id2" x="0" y="0">
</location>
<init ref="id2"/>
<transition>
<source ref="id0"/>
<target ref="id2"/>
<label kind="assignment" x="60" y="-55">t:=0</label>
<nail x="153" y="-8"/>
<nail x="42" y="-102"/>
</transition>
<transition>
<source ref="id1"/>
<target ref="id2"/>
<label kind="assignment" x="-135" y="55">t:=0</label>
<nail x="-153" y="-8"/>
</transition>
<transition>
<source ref="id2"/>
<target ref="id0"/>
<label kind="guard" x="93" y="-17">t > 30</label>
</transition>
<transition>
<source ref="id2"/>
<target ref="id1"/>
<label kind="guard" x="0" y="25">t<30</label>
</transition>
</template>
<system>// Place template instantiations here.
// List one or more processes to be composed into a system.
system Template;
</system>
<queries>
<query>
<formula>sup: t
</formula>
<comment>
</comment>
</query>
</queries>
</nta>