PRISM—probabilistic model checker概率模型检测器
嵌入式控制系统模型 Theembedded control system
http://www.prismmodelchecker.org/casestudies/embedded.php 与连续时间马尔科夫链有关
模型说明
系统说明:
1.系统包含一个输入处理器inputprocessor(I),可读取和处理来自三个传感器sensor(S1,S2,S3)的数据
2.一个主处理器main processor(M)读取来自I的数据并把指令传给O;记录处理时间周期长度的计时器timer在M内
3.一个输出处理器outputprocessor(O),接受收到的指令并由此控制两个驱动器actuator(A1,A2)
4.一个总线bus连接三个处理器(I,M,O)
停机(shut down)条件:
-
超过一个传感器S失效,即S的数量<2,系统停机----MIN_SENSORS=2;
-
两个驱动器A都失效,即A的数量<1,系统停机----MIN_ACTUATORS=1;
-
输入/输出处理器也会失效,可能是永久性故障(permanentfault)或暂时性故障(transientfault):
如果系统暂时性故障,它自己可以自动改正并重新启动(reboot),也就是说暂时性故障的后一状态可能是重启(几率为1/30);
如果是永久性,那么I/O处理器不能运作导致主处理器不能读取和输出,那么M会强力直接跳过这个周期,如果M跳过的连续周期数量超过限制,系统会停机----MAX_COUNT
-
除非特殊规定,我们假设MAX_COUNT=2
-
主处理器M也可以失效,系统也就自动死机了
平均失效发生次数(概率)rate
一个传感器S sensor:1 month ---- lambda_s = 1/(30*24*60*60);
一个驱动器A actuator: 2 month ---- lambda_a = 1/(2*30*24*60*60);
一个处理器(I,M,O)processor:1 year ---- lambda_p = 1/(365*24*60*60)
一个暂时性故障transient fault:1day ---- delta_f = 1/(24*60*60);
一个计时器周期timer cycle:1minute ----tau=1/60;
一个处理器重启时间processor reboot:30seconds ----delta_r = 1/30;
(假设这些延期时间呈指数分布,所以这个系统可以用连续时间马尔科夫链CTMC建模)
PRISM code:
ctmc
//constants
constintMAX_COUNT;
constintMIN_SENSORS =2;
constintMIN_ACTUATORS =1;
//rates
constdoublelambda_p =1/(365*24*60*60);// 1 year
constdoublelambda_s =1/(30*24*60*60);// 1 month
constdoublelambda_a =1/(2*30*24*60*60);// 2 months
constdoubletau =1/60;// 1 min
constdoubledelta_f =1/(24*60*60);// 1 day
constdoubledelta_r =1/30;// 30 secs
//sensors
modulesensors
s : [0..3]init3;// number of sensorsworking
[]s>1 -> s*lambda_s : (s'=s-