在什么情况下使用 Equation,什么情况下使用 Equation (I)? 0 J* h" O! n0 M* V" q
* M0 {5 h, B; |: M0 F* }
首先我们需要知道,在连续时间模型(也就是没有Executive模块的模型)中,只能使用 Equation,而不能使用 Equation (I) .这时候,Equation的计算频率是按照等步长的时间间隔由系统统一触发。" W3 q0 `% j' o' J( X
6 `2 t$ \1 x9 \: i
那么在离散事件模型中,这两个模块都可以使用,如果选择呢? 我自己总结如下,欢迎大家补充
) Q* e( S& z- r% u, v& I$ s- ^3 O; `7 S( ^+ D0 x$ C
采用哪个模块最根本取决于我们希望这个程序被触发(计算)的频率和时机。
$ U1 I5 ^3 }, N* Z: `( a
: {2 c, {% m: Q! b5 L8 w在以下情况下最好使用 Equation (I)
1 f: y# E* V1 r8 o- `0 E" S(1) 程序的触发和计算是由通过这个模块的小球来决定的,也就是说,我们有一个明确的时间点,而这个时间点和通过这个模块小球的通过有直接的关联,如果小球没有到,这个计算就不必要进行
8 D0 }3 t# |* @(2) 这个程序的计算结果在小球到达之间是需要延续的,有可能被其他模块采用,也就是说在下一个小球到达之前,这个程序的计算结果是需要一直保持恒定状态。比如说,我们需要按照某个订单的订货数量来 Batch 一定数量的小球,那么,采用 Equation (I) 输出这个订单所需要的数量,把这个数量就可以做为Batch 模块批量的输入端口,那么在下一个订单到达之前,当前订单的所需数量都是恒定的,便于Batch的发生;$ c6 C. x" R$ G! }. a$ r1 S
b$ b$ {+ v1 G1 A在以下情况下最好使用 Equation / p7 H: ]* q* @0 h( z g6 {( A
(1) 程序所用到的输入都是在其他模块中输出的信息,而这些信息一般都是时时刻刻变化的,并不是由某一个小球的通过来确定的。而任何一个输入信息发生变化,都需要及时作出新的决策。5 K) x4 |7 m, I: J6 G. @; O, o9 A
(2) 程序需要不断地定时发生。这种情况出现在决策需要提前作出(而不是等到某个事件发生后才进行处理,比如说之前港口装油的例子中,在装油结束前10分钟,就需要调动托轮)。这种情况也出现在某些决策信息本身并没有和某个具体事件相关联,比如说,某个决策和当前时间有关,当时间为100分钟的时候,需要产生出某个决策信息。 这时候,需要在 Equation 模块的 Option 分页中,设定定时计算的时间间隔
$ Y/ {5 n7 V2 |0 m
7 x( h$ Y) T3 i" m, t! f3 q在离散模型中,尽可能使用 Equation(I)模块,这样计算触发的时机比较清楚,容易掌握。如果不能满足,再考虑 Equation 模块。 |