全球FlexSim系统仿真中文论坛

标题: 【TFT 2015.02.04 FlexSim仿真模型题(32)】 [打印本页]

作者: 慧娴亚伦    时间: 2015-2-4 09:20
标题: 【TFT 2015.02.04 FlexSim仿真模型题(32)】
问题描述:本题来源于早前FlexSim官方群一位朋友的疑问。堆垛机和货架是FlexSim物流仓库仿真中非常重要的实体,默认的代码实现的效果有时候与实际有一定的差距,处理好这部分的仿真对仓储仿真的实现有很大的帮助。


模型要求:
1、附件中有本题7.1模型的原始布局,使用其他版本请也按照附件中的模型进行布局和设置,以方便审核和对比;
2、发生间隔一段时间产生实体进入货架,由堆垛机取出,堆垛机每次取出2个产品,一次性放置到暂存区内;
3、如果可能请进一步让产品在堆垛机货叉上放置位置更符合实际,本要求作为加分项。


提示:1堆垛机每次取出2个产品,不一定是同一个货格内的,可以前往不同的货格一共取出2个产品即可;
      2注意堆垛机卸货时必须符合现实逻辑,否则不算完成试题要求。
作者: FFFrenk    时间: 2015-2-4 10:45
请审核!
作者: wing8403    时间: 2015-2-4 12:09
[b] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=15577&ptid=4962]1#[/url] [i]慧娴亚伦[/i] [/b]
作者: wing8403    时间: 2015-2-4 12:10
第三个要求做不到 求解决
作者: 慧娴亚伦    时间: 2015-2-4 13:16
第三个要求只是加分项,没有做到并不影响回复的有效性。
作者: logan    时间: 2015-2-4 13:46
请指教
作者: 德古拉    时间: 2015-2-4 15:12
[attach]2452[/attach]
作者: east0593    时间: 2015-2-6 12:27
由于家中有变故,没能及时参加活动
能想到的和大家基本都一样

在何工的帮助下,改进了一下模型~~~
作者: someone    时间: 2015-2-9 19:45
加分项,如果采用二次开发的方式,就很容易。
[attach]2463[/attach]
作者: 慧娴亚伦    时间: 2015-2-10 15:36
回复2楼:
      很好地完成了模型的前两个要求,主要在堆垛机的装载和卸载触发编写代码,判断装载的状态并改变任务的顺序,以此来改变装载的方式,并在卸载触发中将多余的任务删去,来实现题目要求的效果。
      
恭喜您!论坛ID为 FFFrenk 的朋友在第二层的回复是第一个有效回复,获得积分5分。
24小时后本题结束(即2015年02月11日15时37分),其后的回复不计为有效回复。
作者: 慧娴亚伦    时间: 2015-2-10 15:53
回复3楼:
      完成了模型的前两个要求,主要是在卸载时进行一个移动临时实体和对任务的控制。但是模型有一个比较重要的问题存在,即如果在仅卸载一个产品的过程中途(比如快要卸载但还未卸载时),如果又出现新的卸载任务,该卸载任务会被误删。将卸载判断的条件>0改为>1可以解决这个问题,此外建议rank(variables(current),51)可以使用更简便的getvarnum()来完成。

恭喜您!论坛ID为 wing8403 的朋友在第三层的回复是第二个有效回复,获得积分4分。
作者: 慧娴亚伦    时间: 2015-2-10 15:58
回复6楼:
     完成了模型的前两个要求,方法跟前3楼的类似,在此不再赘述。

恭喜您!论坛ID为 logan 的朋友在第六层的回复是第三个有效回复,获得积分1分。
作者: 慧娴亚伦    时间: 2015-2-10 16:00
回复7楼:
     完成了模型的前两个要求,方法跟前3、6楼的类似,在此不再赘述。

恭喜您!论坛ID为 德古拉 的朋友在第七层的回复是第四个有效回复,获得积分1分。
作者: 慧娴亚伦    时间: 2015-2-10 16:08
回复8楼:
      很好地完成了模型的要求,前面两个要求的控制与前面的类似不再赘述,完成要求3是通过堆垛机装载的时候改变实体的图形因子的偏移来完成的,完成的非常巧妙!
      
恭喜您!论坛ID为 east0593 的朋友在第八层的回复是第五个有效回复,获得积分1分,同时完成了加分项的要求,额外奖励3分。
作者: 慧娴亚伦    时间: 2015-2-10 16:13
回复9楼:
      感谢分享视频,视频中还实现了从同一个货格一次性取出两个产品。但是不是很理解这个二次开发的方法。希望能进一步分享模型 :-D
作者: 慧娴亚伦    时间: 2015-2-18 15:14
本次TFT活动已经截止。
      本次活动是TFT的第三十二次正式活动。货架和堆垛机的配合是未来常用的自动化立体仓库的基本单元架构,随着相应设备的定制化程度增加,对于这部分的仿真的要求也在逐渐提高,而flexsim中的堆垛机是一个特别值得深入研究应用的实体,对物流系统的仿真工作有重要作用。

本次题目一共有5位朋友获得了活动积分。他们的论坛ID分别是:
     FFFrenk、wing8403、logan、德古拉 、east0593
      他们将获得指定积分,没有获得积分的朋友期待您的下次参与.

本次试题的要求是涉及到任务执行器针对一次性搬运多个实体产生任务以及执行任务的方式,完成试题的主要要求的关键在于如何修改或者移除我们不需要他进行的偏移或者行进任务。下面放上我个人制作的参考模型,实现一次性放两个实体的方式跟大家思路类似,代码有一点区别。为了让两个实体在堆垛机搬运过程中的位置更合理,运用了custom draw来绑定产品的位置,并非最佳答案,仅供参考。
      首先祝各位新春快乐,由于已经休假在家,没有网络拖到今天公布答案,非常抱歉!再次感谢大家的参与和支持,没有参与者活动将无法开展,希望各位还能继续支持TFT的羊年的活动,再次感谢!
作者: wing8403    时间: 2015-2-22 21:13
9楼是位神啊
作者: 小王子波    时间: 2015-3-24 20:44
我是来学习的
作者: 小王子波    时间: 2015-3-25 20:35
完成了,受教了,各位大师
作者: xinzx    时间: 2015-3-25 20:47
学习中,,很有帮助啊
作者: 657776724    时间: 2015-7-13 11:22
不使用moveobject函数,使用子任务序列和修改偏移方式的方法做了一个。[attach]2685[/attach]
顺便想请教二个问题:
1、为什么在这里不能直接使用setloc命令呢?
2、setloc设置的坐标位置的基准是什么呢?是以空间坐标为基准还是以固定资源实体所在的坐标点为基准呢?
作者: 慧娴亚伦    时间: 2015-7-13 11:44
回复21楼:
     完成了题目的要求,使用的是重新编辑搬运任务,同时在其中使用子任务调用的方法,根据容量来判断是否使用运输偏移,想法有创新点,也没有进一步改动任务内容,避免了可能的事件出错。
同时回复这两个问题:
1、在这里不能使用setloc的命令是因为堆垛机在装载的过程中,系统默认绑定了它的位置;
2、基准是其父实体坐标系。
作者: 657776724    时间: 2015-7-13 14:43
[b] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=17338&ptid=4962]22#[/url] [i]慧娴亚伦[/i] [/b]

好的,谢谢楼主
作者: 1010265352    时间: 2015-8-13 20:35
我也是来学习的
作者: 1010265352    时间: 2015-8-13 20:36
:)
作者: 李晓娟    时间: 2015-8-27 08:35
:)
作者: yuzhu    时间: 2015-12-17 14:33
表示很有帮助
作者: Kimver    时间: 2016-3-26 15:03
这题真难,对任务的控制还不是很了解
作者: 懒羊羊2928    时间: 2016-4-1 09:45
学习中
作者: 慧娴亚伦    时间: 2016-4-1 13:34
回复 29 楼:
完成了模型的要求,如想要获得建议,请尽量尝试简述完成模型的思路。
懒羊羊2928 的思路比较特别,通过指定装载两次,而卸载一次(卸载的时候将无卸载任务的item直接move到目的地)的方式来实现,想法很有借鉴意义,不过灵活性上欠佳。特别值得一提的是使用了setframe来完成item在堆垛机上正确的装载位置,这个思路非常好。
此外,可以看到对于代码的编写有一定的基础,但是有很多不好的代码习惯,对于flexsim来说,建模师之间的互相交流是非常重要的,因此在学习早期建立一个优秀的代码编辑习惯非常重要,在此基础上,个人提几个简单的建议,供您参考:
1、堆垛机装载触发里面对标签的实体引用没有太大的意义,直接在inc()命令中使用label()代码的易读性更佳;
2、同样在堆垛机装载触发,没必要一个!=判断后面又跟一个==判断,直接使用if{}else{}即可;
3、重置触发里面重置标签可以通过标签选项卡的“自动重置”来完成;
4、堆垛机卸载触发里面,rank(current,1)不如直接写first(current),另外循环的标识使用tt也不利于代码阅读。

最后多一句嘴,由于TFT活动已经结束一段时间了,请新上传的模型务必注明模型的版本。
作者: 懒羊羊2928    时间: 2016-4-4 14:00
[b] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=20073&ptid=4962]30#[/url] [i]慧娴亚伦[/i] [/b]


回复好详细啊,受益匪浅~非常感谢:loveliness:
作者: 小王子波    时间: 2017-2-1 20:13
不够精细
作者: zorsite    时间: 2017-5-23 01:59
[b] [url=http://flexsimasia.com/redirect.php?goto=findpost&pid=15577&ptid=4962]1#[/url] [i]慧娴亚伦[/i] [/b]
[quote]2、发生间隔一段时间产生实体进入货架,由堆垛机取出,堆垛机每次取出2个产品,一次性放置到暂存区内;
提示:1堆垛机每次取出2个产品,不一定是同一个货格内的,可以前往不同的货格一共取出2个产品即可;[/quote]
如果仓库采用先进先出的策略,存在这么一种可能:需要取的货物放置在货位靠里面的位置。这种情形下,堆垛机取货时需要将该货位里面的货物取出而不取外面的货物。我不知道现在是否有堆垛机可以实现这样取货。
我觉得正常情况下如果同一货位放置多个货物的话,出货时应该是这样:1、先将该货位所有货物取出2、在分拣区将需要的货物取出3、将剩余货物入库4、如果要严格遵循“先进先出”的话,剩余部分货物的入库时间应该按第一次入库计算。(这可能需要另想办法来实现)假如是题目中所说的情况,同一货位只放置内外两个货物的话(并且两个货物相互独立,并不在同一托盘或容器之中),如果要取的两个货物刚好都是在外面的,那直接取出即可。如果要取的两个货物有一个放置在里面,那就需要使用上述的出货策略。
作者: 慧娴亚伦    时间: 2017-5-23 02:07
[b] [url=http://www.flexsimasia.com/redirect.php?goto=findpost&pid=22792&ptid=4962]33#[/url] [i]zorsite[/i] [/b]


题目总是实际应用的简化:lol
作者: gaoshanliushui    时间: 2017-10-26 23:35
学习




欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/) Powered by Discuz! X3.3