全球FlexSim系统仿真中文论坛

搜索
查看: 5148|回复: 1
打印 上一主题 下一主题

releaseitem命令简介

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2017-5-13 12:11:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zorsite 于 2017-5-13 12:25 编辑 7 d1 U4 z2 D( ~7 i' }- J" k
. z: V" v  I) \
releaseitem(obj flowitem [, num port ])
# w( Z" I! w) A: u
释放指定的临时实体。
, \' q) x. _9 q( ]releaseitem命令仅用于以下两种情况;
3 F* ]! F9 q2 e( y$ N7 @1.临时实体在基础固定实体(BasicFR)之中并且尚未被释放。' P. ^+ o1 A8 ]( c: U6 ~+ F* ~
2.临时实体在任意固定实体之中,并被holditem命令控制。" l/ @4 c$ b! f( D6 \
第二参数为可选参数,用于指定临时实体的输出端口。如果指定此参数,临时实体被释放时直接由指定端口离开,并不激活“发送至端口”(Send to Port)触发。如果省略该参数,将由“Send to Port”来确定输出端口。
6 v& P- H8 O; s% X8 j5 ^5 O5 z- I本命令执行后将返回一个整数。如果第一参数中指定的临时实体存在,命令执行后将返回1,否则返回0.9 G3 X8 T$ C' Z) M6 {

" t* @7 U* \* C/ \8 ?# O, X/ d
命令示范:
4 R8 f% x2 M, z. T6 ]4 {5 f
releaseitem(item);
% r6 Q4 ?9 g) Xreleaseitem(rank(current,1),1);
# K& P2 _$ b5 I$ greleaseitem(last(current),getitemtype(item));
  b- W  O2 `- z' P( _& l% U& R! A( y( D6 X8 m8 m
实际使用中发现,如果要释放的临时实体不存在,程序将报错。' p% }" y2 B' J3 a: k; V2 |1 J) l5 i
使用该命令时需要注意,确保第一参数flowitem指向正确。
) ^; Y5 e. E6 t) e+ {
: K9 ?9 Z. c  D5 o9 F$ o( C7 U* }' p
- `! Z6 }& b2 f" \2 b/ d
案例1:
& H0 T1 h5 U+ Q3 q
使用releaseitem命令释放货架中的2个临时实体,在货架的“发送至端口”中设置“不释放临时实体”(Do Not Release Item)。
' Q- I: F) ]. A: A' N1.如果命令执行时货架中没有2个临时实体,程序将报错。
) D* Z) e- [3 s& O9 c7 a8 D
$ E+ j/ I" g) |3 n0 x2.假设货架存在2个临时实体。9 t& Z5 J- z2 h- [! K+ g$ K$ I. K
0 U/ \; ?4 X6 x
* Y- y; A4 t3 T, t( @
(1)不使用运输工具。
# O& Z3 E! W. K5 }, K第一次释放临时实体时,执行的是releaseitem(rank(current,1),1)。一旦命令被执行,第一个临时实体将立刻离开货架,此时货架剩下1个临时实体。在第二次执行releaseitem时,第一参数该如何写?是releaseitem(rank(current,1),1);还是releaseitem(rank(current,2),1);?
3 A' `7 t& w, e: B第一个临时实体离开后,原来的第二个临时实体现在变成了第一个。如果要释放原来排序为2的临时实体,仍然要使用releaseitem(rank(current,1),1);
$ Y/ a* |2 @$ |8 f
. V# Q. l& o" E# m& |9 u1 g6 |' M, C3 B# ^+ ]$ p% w# T: _2 M
(2)使用运输工具。; l) A3 j  y/ o# Y, K$ N
第一次释放临时实体时,执行的是releaseitem(rank(current,1),1);一旦命令被执行,货架将调用运输工具,运输工具先执行travel命令,行进到当前货架。也就是说,此时虽然releaseitem已被执行,但是flowitem尚未被运输工具取走,并未离开货架,此时货架仍有2个临时实体。在第二次执行releaseitem时,应写为releaseitem(rank(current,2),1);
/ _2 `6 w" m2 I3 D* G- i/ _, X8 s! Z5 C3 {6 W) t0 p8 H

6 C# ]- U& N; `7 ^3.在上述代码中,第二参数输出端口均未省略。因为在“发送至端口”中设置的是“不释放临时实体”,也就是说,临时实体如果要离开货架,将无法从此段代码中获取输出端口号,因此必须指定输出端口。可以尝试着删除第二参数,看看模型运行效果。& q2 q! u: i) k: W# h- G# O
( r4 L, H4 [9 P* B( z9 |7 G  u

! g3 w1 M4 C- j/ B案例2:0 L- h/ R( F$ h1 }. T0 b
假设货架上现有10个临时实体,并且仍在不断补充新的临时实体。
; ]  u; g. t. K, g  `下游实体发送请求,需要5个临时实体。货架调用运输工具,已经发送了3个。
" ^5 l3 Y. v) A9 U现在下游实体发送了新的请求,需要3个临时实体。此时货架应释放哪几个临时实体?如何实现?
2#
李锋 发表于 2022-2-28 13:16:04 | 只看该作者
请问,不使用运输工具这种情况在哪里编写代码呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|全球FlexSim系统仿真中文论坛 ( 京ICP备14043114号-2 )

GMT+8, 2025-8-31 02:44 , Processed in 0.082021 second(s), 13 queries .

Powered by Discuz! X3.3© 2001-2013 Comsenz Inc.

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