全球FlexSim系统仿真中文论坛

标题: 出个题目给感兴趣的朋友做做,或者认为工作中可能会遇到资源调度问题的可以试着做一下 [打印本页]

作者: linweixu168    时间: 2011-9-29 10:54
标题: 出个题目给感兴趣的朋友做做,或者认为工作中可能会遇到资源调度问题的可以试着做一下
我们做模型遇到资源调度问题经常会使用Dispatcher模块,来调度Operator或者Transporter等。大家都知道Dispatcher是分配任务给Operator的,但是现实情况 可能是当Operator空闲了,反过来去Dispatcher找任务。我的意思大家可能都明白了,就是当Operator空闲的时候,反过来主动找Dispatcher里面的任务。具体参数大家可以自己设置,只要能实现上面所说的功能就ok了。
作者: xiexiaoch134    时间: 2011-10-1 12:50
尝试做了一下,不知是否达到要求。[attach]327[/attach]
作者: linweixu168    时间: 2011-10-1 13:27
本帖最后由 linweixu168 于 2011-10-1 13:47 编辑
+ {% G" F" [9 R$ {/ }# I2 W: `+ R3 B  Z* T' q' G+ A& z5 t
2# xiexiaoch134 3 |/ h0 e, R5 m% u1 H

" S) R! M! D/ U" Y看不出来,好像是没有实现要求,这个不是录像能看出来实现不没实现的,最少要说一下思路吧,可以不用传模型。
作者: xiexiaoch134    时间: 2011-10-1 14:34
只是为了展示一下效果。
; ^" o6 ?* E) n% P2 h. S模型思路:模型中有两个dispatch,一个是主动分配任务,一个是由operator来主动获取任务,其中主动分配任务的dispatch与operator是a连接,operator主动获取任务的与dispatch是S连接。+ S* s' Y. E& N! g# ^
operator主动获取任务的方式是:首先由operator中的customdrawcode触发器扫描与它s连接的dispatch,看时候有任务在,如果有任务就锁定这个dispatch,move dispatch中第一条任务,并在operator中触发这条任务,执行完这条任务之后,onresource触发器就会被触发,这时在这个触发器中继续检查锁定的dispatch中是否有任务,如果有就循环move其中的第一条任务,如果没有,就返回customdrawcode,继续扫描与operator有s连接关系的其它dispatch,找到有任务的dipatch,锁定之后按照上面循环执行下来。* x: ]( r3 i8 [9 _/ p
模型中展示的是,两种任务分配方式,模型运行到最后,operator主动获取任务的这一组operator会跑去帮助dispath主动分配任务这一组,完成搬运任务。
作者: linweixu168    时间: 2011-10-1 15:01
4# xiexiaoch134 思路 还可以 。犯了一个严重的错误,也许以后你会知道的。
作者: xiexiaoch134    时间: 2011-10-1 15:30
犯错误是肯定的,我现在做这个模型只是针对这么一个小模型,要运用做其他模型肯定得大修。关键是,你知道我错了,你都不可以指出来吗?或许你可以让我去做一个能体现这个严重错误的模型,这样我就会纠结,然后认识到错误。可否?
作者: linweixu168    时间: 2011-10-1 15:46
本帖最后由 linweixu168 于 2011-10-1 16:02 编辑
& i  T% N1 W! a8 |  n4 C0 u1 S7 b5 N& t
6# xiexiaoch134 & G2 i3 \8 ^# i2 x! e  x
2 o. E3 Z( x) S% w+ _6 w
不用看模型就知道你错了,我不用做什么模型,也用不着比较。不是小模型大模型的问题,你犯了一个大忌。因为你都不把模型贡献出来,所以不想告诉你哪里有问题。(如果在自己的技术还不够成熟的时候,最好不要学别人也搞什么视频,因为你搞的东西可能大家都搞的出来,而且也没涉及企业保密什么,就没必要了,除非你觉得你做的这个东西非常独特,说多了见谅)
作者: warren520    时间: 2011-10-1 16:06
本帖最后由 warren520 于 2011-10-1 16:08 编辑 ' w$ [3 e. r1 r* J: n0 P' N3 H- i

1 f' k+ W# H7 K1 g, M$ S尝试着做了一下楼主的题目,不妥的地方,请轻拍,thanks,1 q" D: K+ y1 K! S
给后面的Flexim User搭个台阶吧,期待更好的模型。
作者: xiexiaoch134    时间: 2011-10-1 16:20
分享一下我的模型,我真不是故意的。[attach]330[/attach]
作者: linweixu168    时间: 2011-10-1 16:31
在“customdrawcode触发器扫描”这个是个大忌讳,customdrawcode里面可以主要是绘图用的,可以做一些无足轻重的逻辑判断,你把主要逻辑判断都写到这里面去了,说明你对仿真机理理解不够透彻。另外,customdrawcode触发器触发是没有规律的,不能设置其触发的次数,理论上说它是不断在触发,当仿真速度加快其触发次数会相应减少,总之其是没规律的,我也建议过flexsim公司的人让其触发有规律,可以有一个设置参数多少秒触发一次,但是flexsim开发员认为,这个触发器只是用来绘图,所以没什么必要。
作者: xiexiaoch134    时间: 2011-10-1 16:43
不了解啊,大侠就是大侠。如果是这样的话,那我就改用message延时来控制好了,多谢指点。
作者: warren520    时间: 2011-10-1 23:49
8# warren520
7 O  J+ h6 }/ \简单说一下模型的思路吧:2 H5 x3 v! N6 J6 b' o! o' N  p
首先当Queue中有临时实体进入时,就会启用Queue的进入触发器,然后判断各个Operator的状态,如果有一个Operator的状态为idle,那么就给它发一个消息,该Operator收到消息后会主动检查Dispatcher中是否有Tasksequence,如果有的话,就请求Dispatcher中Tasksequencequeue的第一个Tasksequence,并开始执行该任务。如果有两个Operator的状态为idle时,就随机选择一个Operator发消息,然后被选择的Operator会执行类似上面的操作。. b1 j) ^+ ?' r2 z* [4 B* r
注:Dispatcher中Pass to中,需要return -1。具体请见帮助文件中的如下说明:
  ?! c- b% k& P- `If 0 is returned, then the task sequence will be queued up using the below mentioned queue strategy, and then will be dispatched to the first available mobile resource. If -1 is returned, then the Dispatcher will do absolutely nothing. In such a case you would use the movetasksequence() and dispatchtasksequence() commands to execute dispatching logic yourself.
2 k0 V) Z  d( \! h此外大家也可以尝试使用createsendmessagetask(),createstandardtask(),以及transfernode()等函数,也可以在Script中写代码进行控制。
作者: linweixu168    时间: 2011-10-2 13:30
本帖最后由 linweixu168 于 2011-10-3 01:26 编辑   K8 |0 `1 K5 l

7 T8 {: ]! ~! n. u7 I9 r 12# warren520
: u, }" l# s- h; M- B# r; V1 J说句实话,你这样做虽然完成我说的功能,但是在进入的就指派了,只不过间接去dispatcher去取任务没有什么意义的,不过你做的东西我还比较认可的,我不用movetasksequence() 也能完成,用我这种方法另外一个好处就是我还顺便借用了dispatcher取任务序列的策略逻辑,一举两得。
; a" V# N6 [) ?2 W  b
: F! B) _0 E' F9 Y. D" N8 C总结一下吧,我觉得两位都做的过于复杂,建模另外一个忌讳就是简单问题复杂化。如果能用简单方法解决的问题,不要搞的太复杂了。(还觉得要用:“此外大家也可以尝试使用createsendmessagetask(),createstandardtask(),以及transfernode()等函数,也可以在Script中写代码进行控制”。这些的更是简单问题复杂化)
作者: xiexiaoch134    时间: 2011-10-2 20:58
学习了,真的很简单,但是就是想不到,对软件还很不熟悉。
作者: warren520    时间: 2011-10-2 22:51
13# linweixu168
. F$ s7 F" l9 @3 Q" ~4 O不错啊,呵呵,楼主果然比较给力哈,的确比我们做得简单多了。楼主果然是经验丰富,做过大项目的就是不一样,不仅函数了解的多,而且做得模型中的代码的可重用性也比较好。还有非常多的东西要学啊,呵呵,感谢指点。
作者: 草果泉    时间: 2011-10-3 20:35
刚休息一段时间回来。看见大家讨论的很不错,只要用对触发时机,进行简单移花接木就好。祝大家国庆节快乐哈
作者: qiush1234    时间: 2011-10-8 11:06
我来学习了!~
作者: kevinguo915    时间: 2011-10-28 17:06
对分配器没用过,LZ能否分享下模型?
作者: maratini    时间: 2012-5-2 08:53
一下又说不用传模型,一下又说别人不愿意分享模型……无语……
作者: flexsimbaobao    时间: 2012-5-3 20:53
15# warren520
4 x) G+ d( ?2 Q4 u2 \  m??搂主改善过的模型在论坛里吗?想学习下
作者: yushaozheng1990    时间: 2013-12-20 13:13
感谢楼主!
作者: 草原一棵树    时间: 2014-12-30 17:12
楼主的思路很给力,谢谢分享,不晓得怎么实现下个模型看看。
作者: 字小典    时间: 2017-5-12 21:22
这个思路完全没有想到呀,可以学习研究一下,还要多努力~




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