全球FlexSim系统仿真中文论坛

标题: 发生器一次产生多个同类实体 [打印本页]

作者: hans_tigger    时间: 2015-9-23 18:02
标题: 发生器一次产生多个同类实体
[attach]2812[/attach]
作者: hans_tigger    时间: 2015-9-23 18:03
7.3.4版本
作者: zorsite    时间: 2015-9-24 09:45
[attach]2813[/attach]
作者: 慧娴亚伦    时间: 2015-9-24 21:20
感谢楼上两位的分享!
6 Q, ?, _( U% x% Y- O再多嘴一句,使用6.0中文版的用户,该选项被误翻译为“批量加工”" v9 P/ ]: ]. e8 J% |  o9 @
此外,我们还可以借助一个分解器来完成这个过程。
作者: zorsite    时间: 2015-9-25 01:26
自己整理了一下思路,才发现自带的代码是多么的精简,这就是高手与新手的差别啊~~
! T, r& x; Z+ w5 O; T* D" V以下是我按照自己的思路编写的代码:
  1. int batchnumber = 5;4 s, N7 [$ W4 C% y3 n" ~6 {" A
  2. double cycletime = exponential(0, 4, 0);
    + z2 X' Y9 R: W4 m6 [, ]8 o8 f
  3. string labelName = "批次数量";
    4 `) y6 E0 V4 U2 b/ ]
  4. treenode curlabel = assertlabel(current, labelName, DATATYPE_NUMBER);' j4 n4 ^+ {5 I' T9 g0 u
  5. - ^7 Y) P/ A, r, U& x9 f( e
  6. if (time()==0) ' u4 K! y  P7 S: y
  7. {1 s$ p1 ~2 k, E& D, R, L
  8.         setnodenum(curlabel,batchnumber);
    " [+ {1 Z7 P+ \2 }: L- l6 @
  9.         return cycletime;# [+ U  |+ \0 T! D9 v
  10. }
    & ?$ B7 I, ^8 l; o" C& ?" h. |
  11. else 0 B7 s1 _. w! _: |8 T* D
  12. {
    4 R; e  e* g5 _3 Y& C
  13.                 if (getnodenum(curlabel)==1)' @& t, o: p8 U
  14.                 //如果等于0,似乎是正确的,但是会比预期中的批次数量大1.
    9 ]) ?- Z6 T3 F
  15.                 //原因在于只要激发了该触发,就一定会生成一个临时实体。
    6 L1 ^( h+ ?! ~' a& [1 C( N
  16.                         {5 P& t+ M' @. X- V/ @
  17.                                 setnodenum(curlabel,batchnumber);' j5 H' f9 d* T; P( M( f: A
  18.                                 //想要执行的语句一定要放在return前面。
    ! [' O$ a* l/ U
  19.                                 return cycletime;$ B+ M! ]8 |2 P" Q% Q' D
  20.                         }1 J& x: L0 l0 T
  21.                 else
    . Z6 J7 z( r, W, c7 T4 L% `
  22.                         {7 v1 d' x4 |% h  N, Q- q
  23.                                         inc(curlabel,-1);
    / k: y6 V$ L7 v# F, \3 J$ l
  24.                                         return 0;                                                  
    ) K. D6 F$ P/ \

  25. 6 z+ }9 Z6 s0 P
  26.                         }
    & Q$ S9 t, a# o# D7 f$ b
  27. }
复制代码
以下是flexsim自带代码:
  1. int batchnumber = 5;- ^1 a+ P4 I: g" r, q6 b3 L
  2. double cycletime = exponential(0, 10, 0);
    + ^7 \' m/ y* l$ J1 |% m* Q
  3. string labelName = "批次数量";
    ; e' K% u" O0 R, J# i0 n
  4. & N0 R& L/ Y7 ?2 Z
  5. treenode curlabel = assertlabel(current, labelName, DATATYPE_NUMBER);
    7 P: O, F) {% {
  6. 1 h* f6 l; _, w$ a1 g
  7. if (time()>0 && getnodenum(curlabel)>1) {
    : N) O0 J: J! |1 e4 Y$ l0 N7 [3 O( W
  8.   inc(curlabel,-1);
    ) U& h2 I3 T6 a0 g
  9.   return 0;
    " k- u( O$ K4 O& }: D( Q
  10. } else {
    : u: N& e5 T' b' H. o0 a
  11.   setnodenum(curlabel,batchnumber);
    . |% _3 y7 r  R4 h, ]
  12.   return cycletime;5 {# T% d6 B% @& X9 s
  13. }
复制代码

作者: hans_tigger    时间: 2015-9-25 01:35
谢谢大家,好好学习
作者: shiningcz    时间: 2015-9-25 10:39
学习了
作者: lulu-luka    时间: 2016-12-1 10:29
3# zorsite 4 B* a2 c% o6 g8 S
我想要实现发生器后接的暂存区或者货架上的货物一旦空了就触发发生器批量生产实体的功能,求指教~
作者: lulu-luka    时间: 2016-12-1 10:32
我想实现发生器后接的暂存区或者货架上实体数量为0时触发发生器开始批量生产输出实体的功能~求指教
作者: susan    时间: 2016-12-1 12:58
9# lulu-luka 9 W2 \5 N. C+ k% t
! p  Z! k  h  C4 E
类似的问题论坛上其实有很多,您可以参考下这个帖子。http://www.flexsimasia.com/viewt ... =%D4%DD%B4%E6%C7%F8




欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/) Powered by Discuz! X3.3