A:一些概念: H2 l! `- [9 ^# h& H- E) v1 Z$ ]
1. Space大概是个假想的队列吧,因为模型没有哪个非运行时的文件里出现过Space的描述。1 N3 c( t; C" Y: Z) Y3 p& P( H
2. 对P_Creation2设置traffic limit应该是无效的,因为P_Creation2里只有一个L_null,产生的) Y& l5 A% ]- C F9 h) [
新load并不进入P_Creation2。
. c3 ], X4 Z" P4 q8 c [: A$ q0 v6 O7 _0 O7 F% A$ p: X+ D! f6 ^" [
B:解决你的问题: g$ L- o1 F* [* x
1. 如果你想让P_In2一直是满的,首先要设置P_In2的traffic limit,然后,代码如下:
0 v& X1 X: @2 t" x1 V-------------------------------------------------------------------------
2 L1 {! h$ n; p I5 b, Z& V; @& P% w+ gbegin model initialization function
* j- K$ u A' u create 1 load of L_C2 to P_In2# i3 z7 X" T8 a" \( g C1 k/ c* ]
return true" r4 ], G7 I# N. K
end
& ]3 w; Q! @, E4 b3 y' c x5 z: ?
begin P_In2 arriving procedure
5 X' {. N% o+ e clone 1 load of L_C2 to P_In2
, l/ g0 _& t1 d; o$ T8 {( H% S+ E( W move into Q_F2$ q: ]5 ?9 @. b4 g# F$ g
... ...$ b6 _ t6 U: m, n
-------------------------------------------------------------------------
$ y! z3 K7 G4 j0 e* j: \% w 如果想让Q_F2满着,就把clone动作拿到第二句。
6 I$ B- V8 D- _# S2 C& R4 Y9 q8 m' R6 q3 ]1 z% _1 M. U
2. 其实你想要的应该不是以上那种吧,而是依然以固定时间间隔投放Load,只是遇到没1 t+ f2 [' i/ {3 H* [7 U
空间了就暂停下来。这又分两种情况(以下只看P_Creation2):( B/ c# h5 }3 j
2.1 每1秒钟检查是否有空间,有就投放(到P_In2或die);不管是否投放了,都再等下1秒钟,如此循环。6 R/ R. A' J0 `) F( i" w
---------------------------------------------------------------------------
6 X2 m* Z9 U3 p; s. B$ s3 T8 }& l& @: fbegin P_Creation2 arriving procedure: q# ~( I( M g1 c$ @% m+ @
while 1 = 1 do begin& m7 C+ `; g" H% E9 \
wait for 1 sec
9 R# ` C8 T% ] if P_In2 current = P_In2 capacity begin: H, a! z3 W4 t+ q( |
create 1 load of load type L_C2 to oneof(2 _In2,8:die): j2 I @* D( P
end
/ p5 y1 k, R! m1 Z end2 P* i/ ^1 x/ p
end
2 X& w7 i9 @6 j# n6 _" Z% |---------------------------------------------------------------------------; {" T4 O- }/ P8 u+ d
2.2 每1秒钟检查是否有空间,有就投放;没有的话就等到有,再投放;每次投放Load后开始计时1秒钟,如此循环。
* V. O, A8 `& W( U7 i, O---------------------------------------------------------------------------& i, `: M1 ]# ]; W! {
begin P_Creation2 arriving procedure
" p9 Q( B% f( i) r while 1 = 1 do begin/ W; ~- }+ @1 l2 l: E, d, j- y
wait for 1 sec
: ?7 Z; V4 E- Y& p" ^% \1 m( B4 z+ r wait until P_In2 current = P_In2 capacity. }! ^" @* P4 w$ ]
create 1 load of load type L_C2 to oneof(2 _In2,8:die)+ D' ^5 q) q2 @( Q9 t
end
; c+ N! u- v) o B( k* x$ b* ]end
2 ~* g) i. ^: F1 m$ f---------------------------------------------------------------------------
! K7 x- |! W7 Y3 b5 B! i 以上是以P_In2为限制。要以Q_F2为限制,直接把P_In2改成Q_F2就可以了,current和capacity属性对于Process和Queue都有效。
; u6 O% a" Y' p; D. U
- R& E! I. z& ]: ^- v 3. 如果要一次产生某个数量的Load把P_In2填满,等到空了再进入,方法也蛮简单,我就不写出来了。 |