[i=s] 本帖最后由 zorsite 于 2015-8-15 22:51 编辑 [/i]
[b] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=16441&ptid=5045]4#[/url] [i]大摸鱼[/i] [/b][quote]这个题目其实不难,在论坛里边已经有朋友做过类似的模型,大家在学习的时候不妨多用用搜索功能:)
[url=http://www.flexsim.asia/viewthread.php?tid=3815&highlight=%BC%D3%B9%A4]http://www.flexsim.asia/viewthread.php?tid=3815&highlight=%BC%D3%B9%A4[/url]
[size=2][color=#999999]大摸鱼 发表于 2015-5-7 19:36[/color] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=16441&ptid=5045]http://www.flexsim.asia/images/common/back.gif[/url][/size][/quote]这个贴子只做了返工,并没有设置返工件优先加工。
更早的一个贴子设置了返工件优先加工,但是在逻辑上有一些错误。
贴子在此:[url=http://www.flexsim.asia/viewthread.php?tid=161&]http://www.flexsim.asia/viewthread.php?tid=161&[/url];highlight=%B7%B5%B9%A4
今天有空,我也试了一下这个模型,核心思路如下:
1·两次加工时间不同,可以通过给临时实体增加“是否返工”标签来解决。
if (获取临时实体标签值==返工)then 加工时间=uniform(120,130)
else 加工时间=uniform(100,120)[code]if (getlabelnum(item, "是否返工")==1)
return uniform(120,130);
else
return uniform(100,120);[/code]2·检测台发送端口按百分比设置,设置好之后添加一小段代码:[code]colorarray(item,15); //设置返工产品为白色以便观察
setlabelnum(item,"是否返工",1); //设置返工产品标签值为1[/code]3·给第一暂存区也增加一个标签,用于记录暂存区当前一共有几个返工产品。
暂存区的进入触发加入以下代码:
if 进入的临时实体是返工产品 then
{标签值+1
设置当前临时实体的序号为暂存区的返工产品数量}[code]if(getlabelnum(item,"是否返工")==1)
{
treenode thenode = label(current, "返工产品数量");
double value = 1;
inc(thenode,value);
setrank(item,getlabelnum(current,"返工产品数量"));
}[/code]暂存区的离开促发也需要写入代码,主要是返工产品离开后要把标签值-1,从而正确计算暂存区当前有几个返工产品[code]if(getlabelnum(item,"是否返工")==1)
setlabelnum(current,"返工产品数量",getlabelnum(current,"返工产品数量")-1);
}[/code]布局:
1.自己设置发生器的到达时间、创建触发中设置临时实体的类型、颜色。
2.第一暂存区
>自己设置发送端口
>进入触发
>离开触发
>为第一暂存区增加标签,并勾选“自动重置标签”
3.前4台处理器的加工时间
4.设置检测台的输出端口,按百分比输出。设置完成之后进入代码编辑窗口,手工输入两行代码,改变返工产品的颜色和标签值。
5.模型如下:
|