全球FlexSim系统仿真中文论坛

搜索
查看: 14995|回复: 14
打印 上一主题 下一主题

关于叉车工作原理的探讨

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2013-3-26 13:18:52 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 zorsite 于 2013-3-26 13:41 编辑
  \) e, O; m$ |" O" o9 m7 T$ J6 |9 z- R4 N3 h* V5 g4 y
建立以下模型:# p" b0 X0 j( Z; s, L% \
发生器-->上游暂存区-->5个下游暂存区。
7 }- H0 P/ o* u4 Z& s0 G1 C+ _% Z发生器与上游暂存区A连接
4 l0 j; o: H" E& t! I3 @上游暂存区依次与下游5个暂存区A连接
, b$ K7 O7 o# q4 s4 O) I% c# b2 y+ u( s3 O# {

# |2 ]# C  n$ Q2 i1.设置发生器一次性到达100个货物。运行结果如下:
3 ~( O/ `  Z1 a. M+ e, E+ r  q3 t7 u) n# r
因为上游暂存区的输出端口默认为“第一个可用”,所以所有货物都被输出至下游第一个暂存区。
$ l( o, a6 J/ k4 r4 ?) @4 R如果第一个暂存区满,再向第二个暂存区输出。7 M- K# t2 e& Z/ {
% v* z; d- g# g* A
2.添加叉车,设置上游暂存区“使用运输工具”。运行结果如下:
+ X2 A9 \- c# U0 D$ S$ K7 F! H3 f- a) @6 E2 B
叉车每次运输一个,依次运送至下游每一个暂存区。why?
, s3 j( I- U  o$ Q- ^8 }- F( Y此时上游暂存区的输出仍然为“第一个可用端口”,但为什么不像1那样,先把下游的第一个暂存区装满,第一输出端口堵塞,然后再输出到下游的第二个暂存区?叉车是怎样的工作机制?
4 V& a/ }: V+ X. u" A
( n/ M0 v$ P2 t3.设置上游暂存区“成批操作”,目标批量为30,运行结果不变。1 _! p3 H# g. z
% ?5 F$ B( M# r7 R/ ]
4.继续设置叉车容量为30,奇怪的事情发生了!
) w$ p9 Z2 ]! V4 Q
3 e8 m8 F4 G+ _& J" c叉车一次性拾取30个货物(这很正常),但是却从下游的最后一个暂存区开始卸载!what happened?0 u. x0 Q: D0 w4 \

! y; Y: U: V$ I3 U1 Q; k% a5.设置叉车卸载触发:: ?, G" M1 c* W4 T0 n: Y; |
选择第一项:到其他站点卸载之前,将所有以此工作站为目标的临时实体卸载
9 K  j4 O6 m5 b1 Y/ i6 y
3 Z; i4 O7 w: X: W; ?如果不进行此项设置,则叉车装载30个货物之后,依次到下游没一暂存区每次卸载1个货物,轮番在下游5个暂存区进行卸载,直至下游每个暂存区都有30/5=6个货物,此时叉车上所有货物卸载完毕,返回至上游暂存区重新装载,见第4步图。0 e4 Z4 }3 z/ R! ?
8 B2 M/ L* m; }$ `: A# b# E$ d
进行此项设置之后,行进至下游暂存区之后,在每一暂存区一次性卸载6个货物。
, J6 F! V. P, x
% K0 g. t. t% u9 Q8 b' Y; O: K$ L0 \2 C7 U
6.如果想让叉车每次都卸载10个货物,应该从叉车入手呢?还是从货物入手,对货物进行打包?如果不设置上游暂存区成批操作,又希望叉车每次装载30个货物之后再走,又该如何设置?0 C) W) e8 L) ]7 ~2 g7 H

% j% G1 |) d1 |& v3 m( @to be continued...zzZZ

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
15#
Kimver 发表于 2016-4-13 02:57:54 | 只看该作者
我研究了一下, ^2 d3 h1 |9 A# v- r
1、首先,要明确叉车为什么可以一次性装载30个实体,很多人以为,叉车的容量为30就可以了,,其实不然。容量30当然是条件之一,还有一个必要条件是任务序列中必须有break任务(试着把叉车容量保持在30,把任务序列中的break任务删掉,会出现什么情况?结果是,叉车每次只会搬运一个实体)。# M. R# n  W% M$ R' j& a, J) o
2、break任务被执行之后,新的任务会请求叉车去执行,请求被叉车接受之后,前一个还没完成的任务就会放在新任务的后面,等到新的任务完成,再去执行原来的任务。  }' O6 Q7 X  O( c$ r
3、基于第二点举例说明,现在假设该叉车的容量为5,实体到达之后,产生了100个任务在排队,ts1、ts2、ts3、ts4、ts5......ts99、ts100,叉车先去执行ts1,ts1包含5个任务序列(t1,t2,t3(break),t4,t5),当执行到t3时中断了,任务队列中的第一个任务就会请求叉车去执行,也就是ts2发出了被执行的请求,这时叉车还有能力(容量决定能力)去执行,接收了ts2的请求,那么,既然ts1还没执行完,不可能把它销毁的(除非设置了先占值),所以应该把ts1重新放到tasksequence中,等到ts2执行完之后,再去执行ts1,所以现在tasksequence的排序变成了ts1、ts3、ts4、ts5......ts99、ts100。同理,ts2被执行到t3时同样中断,ts3发出了被执行的请求(这时问题来了,为什么先发出请求的是ts3而不是排在tasksequence中的第一个ts1呢?因为被中断的任务需要任务完成一个finish TS来触发),这时tasksequence的排序就变成了ts2、ts1、ts4、ts5......ts99、ts100。以此类推,ts3中断后接收ts4的请求,tasksequence的排序就变成了ts3、ts2、ts1、ts5、ts6......ts99、ts100;ts4中断后接收ts5的请求,tasksequence的排序就变成了ts4、ts3、ts2、ts1、ts6......ts99、ts100。装载完第五个实体(即执行ts5),当执行到t3,中断了,但是拒绝了ts6的请求(因为已经到达5个容量了),这时就会继续完成当前的任务(即ts5),之后就会在逐个去执行tasksequence的剩余任务。# R5 O! }0 o' @9 a
3、所以,我想,这就是为什么会出现叉车从下游的最后一个暂存区开始卸载的原因。
14#
ldl89772962 发表于 2016-4-12 22:26:30 | 只看该作者
长姿势
13#
慧娴亚伦 发表于 2015-12-14 13:24:42 | 只看该作者
哈哈,其实11楼的高手已经告诉大家答案了。这个跟break任务有关。
12#
657776724 发表于 2015-12-12 22:05:31 | 只看该作者
这个帖子不能沉啊,静待高手解密!
11#
xiexiaoch134 发表于 2013-12-24 14:24:21 | 只看该作者
这个与任务序列中的break任务执行有关。
10#
大摸鱼 发表于 2013-12-16 19:49:50 | 只看该作者
9# 慧娴亚伦

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
9#
慧娴亚伦 发表于 2013-12-16 17:23:38 | 只看该作者
我按楼主的方式做了一下模型,发现了这样一个问题:3 W8 O( c! M. D; h, s7 Q+ d2 w
item到达之后就给叉车下达了搬运这个100个item的所有任务,顺序是从ts1到ts100;
  t2 @7 L& R! ~, [6 `  w" ~2 w+ P8 Q但是,当叉车拾取了规定数量的item之后(本例中是10个),就会重新排序任务,而且是倒着排序(但是原来的任务指令不变);
8 y7 v/ }/ u2 R+ s6 Y也就是说,一开始就指定好了ts1去queue1,ts2去queue2……以此类推,ts10去queue5;
$ x3 w/ N/ [! f但是由于重新排序了任务,此时第一个任务就是ts10,第二个任务是ts9,导致结果就是先去queue5,再去queue4……
& J, x) g) O2 \" W9 S至于为什么装载实体之后就会重新排序任务呢?$ r' G: E$ [9 H" M' M
现在我也不懂为什么。。。。( @% h! G, \2 d" |+ L
楼主这个发现真的比较有意思的,感觉确实涉及到了任务执行器工作的某些原理(不仅是叉车,其他任务执行器也会有同样现象)当然希望大家再深入一下,看看能否有更多的发现。
8#
a445608540 发表于 2013-12-16 16:11:16 | 只看该作者
使用代码可以实现,但是还有个问题,怎么设置的是第一个暂存区,结果叉车一直往最后一个运输

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
7#
a445608540 发表于 2013-12-16 14:43:45 | 只看该作者
好像是呀,可以直接在群里问问,看什么原因呀
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-6 12:48 , Processed in 0.067228 second(s), 15 queries .

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

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