A:一些概念
' g, r) p+ s$ l h& {( D1 N. ?- j 1. Space大概是个假想的队列吧,因为模型没有哪个非运行时的文件里出现过Space的描述。' [& h+ R- V- z: E6 ?
2. 对P_Creation2设置traffic limit应该是无效的,因为P_Creation2里只有一个L_null,产生的
8 A# p+ N+ k% w; X. b |新load并不进入P_Creation2。- q0 e/ y3 ?- y7 M6 v" u) d
& e4 F Q) i8 I v+ }B:解决你的问题
Z4 _( z% q& E: T( K" A9 g 1. 如果你想让P_In2一直是满的,首先要设置P_In2的traffic limit,然后,代码如下:) Y1 g# T5 U' D3 V0 R" d* Y8 [
-------------------------------------------------------------------------& V2 H7 `6 u# X3 E5 H H
begin model initialization function; A9 P0 g. W+ O3 l" g
create 1 load of L_C2 to P_In2
2 {( U4 x5 i( a- B, o0 k* w return true
^: A9 U ? m* X9 vend5 V! W6 F% ?' F- c+ k7 @
- u+ D) X4 j) z) b
begin P_In2 arriving procedure5 U {, K6 t, j( U- [( S! y
clone 1 load of L_C2 to P_In2
8 b p$ E: I; U5 f move into Q_F28 w/ s3 A% D4 t; v
... ...
& M! i4 f+ ~9 }5 c-------------------------------------------------------------------------
" R; y% T. ]4 v0 G 如果想让Q_F2满着,就把clone动作拿到第二句。
& ?! ~% v# I) w7 @9 a- V7 g3 o# {& j A, ?7 ]- A
2. 其实你想要的应该不是以上那种吧,而是依然以固定时间间隔投放Load,只是遇到没
: }6 X( f, M8 e I1 a O1 O# N' Z空间了就暂停下来。这又分两种情况(以下只看P_Creation2):
4 ]; M, ?5 @4 u& l% |3 _, ] 2.1 每1秒钟检查是否有空间,有就投放(到P_In2或die);不管是否投放了,都再等下1秒钟,如此循环。1 w' P2 O3 V8 `2 u% @9 n
---------------------------------------------------------------------------
8 }! y* T$ N$ {8 k& ebegin P_Creation2 arriving procedure( A% C0 Q9 T) a) f1 p- \
while 1 = 1 do begin$ T+ u! y# u1 ^9 {( ^& [9 x% g
wait for 1 sec
* C9 ^2 Y0 v0 a b if P_In2 current = P_In2 capacity begin9 f! y: C! f8 f V* |7 J
create 1 load of load type L_C2 to oneof(2 _In2,8:die)* Y; D% n& V5 ^# J& H( {: \. G
end, l" s! G9 @8 [: z
end0 E8 K( u! W3 X0 `
end
3 c' q) E1 d U" |/ S" k---------------------------------------------------------------------------& O5 U# B v# k* S+ a5 s: F# [( ^
2.2 每1秒钟检查是否有空间,有就投放;没有的话就等到有,再投放;每次投放Load后开始计时1秒钟,如此循环。
0 G7 p3 c1 Y8 h; o5 E! C---------------------------------------------------------------------------
1 l' _8 U ]% `* B1 M* @begin P_Creation2 arriving procedure
4 Z8 |% a* ?; y0 F! S% T3 W7 L% j% h- c. X while 1 = 1 do begin; J5 c. ^5 B$ n4 ^: r. O i) m
wait for 1 sec
1 r6 I! P' W& m4 \: a wait until P_In2 current = P_In2 capacity
" J! I" C1 ]2 r7 H5 I# O- M+ w create 1 load of load type L_C2 to oneof(2 _In2,8:die)
5 V4 b$ {* I( j+ g, d# G end: j) i5 n$ q) @1 K
end, I, \ q( s) U. ^$ }
---------------------------------------------------------------------------6 n- }; k1 E' s6 x d+ ?
以上是以P_In2为限制。要以Q_F2为限制,直接把P_In2改成Q_F2就可以了,current和capacity属性对于Process和Queue都有效。$ P$ d6 C1 M" ?2 M" I' {
( l* V3 X1 ^7 H) @
3. 如果要一次产生某个数量的Load把P_In2填满,等到空了再进入,方法也蛮简单,我就不写出来了。 |