设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3791|回复: 3

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

[复制链接]
发表于 2010-2-2 12:03:24 | 显示全部楼层 |阅读模式
初学em-plant,要求做一个模型。现在遇到了问题,求高手不吝赐教。( L4 s4 \$ b1 O% Z2 }8 A
2 k' y) t! {8 ?* {* S- f# m  ^, F0 W
某生产车间根据订单生产。订单到达的日期可从table中读取。每笔订单会要求多件产品,各订单可能要求在不同的流水线上生产不同的产品。0 u8 p4 V) w6 N% S' I  u
2 t+ y* @( i/ R7 L) N& W
我现在考虑在source里产生大量的MU,同时每个MU读取table中的订单到达日期。MU从source出来后移至一buffer,在buffer中判断该MU下步该去哪个机器。同时,首先需要判断目前的模拟时间是否已经超过了订单抵达的时间。这是最重要的,这样才能与实际情况相符,即先订单后生产。& r( t$ W  c" F% ^* Q0 _
. V9 Z1 f$ R# Q  s& E8 I
如果我使用如下method与buffer的exit
4 |1 b1 B) e2 K: H. y9 b* ^  S: |$ T5 o: y6 P* U
if @.arrival_time < EventController.simtime 1 l5 F4 G1 \0 O# N( o6 P- b1 L
    then 。。。。。。。。8 z8 J! E9 \# p) v( M- `
. H! ]5 U: _4 y9 Q& I& K# K
@.arrival_time为MU的属性,在source中已从table读取,每个MU有各自的订单抵达时间(可能相同,即属同一订单)。此语句仅在buffer中判断一次,其后任凭新的MU进入,也不再判断。
* T" o; R) @0 k7 G+ H
% w+ B% f6 W, t/ x( k; E6 v如何使得buffer可以不停判断其中包含的所有MU,并且选择符合条件的运出?
 楼主| 发表于 2010-2-2 13:28:37 | 显示全部楼层
如何不按照先进先出的原则使Mu退出proc?
发表于 2010-2-4 00:26:41 | 显示全部楼层
自己编一个程序,该程序由Init调用。$ [% M% H0 z7 b4 y1 s
用一个tablefile,第一列为产生的时间,第二列为产生的个数。
1 `, d; w8 Q) L4 A6 @3 c2 w6 y+ R& R: ~6 ]; Q* y
程序可以这么写
/ F; j+ L' }6 @. A/ }while i < table.yDim loop
, Y& ?0 }& C# ^  wait table[1, i+1] - table[1, i];
; N' u1 w- f7 c1 ~1 I) v! P5 r, k  for j := 1 to table[2, i] loop/ P$ x" G  f8 ?% |, c, D
    myMU := ...create(Buffer);! A' Q: X+ {9 G! V
  next;
3 X+ D$ y7 T# h" I& K0 m* H  i := i+1;
/ H6 X( j: Y$ d5 `* R$ Y; Z% D1 pend;; Z9 p' ?7 ^) d. G$ F, V' v
# C4 q2 c/ H+ }3 b% M4 g) l
注意,Buffer设置无穷大。
 楼主| 发表于 2010-2-7 10:39:28 | 显示全部楼层
感谢楼上的帮助。应该可行,我去试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-11 06:25 , Processed in 0.013360 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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