全球FlexSim系统仿真中文论坛

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

作者: 慧娴亚伦    时间: 2014-7-15 09:35
标题: 【TFT 2014.07.15 FlexSim仿真模型题(13)】
问题描述:在某些生产物流系统中,有需要批量补料的情况,批量补料有时需要机械与人工配合补料,不仅体现在上料过程中。有时机械批量运作能力大,而需要补料的数量是可以人工完成的时候,就需要在仿真中进行此类配合建模。


模型要求:
1、附件中有本题7.1的原始布局,使用其他版本请也按照附件中的模型进行布局,以方便审核和对比;
2、发生器一次性发出100件产品到货架中存放(原题布局中已经设置好);
3、叉车一次性可以搬运5个产品,操作员一次性只能搬运1个产品;
4、下游暂存区的容量是一个变量,可以自由改变,其搬运原则举例如下:
如果下游暂存区容量为12,则由叉车搬运2次(共10个),再由操作员搬运剩下的2个产品;
如果下游暂存区容量为15,则由叉车搬运3次(共15个),操作员不进行搬运任务;
以此类推。



提示:1 可以添加任何您认为需要的实体;
      2 任务分配器也许有帮助。
作者: manaijin    时间: 2014-7-15 09:44
学习中
作者: caoguangqiu    时间: 2014-7-15 10:18
学习中。。。
作者: CPF2000    时间: 2014-7-15 11:15
顶一个
作者: CPF2000    时间: 2014-7-15 11:15
顶一个       .....................
作者: yushaozheng1990    时间: 2014-7-15 11:38
[b] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=13137&ptid=4614]1#[/url] [i]慧娴亚伦[/i] [/b]在家里做的,版本是7.0.4.利用全局表值控制暂存区容量。通过开闭端口和发消息来控制分配器的任务分配。等待楼主点评。[attach]2072[/attach]
作者: east0593    时间: 2014-7-15 13:50
[b] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=13148&ptid=4614]6#[/url] [i]yushaozheng1990[/i] [/b]


您是不是天天就看着这个帖子啊?呵呵,太快了!
作者: east0593    时间: 2014-7-15 14:47
先做了一个,思路和6楼一样!
增加了初始数量小于5的情况!
我再研究研究能不能叉车和人一同行动!
作者: yushaozheng1990    时间: 2014-7-15 15:20
楼主发题的时候会通知大家,也不用看着啊
作者: yushaozheng1990    时间: 2014-7-15 15:22
[b] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=13156&ptid=4614]8#[/url] [i]east0593[/i] [/b]个人认为本题是小批量增补大批量配合搬运,因此小于五的情况感觉不符合本题的背景
作者: east0593    时间: 2014-7-15 21:53
制作了一个新的,在Reset时,判断叉车和人各需要搬运几回。然后各自达到搬运次数即关闭端口
作者: 慧娴亚伦    时间: 2014-7-16 10:01
回复6楼:
     完成的很好,通过发消息来控制哪个任务执行器来进行搬运任务。目前的模型只能实现一个批次搬运的效果,如果下游是一个处理器,暂存区的容量并不是一个固定的值,而是有一定的宽裕,补货呈现是增补的状态的情况如何满足要求,如果愿意可以进行深入的考虑。

恭喜您!论坛ID为 yushaozheng1990 的朋友在第六层的回复是第一个有效回复,获得积分5分。
24小时后本题结束(即2014年7月17日10时00分),其后的回复不计为有效回复。
作者: 慧娴亚伦    时间: 2014-7-16 10:06
回复11楼:
        完成的很好,通过任务执行器每次装载结合全局表内计数的方式来控制任务执行,还可以使两个任务执行器同时执行任务,方法非常巧妙,但是要注意的是在实际生产中,机械和人同一路线作业要常考虑到安全的问题。其次给您的意见如同12楼,此外您既然是一个变动的全局表,我的建议是原始的第一列可以不改变,可以增加一个第二列来表示目前搬运任务完成的情况,这样有对比比较明晰。

恭喜您!论坛ID为 east0593 的朋友在第十一层的回复是第二个有效回复,获得积分4分。
作者: east0593    时间: 2014-7-16 19:17
按照楼主的意见,重新做了个模型。
在后续增加了个处理器,处理完的实体在送回货架,形成循环。

由于不清楚flexsim的“时钟触发”功能,自己用一对发生器和吸收器形成时钟。
发生器每秒产生1个实体,吸收器每接收200个实体发出一条消息(每隔200s发消息)

这样,系统就可以每隔200s检测一次暂存器容量和上限之差,根据结果给叉车和操作员分配任务。
作者: 1010265352    时间: 2014-7-16 21:47
学习一下
作者: CPF2000    时间: 2014-7-16 22:46
学习 学习
作者: east0593    时间: 2014-7-17 08:48
我觉得这种靠开闭输入端口来控制的方式特别低端!
肯定有更好的方法!
如果有3个货架同时,用这个叉车和操作员进行搬运,而且搬运规则相同的话,这种方式就有局限性了!
作者: 慧娴亚伦    时间: 2014-7-17 09:24
回复14楼:
        运行模型现实了不同批次的多次搬运任务,不过由于涉及触发和代码比较多,也没有任何注解,因此无法从代码上提出更多意见。另外靠开闭端口控制有一定弊端,但不能说是低端,只要能现实效果我的建议还是使用最简单的方法。感谢分享,额外奖励积分2分。
作者: 慧娴亚伦    时间: 2014-7-17 09:59
本次TFT活动已经截止。
     本次活动是TFT的第十三次正式活动,本次题目主要想让大家更多的了解执行运输任务的机制,在目前国内的实际系统中,很多时候都是采取机械和人工相配合的方式,如何更加灵活地对仿真系统进行模拟是FlexSim建模工程师需要认真考虑的一点。此外还要老生常谈一下代码的易读性,当我们建模掌握到一定程度的时候,一段复杂的代码推荐大家还是要整理清楚,并添加适当注解,以免以后连自己使用的时候都要重新理解。

本次题目一共有2位朋友得到了有效回复。他们的论坛ID分别是:
      yushaozheng1990、east0593
      他们将获得指定积分,没有获得积分的朋友期待您的下次参与.
      
      下面放上我个人制作的参考模型,并非最佳答案,我主要是考虑到一批运输之后可能出现的,全批次结束之后再重新搬运的情况,没有做太多接口,仅供参考。(此外原始制作的时候用的是7.0版本,实体可能有些色差)
      感谢大家的参与和支持,没有参与者活动将无法开展,另外本次活动回复的朋友很多,但是上传模型的朋友数量有限。自己思考过无论是否完成都是很有帮助的,同时上传模型,大家也会看到您建模方面是否存在一些问题,在学习flexsim的过程中可以少走很多弯路。希望更多朋友能继续支持TFT的接下来的活动,再次感谢!
作者: 蓬莱仙    时间: 2014-7-18 17:04
学习学习
作者: FFFrenk    时间: 2014-8-1 09:55
学习学习
作者: FFFrenk    时间: 2014-8-1 09:56
学习学习
作者: FFFrenk    时间: 2014-8-1 14:01
sssssssssssss
作者: xinglei    时间: 2014-11-18 16:46

作者: 1010265352    时间: 2014-11-22 12:01
学习一下
作者: xinglei    时间: 2014-11-24 17:48
:lol
作者: 657776724    时间: 2015-6-4 12:31
使用了改变最大容量为5的倍数,剩下的容量由任务序列进行补充。
代码在暂存区里。
原始的数量记录在暂存区的标签里。
[attach]2644[/attach]
作者: 657776724    时间: 2015-6-4 12:34
又做了一个,使用了任务分配器。但是任务分配器只储存任务,不分配任务,分配任务由手工进行。
代码写在任务分配器的消息触发里。
这个方法可以一起运动。
[attach]2645[/attach]
作者: 657776724    时间: 2015-6-4 12:40
看了一下楼主的模型,只通过简单开关端口就能完成,真厉害!
我怎么就想不到。。。。。。
作者: shiningcz    时间: 2015-6-5 16:06
思路差不多,通过任务分配器计算叉车和人各自搬运的数量。
作者: 慧娴亚伦    时间: 2015-6-6 13:11
回复28楼:
    对容量进行了判断,并使用了movetasksequence这个命令来根据条件给不同的任务执行器分配任务,想法很有新意,而且使得操作员和叉车可以同时进行搬运工作。不过考虑到本题仿真的现实情况是,操作员补充搬运小批量,而叉车负责搬运大批量,如果下游处在一种持续消耗的状态,您的这个模型是否还适用呢?这是我建议您可以进一步拓展的方向。
作者: 慧娴亚伦    时间: 2015-6-6 14:08
回复30楼:
      主要代码是写在分配器的pass to里面,通过标签进行记数,来判定选取哪一个任务执行器完成任务。可以改进的地方同31楼的回复,实际上是先分配操作员补充的搬运任务,在实际运用过程中,下游很可能是一种不定时持续消耗的状态,此时本模型的方式可能就不够合理了。另外,暂存区累积到一定数量再发送可以使用批次功能并勾选批次之间清空来实现。
作者: yuzhu    时间: 2015-11-21 16:39
赞!
作者: Kimver    时间: 2016-4-16 22:35
在暂存区用标签记录未分配任务的数量,在分配器中判断该标签值以分配任务
作者: 慧娴亚伦    时间: 2016-4-17 16:07
回复 34 楼:
      运用分配器一次性将指定任务分配完成是一个比较简单直接的思路,代码上有一些处理还不够完整,特别进行相应修改上传一个代码较为规范的模型,有需要可以下载参考。
      可以进一步延伸考虑,如果模型还需要进一步的时候处理,这个办法是否就没那么好使了呢?
作者: Kimver    时间: 2016-4-19 11:44
回复35楼:
      多谢对我的代码作了规范,另外看来一下参考答案,延伸性确实会好很多,学习了。
作者: 49539279    时间: 2016-4-19 16:39
是个学习的好题目
作者: gaoshanliushui    时间: 2017-10-21 12:43
好案例




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