设为首页收藏本站

最大的系统仿真与系统优化公益交流社区

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5034|回复: 3

[求助] 如何在特定时间段后同意MU通过

[复制链接]
发表于 2010-2-2 12:03:24 | 显示全部楼层 |阅读模式
初学em-plant,要求做一个模型。现在遇到了问题,求高手不吝赐教。
0 k+ f" a' b4 @" K6 i) V! p  ]* o' R. S0 E4 N7 Z2 _) j4 C
某生产车间根据订单生产。订单到达的日期可从table中读取。每笔订单会要求多件产品,各订单可能要求在不同的流水线上生产不同的产品。
! K& m+ c& ^: S7 X- _, A' y. C' ~  p4 l3 _' h0 a5 D
我现在考虑在source里产生大量的MU,同时每个MU读取table中的订单到达日期。MU从source出来后移至一buffer,在buffer中判断该MU下步该去哪个机器。同时,首先需要判断目前的模拟时间是否已经超过了订单抵达的时间。这是最重要的,这样才能与实际情况相符,即先订单后生产。
6 I, @% L& c% F4 m6 I4 T( W- T6 O
% o, M5 g8 q, B6 T0 X7 g7 D0 T如果我使用如下method与buffer的exit
6 I* ^% z3 I. N% \3 g1 ^
" t" r3 I- ^7 o) X/ a# c; Xif @.arrival_time < EventController.simtime
' P; [# }- t& A) o* F, S    then 。。。。。。。。5 [" m+ S, W3 X: s$ B) H! u2 |
# o% ^9 r# `, b/ Z" }
@.arrival_time为MU的属性,在source中已从table读取,每个MU有各自的订单抵达时间(可能相同,即属同一订单)。此语句仅在buffer中判断一次,其后任凭新的MU进入,也不再判断。2 l: z# e1 w1 T' ~+ }

# n5 R5 ?+ H3 ~, s! g  g如何使得buffer可以不停判断其中包含的所有MU,并且选择符合条件的运出?
 楼主| 发表于 2010-2-2 13:28:37 | 显示全部楼层
如何不按照先进先出的原则使Mu退出proc?
发表于 2010-2-4 00:26:41 | 显示全部楼层
自己编一个程序,该程序由Init调用。3 S7 d2 }  @: o* p4 k* C8 f
用一个tablefile,第一列为产生的时间,第二列为产生的个数。: n/ V( y) w9 Q. G( p8 U8 ?1 A

' V$ R9 V+ ~: @; V程序可以这么写
' D! r6 y6 a7 e9 Twhile i < table.yDim loop
' ^4 W8 B2 K4 ~5 C# _& S6 Y  wait table[1, i+1] - table[1, i];
# L% b- K6 T" c* j1 M( t0 k2 T  for j := 1 to table[2, i] loop" A! ]1 t0 E% z1 X. S5 z  U& ?
    myMU := ...create(Buffer);
# Y7 f8 U& d+ m/ m4 n  next;4 v  D, U6 W$ @& o6 ^. q0 z) g
  i := i+1;
2 I. m9 Z: F  c# [1 R  dend;
( s( y6 q( K" n, Y( F8 T/ U$ c# l
3 r! z2 \% j1 Y4 A注意,Buffer设置无穷大。
 楼主| 发表于 2010-2-7 10:39:28 | 显示全部楼层
感谢楼上的帮助。应该可行,我去试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|SimulWay 道于仿真   

GMT+8, 2026-6-29 02:25 , Processed in 0.015465 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表