设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4317|回复: 3

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

[复制链接]
发表于 2010-2-2 12:03:24 | 显示全部楼层 |阅读模式
初学em-plant,要求做一个模型。现在遇到了问题,求高手不吝赐教。
4 C7 B5 h& G- z- Z1 h) ]& C" p+ K
7 V* p2 K8 }( X7 u1 h- \) V  y. i9 ^某生产车间根据订单生产。订单到达的日期可从table中读取。每笔订单会要求多件产品,各订单可能要求在不同的流水线上生产不同的产品。1 x* @: e3 k6 s0 d2 W7 H- i
! @* m! h! @% ?1 U1 k& p
我现在考虑在source里产生大量的MU,同时每个MU读取table中的订单到达日期。MU从source出来后移至一buffer,在buffer中判断该MU下步该去哪个机器。同时,首先需要判断目前的模拟时间是否已经超过了订单抵达的时间。这是最重要的,这样才能与实际情况相符,即先订单后生产。
$ f0 ^- K6 ], A( {  r$ i
/ G) F! x7 \; m9 X" @' g# ~如果我使用如下method与buffer的exit
- t5 d7 \3 W4 w4 Y% Y  r1 q$ n0 W4 X) \- p0 T
if @.arrival_time < EventController.simtime
, g( ?% n( \& g! z1 W5 ]    then 。。。。。。。。
; I3 [# p+ {1 W, @5 M/ \* v& s+ k" v: c  F! I
@.arrival_time为MU的属性,在source中已从table读取,每个MU有各自的订单抵达时间(可能相同,即属同一订单)。此语句仅在buffer中判断一次,其后任凭新的MU进入,也不再判断。
+ n6 Q* m; O6 |9 E
+ h* ]. }  ~( P6 r/ M' c. I如何使得buffer可以不停判断其中包含的所有MU,并且选择符合条件的运出?
 楼主| 发表于 2010-2-2 13:28:37 | 显示全部楼层
如何不按照先进先出的原则使Mu退出proc?
发表于 2010-2-4 00:26:41 | 显示全部楼层
自己编一个程序,该程序由Init调用。9 @7 t0 [/ }' F* i- ^0 w4 m
用一个tablefile,第一列为产生的时间,第二列为产生的个数。( q3 ~1 X! C7 M( k( t

. h5 r* ^$ V; @+ N, a& O程序可以这么写9 H# a6 T+ J8 @! A2 l4 @
while i < table.yDim loop
" w/ k7 v8 J# K# k; A  wait table[1, i+1] - table[1, i];
9 V; e6 c% q# d7 ]7 f. k6 @+ ?1 B8 b  for j := 1 to table[2, i] loop: Z1 d+ f  V/ ^! E. K0 w* R
    myMU := ...create(Buffer);6 L/ ]9 Z2 A) r
  next;) X$ h; w* G, m& Q8 y& w2 G
  i := i+1;! n, y5 i8 \& Q: u4 I
end;6 {- ^" \+ N: S6 E# W& d3 ]

+ ?  l0 j! P/ g注意,Buffer设置无穷大。
 楼主| 发表于 2010-2-7 10:39:28 | 显示全部楼层
感谢楼上的帮助。应该可行,我去试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-5 16:03 , Processed in 0.019165 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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