设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4387|回复: 3

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

[复制链接]
发表于 2010-2-2 12:03:24 | 显示全部楼层 |阅读模式
初学em-plant,要求做一个模型。现在遇到了问题,求高手不吝赐教。" o" K5 `$ c8 [: Q! \

$ S9 x8 b& H2 I7 m. E某生产车间根据订单生产。订单到达的日期可从table中读取。每笔订单会要求多件产品,各订单可能要求在不同的流水线上生产不同的产品。* L) |6 u. L8 N3 u. {* A- A+ F9 r+ j

, R2 |  T# N7 N  V8 s0 q1 p- N我现在考虑在source里产生大量的MU,同时每个MU读取table中的订单到达日期。MU从source出来后移至一buffer,在buffer中判断该MU下步该去哪个机器。同时,首先需要判断目前的模拟时间是否已经超过了订单抵达的时间。这是最重要的,这样才能与实际情况相符,即先订单后生产。8 h4 D) y& r* K; X' P+ M7 H' {
! X) H% g! O) ]0 f7 S: M) ?% T# a
如果我使用如下method与buffer的exit
' X! O" ^% N: |: y- J! j2 q7 g. [0 ?$ l
if @.arrival_time < EventController.simtime . }$ [2 V& }$ M* H# S
    then 。。。。。。。。
( v9 c, F3 }3 B8 f
$ y5 f, X4 Q: @# h7 T5 E% r@.arrival_time为MU的属性,在source中已从table读取,每个MU有各自的订单抵达时间(可能相同,即属同一订单)。此语句仅在buffer中判断一次,其后任凭新的MU进入,也不再判断。5 x0 h6 o( b6 U3 k, q' Z" t9 w2 T

" i9 y' D) W7 H9 r如何使得buffer可以不停判断其中包含的所有MU,并且选择符合条件的运出?
 楼主| 发表于 2010-2-2 13:28:37 | 显示全部楼层
如何不按照先进先出的原则使Mu退出proc?
发表于 2010-2-4 00:26:41 | 显示全部楼层
自己编一个程序,该程序由Init调用。) ~$ f2 R+ _! b8 T. [1 `* V
用一个tablefile,第一列为产生的时间,第二列为产生的个数。: n- s/ l  X9 k$ H) J6 z# P% b
8 O; ~7 J! D9 ?" e9 e& }3 [( I9 G
程序可以这么写
+ b6 P9 d2 }2 u1 Q8 T" [while i < table.yDim loop- z* P4 Y( f$ G* [  ]
  wait table[1, i+1] - table[1, i];
! g) s  g6 m+ I% y  for j := 1 to table[2, i] loop
, Z5 l4 U& Q6 L( D4 F" o" K- {    myMU := ...create(Buffer);; s( r# b% a' N' H7 A
  next;
0 ?8 e+ d- a& c$ a0 M  i := i+1;. y& o6 c) T0 m; Y% i' q% E
end;/ G; A; h" Y% {# m

7 t" U8 Z& S+ [5 K5 K$ H' N注意,Buffer设置无穷大。
 楼主| 发表于 2010-2-7 10:39:28 | 显示全部楼层
感谢楼上的帮助。应该可行,我去试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-1-27 09:13 , Processed in 0.022253 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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