全球FlexSim系统仿真中文论坛

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

作者: 慧娴亚伦    时间: 2014-3-25 08:43
标题: 【TFT 2014.03.25 FlexSim仿真模型题(1)】
问题描述:本题来源于官方群内一位爱好者提出的问题。现实系统中,同一个机器加工不同类型产品的时间是不一样的,而同一类型不同的产品的加工时间也不一样。本次题目要实现的就是统计不同类型产品在处理器中加工的时间。


模型要求:
1 附件中有本题7.0的原始布局,使用其他版本请也按照附件中的模型进行布局,以方便审核和对比。
2 类型1的产品在处理器中的加工时间服从normal(10, 3, 0);类型2的产品在处理器中的加工时间服从exponential(10, 3, 0);类型3的产品在处理器中的加工时间服从lognormal2(0, 10, 0.3, 0)。
3 加工完成后的产品进入下游之后,如果其加工时间小于3秒或大于15秒,则为加工时间异常实体,需要被移动至指定暂存区中。

提示:由于本题有多种解决方法,请选择您认为最好的一种,上传完成的模型。
作者: a445608540    时间: 2014-3-25 10:42
不知道是不是这样,那个异常暂存区原题没连,不知道要求的可不可以连
作者: 大摸鱼    时间: 2014-3-25 12:11
第一种连接暂存区,第二种不连暂存区,我是用5.0做的,模型中的暂存区名字没有改,但是能达到楼主的要求
作者: 蓝桥书生    时间: 2014-3-25 12:34
[attach]1751[/attach]
作者: 1010265352    时间: 2014-3-25 14:23
这是我做的,第一次发表的
作者: 1010265352    时间: 2014-3-25 14:23
这是我做的,第一次发表的[attach]1753[/attach]
作者: oxci    时间: 2014-3-25 17:08
发生器离开触发那里添加了加工时间
加工器的加工完成那里添加了异常判断
[attach]1754[/attach]
作者: 慧娴亚伦    时间: 2014-3-25 19:35
回复2楼:


完成的很好,使用的是FlexSim最常用的标签运用方式。

恭喜您!您是第一个完成模型要求的活动参与者。
论坛ID为a445608540的朋友在第二层的回复是有效回复。获得积分5分。
24小时后本题结束(即2014年3月26日19时35分),其后的回复不计为有效回复。
作者: 慧娴亚伦    时间: 2014-3-25 19:49
回复3楼:

完成的很好,同时还额外做不连接异常加工时间的模型,但是在标签的运用上稍显繁琐,不如2楼用得轻巧。

恭喜您!您是第二个完成模型要求的活动参与者。
获得积分4分。
作者: 慧娴亚伦    时间: 2014-3-25 20:01
回复4楼:

模型没有完成需要实现的效果,处理器里面加工时间的代码出现低级错误,上传模型之前并没有认真检查。
无法获得积分。
作者: 慧娴亚伦    时间: 2014-3-25 20:07
回复6楼:

完成的很好,综合了前面两种模型的方法。
不过与4楼一样,需要注意的是addlabel()这个命令可以直接给标签赋初值,不需要再通过setlabelnum来赋值。

恭喜您!您是第三个完成模型要求的活动参与者。
获得积分1分。
作者: 慧娴亚伦    时间: 2014-3-25 20:13
回复7楼:

完成的很好,加工结束的QC标签对于实现最终效果没有什么意义,send to port里面的代码也比较多余。

恭喜您!您是第四个完成模型要求的活动参与者。
获得积分1分。
作者: 王晓峰    时间: 2014-3-25 20:48
标题: RE: 【TFT 2014.03.25 FlexSim仿真模型题(1)】
第一次发表
作者: 慧娴亚伦    时间: 2014-3-25 20:55
[i=s] 本帖最后由 慧娴亚伦 于 2014-3-25 22:57 编辑 [/i]

回复13楼:

代码有误,switch case的使用出错,您可以参考一下前面几位正确完成的模型。
作者: Rosalyn    时间: 2014-3-25 22:59
我怎么没发现13楼的模型报错了
作者: Rosalyn    时间: 2014-3-25 23:39
4楼的方法其实很好,只不过大意了点,写的代码地方越少,越方便以后调试和管理,不建议到处写代码,随意加标签
作者: 慧娴亚伦    时间: 2014-3-26 08:08
回复:15楼

大神来指导啦!我看到的13楼的模型,在switch case之后没有break跳出,导致每个实体的加工时间一直都是0,即default情况给processing time的赋值。
作者: Rosalyn    时间: 2014-3-26 12:41
:L,只注意到功能实现了,还显示了加工时间,没注意用没用break,这个不用break也可以实现,只不过多读了几行代码,目的是为了最后一句return,他的加工时间是对的,还在item上显示了加工时间,我见过周博士以前做的模型,for里面嵌套break,用得很巧妙,可以减少模型负重
作者: Rosalyn    时间: 2014-3-26 12:45
最近有点忙,过段时间传点我们做的仿真视频
作者: 慧娴亚伦    时间: 2014-3-26 20:17
期待楼上大神的仿真视频!
作者: 慧娴亚伦    时间: 2014-3-26 20:17
[i=s] 本帖最后由 慧娴亚伦 于 2014-3-26 21:24 编辑 [/i]

本次TFT活动已经截止。
     由于是第一次的正式活动,为鼓励大家积极参与,因此试题比较简单。考虑到大家基本上都能实现题目的要求,本次活动也不会提供参考答案,有兴趣的朋友可以参考前面的几楼的有效回复。一些朋友的模型错误都是在细节地方没有处理好。这体现出我们在进行flexsim建模的过程中,要通过最后的效果来检验自己的模型以及代码是否正确完成,并不是只要代码不报错模型即为正确的。
     本次题目一共有4位朋友得到了有效回复。他们的论坛ID分别是:
     a445608540、大摸鱼、1010265352、oxci
     他们将获得指定积分,没有获得积分的朋友期待您的下次参与。
     与Beta版一样,在这里给大家一个延伸思考的方向:大家在学习flexsim过程中,是否注意到工具-追踪变量这个功能,其实运用这个功能也可以很灵活的来追踪每一个实体一些变量。
     再次感谢大家的参与和支持,没有参与者活动将无法开展,希望各位还能继续支持TFT的接下来的活动,再次感谢!
作者: yangkaichong    时间: 2014-4-16 18:08
载下来看看!!!
作者: CPF2000    时间: 2014-7-22 08:10
学习了..............
作者: CPF2000    时间: 2014-7-22 08:56
[b] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=12005&ptid=4384]21#[/url] [i]慧娴亚伦[/i] [/b]


demo版“追踪变量”是无法使用 的。
作者: 慧娴亚伦    时间: 2014-7-22 09:11
[b] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=13241&ptid=4384]24#[/url] [i]CPF2000[/i] [/b]


不好意思,没有考虑到这一点。
作者: carol    时间: 2014-8-3 10:37
菜鸟求指点!:loveliness:
1.发生器:setitemtypeandcolor  duniform(1,3)
2.box class:setlabel(name:pstime   value:0)
3.处理器:
(1)process time
int case_val=getitemtype(item)
switch (case_val) {
case1  return normal(10, 3, 0);
case2  return exponential(10, 3, 0);
case3  return lognormal2(0, 10, 0.3, 0);
default  return 1;
}
(2)处理结束时触发
if(getitemtype(item)==1)
setlabelnum(item,"pstime",normal(10,3,0));
else if(getitemtype(item)==2)
setlabelnum(item,"pstime",exponential(10, 3, 0));
else if(getitemtype(item)==3)
setlabelnum(item,"pstime",lognormal2(0, 10, 0.3, 0));
(3)send to port
double value=getlabelnum(item,"pstime")
if(value<3 || value>15)
return 2;
else return 1;
作者: 慧娴亚伦    时间: 2014-8-3 11:17
回复26楼:
       您的模型有一些问题,因为您最终给item添加的加工时间标签的值,并不一定对应item的实际加工时间,只是都服从同一个分布和参数。
作者: carol    时间: 2014-8-5 08:58
[i=s] 本帖最后由 carol 于 2014-8-5 09:01 编辑 [/i]

回复版主::loveliness:
处理器做了一些修改,将“处理结束时触发”删除,"send to port"的判断不变,然后在“process time”那里使用if语句:
double value1 = normal(10, 3, 0);
double value2 = exponential(10, 3, 0);
double value3 = lognormal2(0, 10, 0.3, 0);
if(getitemtype(item)==1)
{
setlabelnum(item,"pstime",value1);
return value1;
}
else if(getitemtype(item)==2)
{
setlabelnum(item,"pstime",value2);
return value2;
}
else if(getitemtype(item)==3)
{
setlabelnum(item,"pstime",value3);
return value3;
}
作者: 慧娴亚伦    时间: 2014-8-5 10:33
回复28楼:
          这样就完成了模型的要求。:)
作者: zorsite    时间: 2014-9-15 14:35
[b] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=11973&ptid=4384]11#[/url] [i]慧娴亚伦[/i] [/b]
给标签赋值,可以直接用addlabel,也可以先addlabel,然后再用setlabelnum。使用addlabel比较直接,代码比较精简。使用setlabelnum按照标签表中的序号给标签赋值,比如setlabelnum(item,2,5.5) 。这里的2指的是item标签列表中的第二个标签。在setlabelnum函数说明中有这么一句话:A rank is a slightly faster reference.是否指的是如果使用标签序号而非标签名称,会稍稍快一点?
作者: 慧娴亚伦    时间: 2014-9-15 21:52
是的,楼上理解的没错。因为flexsim中如果使用字符串格式来寻找指定的节点,会占用稍微多一点的资源,因此会更慢一些,不过只会在大型模型中影响较大,小模型几乎是不影响的。
作者: zorsite    时间: 2014-9-16 08:54
[i=s] 本帖最后由 zorsite 于 2014-9-16 08:55 编辑 [/i]

[quote]回复版主::loveliness:
处理器做了一些修改,将“处理结束时触发”删除,"send to port"的判断不变,然后在“process time”那里使用if语句:
double value1 = normal(10, 3, 0);
double value2 = exponential(1 ...
[size=2][color=#999999]carol 发表于 2014-8-5 08:58[/color] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=13401&ptid=4384]http://www.flexsim.asia/images/common/back.gif[/url][/size][/quote]


不知道这样的代码会不会简单一些?
[code]int t=getitemtype(item);
if(t==1) double n = normal(10, 3, 0);
if(t==2) double n = exponential(10, 3, 0);
if(t==3) double n= lognormal2(0, 10, 0.3, 0);
setlabelnum(item,1,n);
return n;[/code]
作者: 慧娴亚伦    时间: 2014-9-16 09:00
[b] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=13955&ptid=4384]32#[/url] [i]zorsite[/i] [/b]


这样写代码上确实更精简一些。
作者: 丫头盖    时间: 2014-10-9 10:53
之前做过一个不同加工时间的模型,是在指导下完成的,以后可以多学习了~
作者: xinglei    时间: 2014-11-18 16:42

作者: jkqwe111    时间: 2015-11-5 10:14
看了上面大神们的案例模型,感觉对我这个初学建模这大有帮助。进入代码模块感觉还是有点激动的。{:3_48:}
作者: 李美婷    时间: 2015-11-5 15:53
看了大家的模型,初学者受益良多:loveliness:
作者: Gophone    时间: 2015-12-23 17:42
很好的资料,可以作为参考学习。
作者: Kimver    时间: 2016-3-26 16:32
没有金币,下不了原布局,第一期略简单,还是做了一下
作者: 慧娴亚伦    时间: 2016-3-27 10:50
回复39楼:

模型完成没有问题。但是代码编写习惯上有可以改进的地方:
1、在处理器加工时间的触发器中,修改了默认代码,应该标识出来,否则以后再回顾代码时不容易发现统计加工时间信息的地方
2、判断是否异常加工的代码编写没有符合分层规则,使用{}比较随意,降低了代码的可读性,在代码量较小的时候没有问题,但是代码量一大就容易出现问题。
作者: Kimver    时间: 2016-3-27 13:07
[quote]回复39楼:

代码确实写得有点随意,多谢指正。
作者: fog_joker    时间: 2016-8-8 15:05
学习一下~
作者: 1016175264    时间: 2016-11-21 21:54
谢谢大神们,已经作出了,收益匪浅
作者: 会笑的风    时间: 2017-9-6 16:30
为什么2l的模型模仿出来时到蓝色实体就会卡在处理器外面,导致整个模型停滞

作者: 会笑的风    时间: 2017-9-11 09:25
我在进行模仿编程时出现了蓝色实体在检验器中卡住的情况,后来经检查发现是自己的检验器上的时间 lognormal2(0, 10, 0.3, 0)中的2掉了,导致实体不是卡主了,而是检验时间特别长,在一定的检验时间内好似卡住一样,这是我自己的粗心造成的错误,希望和我一样的初学者不要犯类似错误。
其次是在2l的模型中那个显示检验时间的plane的设计中我也有出现了两个问题,一是把plane拖入窗口进行设置后,会发现那只有一个连线的红点,像不见了一样,这要在plane的general中把颜色改为黑色便能看见;二是对于怎么让显示平板上显示检验时间,这其中要设一个标签,这个标签不是addlable之类的,而是要设文本标签,可以在plane的lable中选择add text lable.然后按照2l的模板设置便可以了。这是我自己因为水平不够浪费时间的地方,希望能帮助初学者避免类似错误。
作者: Flexsim学员A    时间: 2019-7-11 21:05
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=23493&ptid=4384][color=#999999]会笑的风 发表于 2017-9-11 09:25[/color][/url][/size]
我在进行模仿编程时出现了蓝色实体在检验器中卡住的情况,后来经检查发现是自己的检验器上的时间 lognormal ...[/quote]

addlable是什么意思?是“加标签”的意思吧?这个程序是在哪里
作者: 慧娴亚伦    时间: 2019-7-14 21:29
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=30521&ptid=4384][color=#999999]Flexsim学员A 发表于 2019-7-11 21:05[/color][/url][/size]
addlable是什么意思?是“加标签”的意思吧?这个程序是在哪里[/quote]

这是一个命令,现在已经不再使用了,直接使用setlabel就可以添加标签。

作者: wangchangping    时间: 2020-2-19 15:22
不错的案例,学习了
作者: 1291584480    时间: 2020-4-22 11:25

感谢楼主分享。
作者: yan8288314    时间: 2021-1-27 15:15
感谢分享!
作者: mawen2020    时间: 2021-7-11 16:12
,,,,,,,,,,,,,
作者: wu381524886    时间: 2021-8-19 21:53
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=11970&ptid=4384][color=#999999]慧娴亚伦 发表于 2014-3-25 19:35[/color][/url][/size]
回复2楼:


[/quote]

我用2楼的指令做  发现有些指令已经不用过时了。。。
作者: wu381524886    时间: 2021-8-20 11:24
之前前辈们做的模型都是基于flexsim 5.0 6.0 7.0等版本,一些脚本函数已经被弃用,我根据2L的思路用新版软件及最新的脚本函数进行复现。仅供大家交流参考
作者: Martin    时间: 2021-11-10 10:14
好好学习,天天向上




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