全球FlexSim系统仿真中文论坛

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

releaseitem命令简介

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2017-5-13 12:11:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zorsite 于 2017-5-13 12:25 编辑
. v1 S5 k1 n# v  i. |7 g1 c+ n: r/ R5 K3 r; r
releaseitem(obj flowitem [, num port ]), `. {! I2 G, {5 Y; j" e+ w
释放指定的临时实体。) H8 Z- S2 l" z  n2 N: d
releaseitem命令仅用于以下两种情况;4 W! f6 v  W5 E& f5 c/ P6 n- d7 S
1.临时实体在基础固定实体(BasicFR)之中并且尚未被释放。
6 w  u# `- ]2 E2 n9 \2.临时实体在任意固定实体之中,并被holditem命令控制。: D; e) k8 A8 C$ Q7 Z
第二参数为可选参数,用于指定临时实体的输出端口。如果指定此参数,临时实体被释放时直接由指定端口离开,并不激活“发送至端口”(Send to Port)触发。如果省略该参数,将由“Send to Port”来确定输出端口。
4 v# `% p3 ^  i$ `本命令执行后将返回一个整数。如果第一参数中指定的临时实体存在,命令执行后将返回1,否则返回0.: ?: S% f  L+ E0 x- L5 M
3 h& H) l+ ^. c
命令示范:' H+ `7 S' G9 p+ C8 ~# v3 y- c
releaseitem(item);* d$ o1 z1 G# A/ c
releaseitem(rank(current,1),1);
$ P: V3 a( m; C0 L) f6 o. `releaseitem(last(current),getitemtype(item));
5 e4 j# i2 s) F8 P) R, e
9 L0 ~% k/ v+ Q% A  g/ e实际使用中发现,如果要释放的临时实体不存在,程序将报错。  V8 g: Y( }& W& A; q
使用该命令时需要注意,确保第一参数flowitem指向正确。% o+ t9 `( N3 ^( n

. p/ p- \. p6 f+ e8 J+ f/ \

) ]9 L. ^9 X# L" B* r& h2 ]$ E% I案例1:
" r: ]) S4 w9 y/ i$ x
使用releaseitem命令释放货架中的2个临时实体,在货架的“发送至端口”中设置“不释放临时实体”(Do Not Release Item)。
% k2 o, Y8 e3 x4 J9 W1.如果命令执行时货架中没有2个临时实体,程序将报错。- W, N. a* }& g9 }% v6 i
5 K+ z: G# B* T
2.假设货架存在2个临时实体。
' ?8 G* l/ m' W, G  Y$ ?. T+ T. d
( \; }" q- B3 C  e
5 M* `# R9 G3 q% G& i9 e, e(1)不使用运输工具。
' J1 q& y  h+ }5 {! X9 W第一次释放临时实体时,执行的是releaseitem(rank(current,1),1)。一旦命令被执行,第一个临时实体将立刻离开货架,此时货架剩下1个临时实体。在第二次执行releaseitem时,第一参数该如何写?是releaseitem(rank(current,1),1);还是releaseitem(rank(current,2),1);?
, W+ p0 k4 N$ Q2 @# C4 r第一个临时实体离开后,原来的第二个临时实体现在变成了第一个。如果要释放原来排序为2的临时实体,仍然要使用releaseitem(rank(current,1),1);
; x3 a* r6 ^. F* J% O: C% d8 I3 B% B7 c( c+ @# _. O; H
; y4 c2 R# m  p* u7 y* e6 z- }
(2)使用运输工具。
4 N! w$ s3 _3 b* }# T# L$ ^, U第一次释放临时实体时,执行的是releaseitem(rank(current,1),1);一旦命令被执行,货架将调用运输工具,运输工具先执行travel命令,行进到当前货架。也就是说,此时虽然releaseitem已被执行,但是flowitem尚未被运输工具取走,并未离开货架,此时货架仍有2个临时实体。在第二次执行releaseitem时,应写为releaseitem(rank(current,2),1);
6 S* P* ]" W4 v0 X  U  L  m+ ]  w* I" r' |' }: P% P3 k

1 h2 r1 l4 Y0 Y) e8 _$ `# d- G" F6 Q; @3.在上述代码中,第二参数输出端口均未省略。因为在“发送至端口”中设置的是“不释放临时实体”,也就是说,临时实体如果要离开货架,将无法从此段代码中获取输出端口号,因此必须指定输出端口。可以尝试着删除第二参数,看看模型运行效果。9 {  m$ h* H: Q6 E- T" S1 r
( {9 Q& z' r4 s9 g+ h
! d  s2 a6 j0 m: R. u& j( l  s* S
案例2:9 q! p$ c" h2 d/ D
假设货架上现有10个临时实体,并且仍在不断补充新的临时实体。0 y# H+ F8 ^1 F7 J1 L( }. }$ M" b/ o
下游实体发送请求,需要5个临时实体。货架调用运输工具,已经发送了3个。3 j2 a1 P& n$ M2 u& q
现在下游实体发送了新的请求,需要3个临时实体。此时货架应释放哪几个临时实体?如何实现?
2#
李锋 发表于 2022-2-28 13:16:04 | 只看该作者
请问,不使用运输工具这种情况在哪里编写代码呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-30 18:01 , Processed in 0.079811 second(s), 13 queries .

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

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