" 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