全球FlexSim系统仿真中文论坛

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

releaseitem命令简介

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2017-5-13 12:11:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zorsite 于 2017-5-13 12:25 编辑 7 V: [- @8 p5 f
( O: n" D7 t. V$ J
releaseitem(obj flowitem [, num port ])
- Q4 f7 w/ V1 l- `7 ?: s
释放指定的临时实体。8 r2 B, K5 l2 \
releaseitem命令仅用于以下两种情况;2 {9 y" E! J1 {
1.临时实体在基础固定实体(BasicFR)之中并且尚未被释放。& `7 ^5 |7 ^4 s; c
2.临时实体在任意固定实体之中,并被holditem命令控制。
4 C9 k& L/ r- e8 R" k, Y第二参数为可选参数,用于指定临时实体的输出端口。如果指定此参数,临时实体被释放时直接由指定端口离开,并不激活“发送至端口”(Send to Port)触发。如果省略该参数,将由“Send to Port”来确定输出端口。
1 \' `/ `9 u! H/ @# t本命令执行后将返回一个整数。如果第一参数中指定的临时实体存在,命令执行后将返回1,否则返回0.5 j) {) K+ p) E0 }2 o

) N$ \, b7 ^7 y# t
命令示范:. Q! P6 }) g9 s4 S# w' A/ R
releaseitem(item);5 Z  f+ t4 j/ L( R3 J/ d, x2 j
releaseitem(rank(current,1),1);
* Y" L# U0 Y" `* c3 t* lreleaseitem(last(current),getitemtype(item));
7 C- ^& ~" l- y& b8 Q( Y
- n" \) o8 l+ s, [实际使用中发现,如果要释放的临时实体不存在,程序将报错。
2 u* b, c: Q& q" c, Y. }使用该命令时需要注意,确保第一参数flowitem指向正确。( d5 R8 |, y. ~) b5 K* r4 X
$ o& Y, f* D3 B% q' u! V6 m

* M$ a" M8 Z$ l' X案例1:
1 E  c7 B( w' E/ M5 t
使用releaseitem命令释放货架中的2个临时实体,在货架的“发送至端口”中设置“不释放临时实体”(Do Not Release Item)。6 A/ j( k1 e2 M; \" W. M. T
1.如果命令执行时货架中没有2个临时实体,程序将报错。% X  O+ X; f. k
  E8 @: t0 k( Z( c, a, o3 P# A3 d
2.假设货架存在2个临时实体。
0 i5 ?/ W3 n# E  C: R- j) i& Y2 ^" N+ @
- B2 M8 R* U+ R) z; x) Y/ {8 H! h% Z/ x. d$ B; n
(1)不使用运输工具。
+ |- d5 x0 M" a+ @# z第一次释放临时实体时,执行的是releaseitem(rank(current,1),1)。一旦命令被执行,第一个临时实体将立刻离开货架,此时货架剩下1个临时实体。在第二次执行releaseitem时,第一参数该如何写?是releaseitem(rank(current,1),1);还是releaseitem(rank(current,2),1);?
6 l1 U* _" E$ N/ p( m7 i' T第一个临时实体离开后,原来的第二个临时实体现在变成了第一个。如果要释放原来排序为2的临时实体,仍然要使用releaseitem(rank(current,1),1);! D0 U/ F2 q$ y0 M8 P$ s
4 R: m. I! r+ J2 u  j' f
* E* u7 m+ |- g2 H
(2)使用运输工具。: Z% Z0 L8 ~* L  \, [3 O  k# ~
第一次释放临时实体时,执行的是releaseitem(rank(current,1),1);一旦命令被执行,货架将调用运输工具,运输工具先执行travel命令,行进到当前货架。也就是说,此时虽然releaseitem已被执行,但是flowitem尚未被运输工具取走,并未离开货架,此时货架仍有2个临时实体。在第二次执行releaseitem时,应写为releaseitem(rank(current,2),1);5 {9 I' D' y9 t. {. I

9 x+ H% D; m: H" s$ `& M$ s# g. y" j/ K% D
3.在上述代码中,第二参数输出端口均未省略。因为在“发送至端口”中设置的是“不释放临时实体”,也就是说,临时实体如果要离开货架,将无法从此段代码中获取输出端口号,因此必须指定输出端口。可以尝试着删除第二参数,看看模型运行效果。: |- `' [3 I, O- B5 R
/ j# O0 `8 q( n- B; S
0 k1 |) E* u8 M
案例2:# {2 n* H5 ^& S( K  N, [% I
假设货架上现有10个临时实体,并且仍在不断补充新的临时实体。
; ?, K6 }2 H! G+ P" W下游实体发送请求,需要5个临时实体。货架调用运输工具,已经发送了3个。
7 E  v! T5 ]6 `- }/ _( P现在下游实体发送了新的请求,需要3个临时实体。此时货架应释放哪几个临时实体?如何实现?
2#
李锋 发表于 2022-2-28 13:16:04 | 只看该作者
请问,不使用运输工具这种情况在哪里编写代码呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-1 21:00 , Processed in 0.078326 second(s), 13 queries .

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

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