A:一些概念$ ^ K! i6 M3 q* g, W
1. Space大概是个假想的队列吧,因为模型没有哪个非运行时的文件里出现过Space的描述。% P1 ~% c8 W' Z2 }, x i
2. 对P_Creation2设置traffic limit应该是无效的,因为P_Creation2里只有一个L_null,产生的( q) ~5 ~5 c/ T% l- t! H5 g
新load并不进入P_Creation2。
/ I3 y p8 d2 t& h* I2 Z) f* H5 m+ L* W1 X
B:解决你的问题. V. t1 q# y3 N) c2 h# ~
1. 如果你想让P_In2一直是满的,首先要设置P_In2的traffic limit,然后,代码如下:
: L* s: H2 x2 \2 R# l-------------------------------------------------------------------------; ~1 Y& l# S& E/ R4 i, R
begin model initialization function
3 i9 n& j" M+ [, x) E# G* X create 1 load of L_C2 to P_In2
# v5 }8 E) K* j% @. k; v return true
3 ?: x% b$ ]/ m, C% Y1 {end: E4 {5 S: ?: A& s
6 t- d! ]1 ~7 R% {! w2 Z: r
begin P_In2 arriving procedure
) E% t; }' ?. X clone 1 load of L_C2 to P_In2/ U, K8 L5 Q% w+ a2 p& I
move into Q_F2; X8 ?# B4 u- x" v1 f$ n
... ...; t7 ~! d7 @1 |. [
-------------------------------------------------------------------------6 m' o# }" }, K8 \5 d3 j
如果想让Q_F2满着,就把clone动作拿到第二句。3 J$ W% g {) d: l8 ]) T
3 A) v% {$ Y6 m7 n9 _+ h+ R 2. 其实你想要的应该不是以上那种吧,而是依然以固定时间间隔投放Load,只是遇到没
# A+ Z0 u/ X* h8 W+ {/ H, A4 g空间了就暂停下来。这又分两种情况(以下只看P_Creation2):
/ k+ B* `9 O, t6 s5 ^3 x% u 2.1 每1秒钟检查是否有空间,有就投放(到P_In2或die);不管是否投放了,都再等下1秒钟,如此循环。
, Y9 W$ X- u9 H" ?( L% J t---------------------------------------------------------------------------
9 V3 |/ A: U6 ^0 e% Xbegin P_Creation2 arriving procedure
* ~4 z6 X1 I; A while 1 = 1 do begin/ N1 g, S- D* L; v' U6 S" f0 T. R6 N3 }
wait for 1 sec
, c2 y4 e: y" p: p/ B/ h6 B if P_In2 current = P_In2 capacity begin/ i$ q# j3 d9 b5 f+ u; n: {% Y
create 1 load of load type L_C2 to oneof(2 _In2,8:die)
: m/ Q8 j6 h+ I8 \+ Z3 m; s end
) B9 H& u/ n3 n- | end; i- M6 e+ c: }6 U* {9 e
end
. e$ V) [1 J' W( e/ \( z' a---------------------------------------------------------------------------# y6 o7 c1 z! `+ W1 L9 S
2.2 每1秒钟检查是否有空间,有就投放;没有的话就等到有,再投放;每次投放Load后开始计时1秒钟,如此循环。
# s0 R, s. @- k6 r---------------------------------------------------------------------------* c# \& O1 F8 i* l
begin P_Creation2 arriving procedure
' x- d4 p: m, \# x while 1 = 1 do begin
5 Y) I1 K2 z! ~' h/ k wait for 1 sec2 U' C4 x! A6 C" x0 |, G9 q
wait until P_In2 current = P_In2 capacity$ Q4 G& L7 |3 N% ]
create 1 load of load type L_C2 to oneof(2 _In2,8:die)
1 C! v: s! s7 v' H) n$ _ u# G* B end; m/ R* J y/ }) S- i
end/ \ n7 k- b% r$ n! s: l4 |+ a/ Q
---------------------------------------------------------------------------
: z8 l s5 [$ P0 w$ V% R+ q3 ` 以上是以P_In2为限制。要以Q_F2为限制,直接把P_In2改成Q_F2就可以了,current和capacity属性对于Process和Queue都有效。
; [1 n8 ^8 J3 P. s. ?) m; Z6 {* Z7 \ Z6 n6 @* f8 M
3. 如果要一次产生某个数量的Load把P_In2填满,等到空了再进入,方法也蛮简单,我就不写出来了。 |