A:一些概念' H/ r" [5 ]: P0 u0 o
1. Space大概是个假想的队列吧,因为模型没有哪个非运行时的文件里出现过Space的描述。% @: {% j' `; d q* @+ |
2. 对P_Creation2设置traffic limit应该是无效的,因为P_Creation2里只有一个L_null,产生的/ D" `5 ]5 E; V& s3 x. L3 E+ ]! S
新load并不进入P_Creation2。
3 T! @, l8 k2 G c0 M5 L: N9 u a7 J
$ ]4 E U2 {- G1 }, AB:解决你的问题
0 k; A" ~- w. n0 N4 i. U 1. 如果你想让P_In2一直是满的,首先要设置P_In2的traffic limit,然后,代码如下:
# g' m$ u) P) f/ [9 _-------------------------------------------------------------------------
3 K& j5 k# E) g3 Qbegin model initialization function
" H+ Z: k0 e6 ~8 {! o create 1 load of L_C2 to P_In2
$ _* Y9 c3 t/ g" Z9 F return true
* D' ?' q, ~! u6 M1 Dend+ m/ i- |. x) I2 ^- O- a, G1 }
]+ T! N3 J# dbegin P_In2 arriving procedure
2 t8 U) @3 D4 n5 f clone 1 load of L_C2 to P_In2. _& A8 L' d, w4 F! `: y5 C
move into Q_F2+ [; d M# w$ P3 _8 G7 C
... ...& T# ]8 s0 t8 ]/ F- w2 l- {
-------------------------------------------------------------------------: B2 o; a7 J6 x- I' g1 [, L
如果想让Q_F2满着,就把clone动作拿到第二句。* [8 x1 o2 ?9 k0 Y7 }
# H2 r% z; P* g1 [, V; d' t% i
2. 其实你想要的应该不是以上那种吧,而是依然以固定时间间隔投放Load,只是遇到没2 }; d. K2 T& W: D1 e# G* R, U$ `
空间了就暂停下来。这又分两种情况(以下只看P_Creation2):% P) I6 ]' H! }0 S+ s
2.1 每1秒钟检查是否有空间,有就投放(到P_In2或die);不管是否投放了,都再等下1秒钟,如此循环。" E" v" ^* V2 `8 x
---------------------------------------------------------------------------% |! U* n* Q6 K1 S
begin P_Creation2 arriving procedure! v- l6 ?8 P1 N. p1 r: k# `8 i) t
while 1 = 1 do begin
# X$ M5 ]/ N# q; ?5 r+ T1 @: q& V wait for 1 sec
: g/ F3 g! H5 @ if P_In2 current = P_In2 capacity begin
' E' Q; c" r) m3 t& b+ b0 ] create 1 load of load type L_C2 to oneof(2 _In2,8:die)3 T5 @' ?! w$ u
end
) p. C% e' |5 O! ~2 S; C Z end
5 a: K( \ T/ S, f- Eend
! n$ X1 d1 c5 B7 x- s---------------------------------------------------------------------------) A6 S" y9 {- h5 t! g. ~
2.2 每1秒钟检查是否有空间,有就投放;没有的话就等到有,再投放;每次投放Load后开始计时1秒钟,如此循环。" W' d9 \9 V) Z5 L. E. Y9 P% q) s
---------------------------------------------------------------------------; F: T2 G/ D6 O3 K" n+ M: p; Z
begin P_Creation2 arriving procedure& ~$ I% ^- H; j% |# Y* e4 {
while 1 = 1 do begin0 C' g: \% _) ?4 K4 R; {4 h% x
wait for 1 sec7 f% r8 U* V1 b: D: s( c: L
wait until P_In2 current = P_In2 capacity. |* b( j8 O, i3 R; w) j
create 1 load of load type L_C2 to oneof(2 _In2,8:die)3 c, N3 W4 [5 O8 ?5 S
end0 `9 q/ b' |3 a4 l
end
$ n3 X6 y; M- _' l* X---------------------------------------------------------------------------( H, u8 ^5 L6 d _' B/ m9 \
以上是以P_In2为限制。要以Q_F2为限制,直接把P_In2改成Q_F2就可以了,current和capacity属性对于Process和Queue都有效。
. ]' G; B' {) s! h) k. Q" c7 I |6 T
3. 如果要一次产生某个数量的Load把P_In2填满,等到空了再进入,方法也蛮简单,我就不写出来了。 |