全球FlexSim系统仿真中文论坛

标题: 怎样设置处理器的故障率 [打印本页]

作者: 13164121547    时间: 2019-1-7 15:02
标题: 怎样设置处理器的故障率
最近因论文需要建模,需要使处理器在处理每一个实体时,都有一定的概率发生故障,故障发生后有一段故障恢复时间,待故障恢复时间结束后,处理器正常处理实体,请问这个应该怎么实现呢,想了个把星期都没有好办法,望大神告知。
作者: 慧娴亚伦    时间: 2019-1-7 16:42
如果是一定概率的话,我建议关键点事消息,有一定概率停止实体(故障),然后发送消息,指定时间来恢复实体。
" y1 E! q8 F: S* F- u相关命令有:
+ ~4 k) y: C" X7 U7 E: [senddelaymessage()、stopobject()、resumeobject()
作者: 13164121547    时间: 2019-1-7 21:08
慧娴亚伦 发表于 2019-1-7 16:42
. L* `+ ?' P' z/ _1 e& @如果是一定概率的话,我建议关键点事消息,有一定概率停止实体(故障),然后发送消息,指定时间来恢复实体 ...
' V# d5 I" \6 j( n0 q, Y6 y
请问怎么设置固定概率的发送消息呢
作者: 慧娴亚伦    时间: 2019-1-8 08:10
13164121547 发表于 2019-1-7 21:08( ?, K4 j" U  c
请问怎么设置固定概率的发送消息呢
8 P" o& j6 e' n
单靠设置可能不行,需要代码,先在一定范围内随机一个值,然后判断这个值是否落在停机概率范围内。大概是这样:9 D! L0 n; S7 i, F' n+ `
  1. double stops = uniform(0,100);//随机一个值0 ~6 |1 L9 M2 F- b, K1 Z
  2. if(stops <= 30)//假设停机概率是30%- C. g, N! x9 P% `
  3. {
    ( L+ R# G! K9 K; u
  4.     stopobject();
    , N7 W* |- X5 w) R1 ^
  5.     senddelaymessage();
    - I, c* O/ g- D" }! c# y( F  f; R* n
  6. }
复制代码

作者: 13164121547    时间: 2019-1-11 21:01
慧娴亚伦 发表于 2019-1-8 08:10" W& @4 S5 X" p. t
单靠设置可能不行,需要代码,先在一定范围内随机一个值,然后判断这个值是否落在停机概率范围内。大概是 ...

) I' R& ?3 U( V# x* x2 o$ E进入触发代码:8 m% _9 e! [1 s8 r& b- H
double stop1 = uniform(0,100);* ~- M; \* ]5 n: R1 [4 S
if(stop1 < 30){, I4 e: s; [( `$ Z4 l6 ?: |
        stopobject(current,1);
) l# ]% W8 \1 @7 J1 T  e' p        senddelayedmessage(current,3,current,2);
! q( I- E  O8 k( v1 U3 x5 i( V}
$ K2 Z1 R( o3 Qdouble stop2 = uniform(0,100);
& e, U7 k( G1 d5 Xif(stop2 <40){
1 ~" j& o4 Q9 M1 ?        stopobject(current,2);9 H: ^6 X6 M# C' S
        senddelayedmessage(current,4,current,3);
! ?+ A) D  u5 v; @1 r3 l; R}
5 }8 o* a" Z3 ]. ?/ K+ b2 B  Q) C" ^% N0 L! @. v6 s

0 h  N, T7 A3 P, E消息触发代码:
, X# @8 B  g; }( [9 i/ X; Rint value2 = msgparam(1);, V0 ?1 }0 H1 q
switch(value2){
' s* B" `3 e7 @# V. @7 p7 k" D        case 3 :* P% r/ F2 e- _$ B* m
        resumeobject(current);
  Y7 r! T: U! U6 ^' S; C! @# ]' k; W        break;' A1 |1 \) o" l7 P9 Z% f; D
} // ******* PickOption End ******* //" ]  ~& {2 U) {# }. O* z' F% [! C
6 D- @3 m$ j; M2 K; v9 @
int value3 = msgparam(1);8 l. ?  S3 Q- p5 L, D6 f( t
switch(value3){$ F$ B! F8 j9 H' P9 a# P  v* R
        case 2 :
7 a* O9 O  Q$ H, K8 o        resumeobject(current);
, ]1 m1 Q7 U: ~0 a9 A. B8 z3 Q0 A        break;
, m! C& Z+ i  O9 B5 G: @}
3 t  Z; S% Q5 L9 l/ @  n+ o# ~9 c* ^. s- d
}
5 b+ O) D4 Y& n& N+ D# R0 I# d
你好,我是这么写的,可是最后运行的时候数据都是错的,请问是哪里出了问题呢
作者: SunshineFu    时间: 2019-1-12 08:58
13164121547 发表于 2019-1-11 21:01+ x3 k) W7 B2 h$ R8 Q2 m, e
进入触发代码:
" w" B- L7 G0 Q7 e. m/ k6 Bdouble stop1 = uniform(0,100);
% X: G7 g6 N' r+ xif(stop1 < 30){

' h. X( d# |) _6 @+ j  B7 ]+ o+ ]不清楚具体情况,可以上传模型吗?
作者: 13164121547    时间: 2019-1-12 10:39
SunshineFu 发表于 2019-1-12 08:58) s% ?. Q; g* ^3 [1 V1 O4 B
不清楚具体情况,可以上传模型吗?
1 g, S8 h- n1 H7 E% K1 C0 ^
你好,已上传2 q8 P9 g. Q( r& W+ }. p* y1 ~

作者: SunshineFu    时间: 2019-1-12 14:16
本帖最后由 SunshineFu 于 2019-1-12 14:20 编辑 6 i9 p6 m' K8 S1 |- h! O' d
13164121547 发表于 2019-1-12 10:39
" d9 |" n/ d. u/ M3 t你好,已上传
! d" x- M7 J6 Q: G8 q
我按照你在1层的留言修改了这个模型,延长故障恢复时间和在两个处理器间添加一个暂存区是为了便于观察故障产生的现象,故障恢复时间你可以在处理器的进入触发内修改回来。
' J/ i- W% O, ]: c: n
作者: 13164121547    时间: 2019-1-12 14:50
SunshineFu 发表于 2019-1-12 14:16
" K- y4 z9 v" m0 i我按照你在1层的留言修改了这个模型,延长故障恢复时间和在两个处理器间添加一个暂存区是为了便于观察故 ...

5 `; a5 l" E; Q) N1 j* V请问如果我想让1个处理器出现2种故障该怎么弄呢
作者: SunshineFu    时间: 2019-1-12 15:01
13164121547 发表于 2019-1-12 14:50) X# e6 ], P- J, J+ ~6 O) d
请问如果我想让1个处理器出现2种故障该怎么弄呢
* j2 z- d( G/ s1 l
哪两种故障?两个处理器都会出现两种故障码?
作者: 13164121547    时间: 2019-1-12 15:06
SunshineFu 发表于 2019-1-12 15:019 b2 x3 i/ F# h  \$ _* g
哪两种故障?两个处理器都会出现两种故障码?

4 t$ c. {7 p# Q9 J# V嗯嗯,正常加工时间是5秒,百分之30概率出现故障1,故障恢复时间是10秒,百分之20概率出现故障2,故障恢复时间是15秒,其实我一直想实现的是这个功能。
作者: SunshineFu    时间: 2019-1-12 15:33
13164121547 发表于 2019-1-12 15:06; t  A3 `; k. s
嗯嗯,正常加工时间是5秒,百分之30概率出现故障1,故障恢复时间是10秒,百分之20概率出现故障2,故障恢 ...
' z$ w) O7 t' h  S. \  g
修改好了,代码都在处理器的进入触发内!
0 Y3 _4 c- c" e$ o
作者: 13164121547    时间: 2019-1-12 15:44
SunshineFu 发表于 2019-1-12 15:33
# ^# |8 s4 l- R% y* e) R修改好了,代码都在处理器的进入触发内!
8 w$ Y8 D1 ~% A" M5 h' I
对不起,我描述错了,是第1类故障发生之后以及恢复完了,再进行第2类故障的判断,然后再恢复
作者: SunshineFu    时间: 2019-1-13 16:23
13164121547 发表于 2019-1-12 15:449 }* c# p. g; @" b- _. M2 w4 @0 f
对不起,我描述错了,是第1类故障发生之后以及恢复完了,再进行第2类故障的判断,然后再恢复

7 V2 F: _8 P; e- W先判断1类,再判断2类不好操作。你可以转换下思路,一开始就判断是否发生1和2类故障,如果只发生1类故障,就10s修复时间,如果只发生2类故障就15s修复时间,如果既有1类又有2类故障就25s修复时间,如果都没有,修复时间就是0s。
; f1 b+ y; }; K) Y7 _, H
作者: 13164121547    时间: 2019-1-15 12:01
SunshineFu 发表于 2019-1-13 16:23; @+ [  I& k; ^' {6 M
先判断1类,再判断2类不好操作。你可以转换下思路,一开始就判断是否发生1和2类故障,如果只发生1类故障 ...

* Q* p* I+ |, S' ]: k好的,多谢,我已经弄出来了,想法跟你差不多,我用的进入触发和预置结束触发,进入后判断一次,一定概率改变实体case,预置结束后再判断一次,再次改变case,然后加工时间根据不同case进行设置,非常感谢大佬




欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/) Powered by Discuz! X3.3