全球FlexSim系统仿真中文论坛

搜索
12
返回列表 发新帖
楼主: zorsite
打印 上一主题 下一主题

关于叉车工作原理的探讨

[复制链接]
11#
xiexiaoch134 发表于 2013-12-24 14:24:21 | 只看该作者
这个与任务序列中的break任务执行有关。
12#
657776724 发表于 2015-12-12 22:05:31 | 只看该作者
这个帖子不能沉啊,静待高手解密!
13#
慧娴亚伦 发表于 2015-12-14 13:24:42 | 只看该作者
哈哈,其实11楼的高手已经告诉大家答案了。这个跟break任务有关。
14#
ldl89772962 发表于 2016-4-12 22:26:30 | 只看该作者
长姿势
15#
Kimver 发表于 2016-4-13 02:57:54 | 只看该作者
我研究了一下0 j* D/ W) r5 Q" W$ ?9 o5 R- e! d
1、首先,要明确叉车为什么可以一次性装载30个实体,很多人以为,叉车的容量为30就可以了,,其实不然。容量30当然是条件之一,还有一个必要条件是任务序列中必须有break任务(试着把叉车容量保持在30,把任务序列中的break任务删掉,会出现什么情况?结果是,叉车每次只会搬运一个实体)。
  U$ h; ^. q' ~  q5 @% O2、break任务被执行之后,新的任务会请求叉车去执行,请求被叉车接受之后,前一个还没完成的任务就会放在新任务的后面,等到新的任务完成,再去执行原来的任务。
& H2 Y2 p: a" _7 e3、基于第二点举例说明,现在假设该叉车的容量为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的剩余任务。
* k8 C2 d' t  |7 Y1 u7 Y  z+ i/ ^3、所以,我想,这就是为什么会出现叉车从下游的最后一个暂存区开始卸载的原因。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-30 06:46 , Processed in 0.071866 second(s), 13 queries .

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

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