全球FlexSim系统仿真中文论坛

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

releaseitem命令简介

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2017-5-13 12:11:39 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 zorsite 于 2017-5-13 12:25 编辑 3 z/ A7 C( U/ _/ K
& B9 I6 j/ E6 U, e4 A  h# m- ~
releaseitem(obj flowitem [, num port ])
, E) g5 @/ N# J! m
释放指定的临时实体。
; v4 U. l( O& x9 h& h- P) Kreleaseitem命令仅用于以下两种情况;1 U$ U1 {8 x6 i, z& u  U# N2 B2 P
1.临时实体在基础固定实体(BasicFR)之中并且尚未被释放。
5 H7 j7 w- s6 I0 L7 t! t7 u; V2.临时实体在任意固定实体之中,并被holditem命令控制。' r6 Z% h4 P! x4 q' e  y
第二参数为可选参数,用于指定临时实体的输出端口。如果指定此参数,临时实体被释放时直接由指定端口离开,并不激活“发送至端口”(Send to Port)触发。如果省略该参数,将由“Send to Port”来确定输出端口。
3 ^: I  i9 o. M6 d# ^" ~本命令执行后将返回一个整数。如果第一参数中指定的临时实体存在,命令执行后将返回1,否则返回0.3 D) Q# e2 V. t' ?7 x* y3 ?! c
5 Q9 H" a, |& V4 B5 b+ a7 g; `7 W
命令示范:$ x8 b/ Z0 j5 `& X  Z
releaseitem(item);9 F( h6 Y/ G% a6 x. r* G! F
releaseitem(rank(current,1),1);
5 y& G; ?9 D6 [" P, i6 y" M( x/ x. ?releaseitem(last(current),getitemtype(item));
9 Q# z3 p& ?% ?
( V( [0 T2 y! n) X- i6 u7 Z$ Y实际使用中发现,如果要释放的临时实体不存在,程序将报错。
0 O! C9 a6 O& o+ r) ]0 \. h$ A使用该命令时需要注意,确保第一参数flowitem指向正确。
' K# o# G9 h$ g: Q% V) X3 U1 ]
- _% T, K& L. _- I: O2 K
. f5 f* g" l4 |9 M# W* d
案例1:1 e! H1 ]' A' s) F  f/ u  `9 w. S
使用releaseitem命令释放货架中的2个临时实体,在货架的“发送至端口”中设置“不释放临时实体”(Do Not Release Item)。9 d- J9 W) f& m4 |# c- F3 V  X1 a  H
1.如果命令执行时货架中没有2个临时实体,程序将报错。! T# S* ?; j8 T& ^- e/ X" Y0 z
- p- ]4 m# K0 g& e( [
2.假设货架存在2个临时实体。
6 U: j: T' o) k2 K+ s% g
  c+ ^  P, n+ h9 `6 X) s
3 W3 p8 e  c* ?! @" o. ?, o+ }! J(1)不使用运输工具。
1 m1 p/ V! [$ C; F" U! |% \第一次释放临时实体时,执行的是releaseitem(rank(current,1),1)。一旦命令被执行,第一个临时实体将立刻离开货架,此时货架剩下1个临时实体。在第二次执行releaseitem时,第一参数该如何写?是releaseitem(rank(current,1),1);还是releaseitem(rank(current,2),1);?; x1 A5 ^. ^  j' y! g: S
第一个临时实体离开后,原来的第二个临时实体现在变成了第一个。如果要释放原来排序为2的临时实体,仍然要使用releaseitem(rank(current,1),1);/ b6 H1 Q) O: l/ |

  F8 m, O4 z0 I1 x, V; H  q0 \& F: s/ P' f
(2)使用运输工具。$ P  |  o5 d3 P) f3 z+ G
第一次释放临时实体时,执行的是releaseitem(rank(current,1),1);一旦命令被执行,货架将调用运输工具,运输工具先执行travel命令,行进到当前货架。也就是说,此时虽然releaseitem已被执行,但是flowitem尚未被运输工具取走,并未离开货架,此时货架仍有2个临时实体。在第二次执行releaseitem时,应写为releaseitem(rank(current,2),1);; _. u5 J  ~8 o4 F# T' W" Q8 n

8 Z  {% d8 N2 |1 d1 C
( }- q" s( @' d8 W5 A) e3 K3.在上述代码中,第二参数输出端口均未省略。因为在“发送至端口”中设置的是“不释放临时实体”,也就是说,临时实体如果要离开货架,将无法从此段代码中获取输出端口号,因此必须指定输出端口。可以尝试着删除第二参数,看看模型运行效果。
' d3 P+ h% |5 {4 a6 n0 r
4 A5 ^+ O1 s& A% o/ p: A9 S" C
$ Y! u/ U( |% d5 c0 l8 `. O
案例2:
0 E1 ^2 H/ ?1 T: g$ [/ l( u
假设货架上现有10个临时实体,并且仍在不断补充新的临时实体。" r% j. `7 K6 s, K0 V: v# Z) L
下游实体发送请求,需要5个临时实体。货架调用运输工具,已经发送了3个。
9 J2 k; |8 K( W! u7 Q现在下游实体发送了新的请求,需要3个临时实体。此时货架应释放哪几个临时实体?如何实现?
2#
李锋 发表于 2022-2-28 13:16:04 | 只看该作者
请问,不使用运输工具这种情况在哪里编写代码呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-20 09:19 , Processed in 0.078987 second(s), 14 queries .

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

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