A:一些概念
, G' S7 L _% N/ ~! X 1. Space大概是个假想的队列吧,因为模型没有哪个非运行时的文件里出现过Space的描述。# J, J9 j0 h0 f9 t# \7 i. ~
2. 对P_Creation2设置traffic limit应该是无效的,因为P_Creation2里只有一个L_null,产生的+ y, u8 G- A( t$ m( r% f; e2 }
新load并不进入P_Creation2。
8 l' a5 O; f) a9 Y( T% @
2 r8 _, G v' r- c! S* R5 h! HB:解决你的问题7 N( p8 u7 ~( E& i
1. 如果你想让P_In2一直是满的,首先要设置P_In2的traffic limit,然后,代码如下:, B; z$ Q# a8 y7 W2 S* e) K9 K
-------------------------------------------------------------------------
- E, n8 X9 [1 |2 T. b3 ybegin model initialization function5 _7 H) \+ f6 x, e4 d
create 1 load of L_C2 to P_In2
) p( n0 ?! e8 z; ~" v. Y5 S return true9 E+ n S9 u& w
end
( w' b! Z, [8 i- {' J1 i* q* G4 V: o/ R+ W. D
begin P_In2 arriving procedure2 G- c+ y4 M! p% I% e- E# f
clone 1 load of L_C2 to P_In20 d! L; k$ n& @6 Q8 A/ v
move into Q_F2
/ `) M% @0 {1 ^, @8 r& o... ...
) Q2 S% }0 [" g. }-------------------------------------------------------------------------! |- r1 o% r- z& B( B+ k; \% |2 ]
如果想让Q_F2满着,就把clone动作拿到第二句。
, \9 q- {" q+ t6 O& Y: _* q( ^& O+ i: v
2. 其实你想要的应该不是以上那种吧,而是依然以固定时间间隔投放Load,只是遇到没: t# C4 B8 {# z& k6 T( A; g
空间了就暂停下来。这又分两种情况(以下只看P_Creation2):
% i& t6 u. ~* X) m2 R4 E5 a2 y 2.1 每1秒钟检查是否有空间,有就投放(到P_In2或die);不管是否投放了,都再等下1秒钟,如此循环。
# X. R4 z* e. k! E `---------------------------------------------------------------------------1 F; A+ g& j+ |4 f# ~! \: N5 t+ d
begin P_Creation2 arriving procedure
/ [+ [% k5 X, H1 L while 1 = 1 do begin+ p* l. s ?' X
wait for 1 sec% A. [6 I9 T1 X$ c8 V
if P_In2 current = P_In2 capacity begin
6 A" X V2 d- U create 1 load of load type L_C2 to oneof(2 _In2,8:die)
+ }4 {1 \1 z: \/ n, s _8 ?" ^( v end
7 X5 o" m( C7 M& d* r& D# K end( o+ u. ^! }. i: } ^
end
2 H( }& z8 ?9 _5 {---------------------------------------------------------------------------" f; }1 I% w; t+ r
2.2 每1秒钟检查是否有空间,有就投放;没有的话就等到有,再投放;每次投放Load后开始计时1秒钟,如此循环。
/ p6 X' B+ N9 F+ ^# ]---------------------------------------------------------------------------' I: E! N5 Q" d7 |8 K( Y, u4 s: E4 J$ P
begin P_Creation2 arriving procedure
1 X1 |/ \/ `# m8 D( i* Q4 q D* y/ l while 1 = 1 do begin
' C4 D: B; k2 `! m# h" V7 U$ X wait for 1 sec& {/ c3 d7 _4 p' X0 V5 O
wait until P_In2 current = P_In2 capacity
/ @& N8 ]1 w9 q: c0 A create 1 load of load type L_C2 to oneof(2 _In2,8:die)7 S% |, F$ g7 Y% h8 J$ e
end0 X& I4 k$ L' t
end
- f: D8 @& V( ~5 i$ q---------------------------------------------------------------------------: f# T6 c0 k6 j! ?* m
以上是以P_In2为限制。要以Q_F2为限制,直接把P_In2改成Q_F2就可以了,current和capacity属性对于Process和Queue都有效。0 w, | n9 r2 O: y: x+ e7 q
; a6 {4 }* l; M! e# [
3. 如果要一次产生某个数量的Load把P_In2填满,等到空了再进入,方法也蛮简单,我就不写出来了。 |