A:一些概念* e; R" k! p) u: d( O
1. Space大概是个假想的队列吧,因为模型没有哪个非运行时的文件里出现过Space的描述。- p# M+ }" A0 n4 x( c! p
2. 对P_Creation2设置traffic limit应该是无效的,因为P_Creation2里只有一个L_null,产生的) C" q; K7 A5 b& [! ^- L" y
新load并不进入P_Creation2。
9 q$ h) x& @" d( ]/ f+ F" S' b. n5 A( |! Z" Z% i( `8 a
B:解决你的问题
: J" X6 K8 ]5 t6 M 1. 如果你想让P_In2一直是满的,首先要设置P_In2的traffic limit,然后,代码如下:/ U" K6 i$ K9 u
-------------------------------------------------------------------------
7 v, F \2 J% E/ I- Kbegin model initialization function
* h! }/ |2 a6 j) B# H$ k create 1 load of L_C2 to P_In2
; K1 h1 ]# n. G5 ]7 U return true
" Q; a" \3 B$ m$ a! @5 Nend
" e2 F* R: t5 b2 C( R) ?- a, @ T6 U7 t* |7 f; z% c7 X4 Z2 f
begin P_In2 arriving procedure
V$ K( D% {: n2 P; N clone 1 load of L_C2 to P_In2$ a% v* B: S1 K) b# p
move into Q_F23 n( x1 K. W) X8 u
... ...+ D8 _( Y; ^9 @( z; Z
-------------------------------------------------------------------------
! h3 ^# j! |' B6 i8 Z* n 如果想让Q_F2满着,就把clone动作拿到第二句。0 K; J8 T, l' H/ S. ?; v
9 {4 E( w& Y6 `9 `1 g* q 2. 其实你想要的应该不是以上那种吧,而是依然以固定时间间隔投放Load,只是遇到没
4 f; c% _' G8 G2 n+ n空间了就暂停下来。这又分两种情况(以下只看P_Creation2):/ P) D9 J% A* j" G& E
2.1 每1秒钟检查是否有空间,有就投放(到P_In2或die);不管是否投放了,都再等下1秒钟,如此循环。9 ~5 `, U* q# _+ s! y' t$ B
---------------------------------------------------------------------------
9 D& N" d) |$ A! _' ?2 Ibegin P_Creation2 arriving procedure
2 Y' j; w% W' }' B7 a while 1 = 1 do begin" d7 X0 P' P3 B8 x. c& P
wait for 1 sec
) o$ G. E/ v; m J1 s7 Q if P_In2 current = P_In2 capacity begin$ w# M }3 Y& \! h$ V8 ?+ K
create 1 load of load type L_C2 to oneof(2 _In2,8:die)% O4 I8 Q1 E. D6 c- f9 W
end
3 n+ B; O \8 l% ~1 ~2 S end
' Q# t; O6 C* f$ ~end
) \: A8 a) I, e9 Z% A1 `---------------------------------------------------------------------------: _; B( h9 `; C0 R% b9 N, n
2.2 每1秒钟检查是否有空间,有就投放;没有的话就等到有,再投放;每次投放Load后开始计时1秒钟,如此循环。
6 e; B- { K: M7 a6 m) W---------------------------------------------------------------------------
: V# K4 V5 i( |- E% i" zbegin P_Creation2 arriving procedure
8 B' A' b% E" O while 1 = 1 do begin2 r; m- K, R; v! j( p* p/ |
wait for 1 sec U% v! i) w. P% J" H
wait until P_In2 current = P_In2 capacity
q$ ?; h ]' D& N) j$ E; R create 1 load of load type L_C2 to oneof(2 _In2,8:die)
! _& ^7 D a0 S4 R. L* o2 j end
) }. \5 ?7 P" l' w3 R5 J: f* i5 W$ |end
: L! l. @' c$ k; M- P---------------------------------------------------------------------------/ }: n1 g+ x1 n- Q# m% X. S( ^
以上是以P_In2为限制。要以Q_F2为限制,直接把P_In2改成Q_F2就可以了,current和capacity属性对于Process和Queue都有效。
^, G( [5 `* }* b, i0 v2 [- i3 a$ k
0 `) m4 V, j; T3 ] 3. 如果要一次产生某个数量的Load把P_In2填满,等到空了再进入,方法也蛮简单,我就不写出来了。 |