我正在运行Train Gate示例,并且我想运行一个验证属性
Pr [<= 100](<> Train(0).Cross)
说 100次 火车(0) 的 穿越 的概率是多少单位 。
我已将时钟添加到 Safe 状态,如附件中所示。
通过运行上述属性,它给我以下错误;
定位火车(1)。安全 [火车(0).x = 19.641971035860478878021240234375火车(1).x = 4.758311911486089229583740234375火车(2).x = 19.416877078358083963394165039062火车(3).x = 19.25746748410165309906005859375火车(4).x = 19.96133 = 1370820522522349349375375375 12565905327火车(5)。时间= 20.623387750703841447830200195312] Gate.list [0] = 4 Gate.list 1 = 5 Gate.list [2] = 0 Gate.list [3] = 2 Gate.list [4] = 3 Gate.list [5] = 0 Gate.list [6] = 0 Gate.len = 5 在过渡期间违反了模型的理智性 火车(1)。跨->火车(1)。安全{x> = 3,离开[id] !, 1} Gate.Occ-> Gate.Free {1 == front(),离开https://stackoverflow.com/a/51980599/7203487 ?, dequeue()}
在最后一行中,它说“在过渡时违反了模型的理智性”。我一直在寻找(搜索)此错误,但到目前为止还没有运气,有人可以帮助我修复它。
谢谢!
答案 0 :(得分:0)
问题在于,当火车从Cross
到Safe
时,时钟x
的估值大于或等于3,这与Safe
的不变性({{ 1}}),因此SMC抱怨该模型无法满足有关该模型的假设。
解决方法是将x<=2
的时钟从x=0
重置为Cross
。
SMC中有许多假设:
仅举几例...