全球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