全球FlexSim系统仿真中文论坛

标题: releaseitem命令简介 [打印本页]

作者: zorsite    时间: 2017-5-13 12:11
标题: releaseitem命令简介
本帖最后由 zorsite 于 2017-5-13 12:25 编辑
! h( a( m) @, f6 E. J' L# r
8 Q: X% `3 K8 s( Y( e" Z, F. A# rreleaseitem(obj flowitem [, num port ])8 Z. c: ~7 {9 U" a1 T, z% t4 `
释放指定的临时实体。0 M# `4 `# R% ~, B' g; r0 E
releaseitem命令仅用于以下两种情况;
6 {( N1 x* V( e1.临时实体在基础固定实体(BasicFR)之中并且尚未被释放。
8 G) o$ P( ^! O; P6 t2.临时实体在任意固定实体之中,并被holditem命令控制。
  t* D: R6 l4 }# b4 P( w. m第二参数为可选参数,用于指定临时实体的输出端口。如果指定此参数,临时实体被释放时直接由指定端口离开,并不激活“发送至端口”(Send to Port)触发。如果省略该参数,将由“Send to Port”来确定输出端口。4 y3 f0 R3 p  R. M( i; E7 t* `
本命令执行后将返回一个整数。如果第一参数中指定的临时实体存在,命令执行后将返回1,否则返回0.
0 D9 i" p( y0 s  M' |* W) C
/ ^$ N, p9 ~, F6 G
命令示范:; e) q( N9 [& c3 p- Y: K$ A& K
releaseitem(item);
5 ~# V( m  d2 ?- [' p* Xreleaseitem(rank(current,1),1);5 W" G0 j; p" D' R+ \# \' H5 C
releaseitem(last(current),getitemtype(item));
1 r/ [+ \5 K+ L! C+ E1 J! }  r# ^1 G6 x. M, P: V+ M
实际使用中发现,如果要释放的临时实体不存在,程序将报错。& }/ t0 Q/ ^" l8 W1 Z
使用该命令时需要注意,确保第一参数flowitem指向正确。
9 x: x. K0 |# s+ E% k
8 R8 i- H/ u) M+ l' M

4 T, z- P) p$ I6 s; X/ k3 _案例1:& s" ^; [7 x$ [) V% E5 l
使用releaseitem命令释放货架中的2个临时实体,在货架的“发送至端口”中设置“不释放临时实体”(Do Not Release Item)。
! B$ x3 s. [& J+ Z6 ^1.如果命令执行时货架中没有2个临时实体,程序将报错。
5 F! h' M/ A1 t# B5 o3 B5 k: P2 g4 ^$ b+ b, Z4 [$ d
2.假设货架存在2个临时实体。
( W# k% l  R4 v- a5 v! G/ J- A  w, ~  E- G9 M3 L! ]$ e) s

/ m+ Y) S# o$ m$ ?# h" ^(1)不使用运输工具。6 ]# {2 u0 t! A  Z4 m8 H4 Z
第一次释放临时实体时,执行的是releaseitem(rank(current,1),1)。一旦命令被执行,第一个临时实体将立刻离开货架,此时货架剩下1个临时实体。在第二次执行releaseitem时,第一参数该如何写?是releaseitem(rank(current,1),1);还是releaseitem(rank(current,2),1);?
, B$ I0 W0 U% y' V6 p第一个临时实体离开后,原来的第二个临时实体现在变成了第一个。如果要释放原来排序为2的临时实体,仍然要使用releaseitem(rank(current,1),1);
: S5 |# u( n8 P+ K5 ~/ x$ j6 f, r3 R: K

$ n4 o" x5 B0 p8 b(2)使用运输工具。7 \- ~6 n2 |! m- f, w: D( Z- Q- z
第一次释放临时实体时,执行的是releaseitem(rank(current,1),1);一旦命令被执行,货架将调用运输工具,运输工具先执行travel命令,行进到当前货架。也就是说,此时虽然releaseitem已被执行,但是flowitem尚未被运输工具取走,并未离开货架,此时货架仍有2个临时实体。在第二次执行releaseitem时,应写为releaseitem(rank(current,2),1);' j& T0 ?' B. p4 Y" ?( G& ]/ B

: H/ L4 g! W. N) Z" b- d+ g& S
$ @3 a0 ?, @4 ]3 u# P7 w, ~3.在上述代码中,第二参数输出端口均未省略。因为在“发送至端口”中设置的是“不释放临时实体”,也就是说,临时实体如果要离开货架,将无法从此段代码中获取输出端口号,因此必须指定输出端口。可以尝试着删除第二参数,看看模型运行效果。
" |& V! D2 E' ^& ?+ {$ P# g, d8 Q& B) q7 `) i7 U, ^3 m. e, H. A
/ R6 F  m% |7 O. c' W) i7 V
案例2:
$ O3 ?8 s/ W$ v& j3 l# z+ r
假设货架上现有10个临时实体,并且仍在不断补充新的临时实体。
' M- e# X) W! Z$ S: Z/ Q下游实体发送请求,需要5个临时实体。货架调用运输工具,已经发送了3个。
* K  M# p$ f7 w( a/ p/ f现在下游实体发送了新的请求,需要3个临时实体。此时货架应释放哪几个临时实体?如何实现?
作者: 李锋    时间: 2022-2-28 13:16
请问,不使用运输工具这种情况在哪里编写代码呢?




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