sgaini 发表于 2009-5-17 01:59:23

求助!如何求buffer中的产品数量平均值

求助!如何求buffer中的产品数量平均值
如何求平均队长?
buffer之中有无属性可以用到的?
求教各位大虾~

liysunny 发表于 2009-5-17 09:17:31

嗯,不知道你是要记录多长时间内的buffer产品数量平均值
不管怎么样,你都可以,自己在属性里面添加一个integer类型的属性
每次buffer里面零件进入或加工完毕出去的时候,属性值+1,这样就好了。。。

平均值的话,可以多添加一个时间的属性,把开始进入时间和最后一个零件出去的时间都记录下来,就可以了。。

sgaini 发表于 2009-5-17 18:53:18

谢谢你的回答~
我是要统计整个仿真时间的内的buffer产品数量平均值。
还有你说的属性是指MUs的属性还是buffer的属性啊?
假如按照你的说法,那只能记住经过buffer的总的数量,如果在除以最后一个减第一个的时间差,得出来的是“单位时间内的进入或出去buffer的数量”。
这并不是我想要的buffer中的平均产品数,我这个buffer的容量是无穷的,buffer中的平均产品数这个量在生产系统里面是相当与一个服务器的平均队长,这个单位是个。而用上面的做法单位是个/秒

liysunny 发表于 2009-5-18 09:05:28

嗯,其实还是不太明白你的意思,即使是平均队长,也是可以记录时间的吧。。。
你的意思是不是每隔一个时间段记录下队长的长度,然后,求下平均值。。。
如果是这样的话,就可以在buffer的属性里面,建立一个表,表的第一列是当前时间,第二列是buffer当前的容量(nummu)
写方法控制,就好了。。。。
如果是每隔一段时间的记录的话,就要用那个tigger工具。。
如果是在buffer有零件进入的时候记录,就可用以上的方法。。。
不知道这个是不是你所要的答案。。。

kaly 发表于 2009-5-18 10:05:25

给entity设置两个time属性,比如a1、a2,设置一个time属性的全局变量b,设置一个real型的全局变量c。
当entity进入buffer的时候,设置a1为ac,当entity离开buffer的时候,设置a2为ac-a1,b:=b+a2,c:=b/ac。
这里,c就是buffer的平均数量。
你说的队长和buffer的平均数量没什么区别。

sgaini 发表于 2009-5-18 18:49:34

看到你们在这里这么热情的为我解决问题,我感到非常的感动。
首先我要谢谢你们,从你们的回答里我得到了很多的启示,我会试一下的。
能不能解决问题的结果不重要,重要的是我们能再讨论中学习到东西。
:handshake

sgaini 发表于 2009-5-18 19:03:25

原来buffer里面的客制化属性可以建表格的?
这个我真的不知到呢~~谢谢你的提醒,我又多会一点东西了~:lol

对于liysunny的方法,我都有想过,我是用TimeSequence来统计出在在一些时间点里面buffer的数量,从point in time这一列中得到统计的次数,从value这一列中得到每个时间点的buffer里面数量,再累加。
但统计完了我不知道怎么把TimeSequence里面的那个表格进行统计,我就是想把TimeSequence里面的point in time的最后一行的行值拿出来,和把value这一列的所有值累加起来,记录在一个表或者变量里,我试过,但是不行。
你们可以的话就按着我的思路试一下,可以的话,告诉我,我会非常感激你们的!

如果用客制化属性建一个表格,那应该可以!我会试一下的,谢谢

sgaini 发表于 2009-5-18 19:12:24

请教yjieemail,你的意思是建一个method,来统计每一秒buffer里面的实体数?
用method来统计buffer里面的MU个数,请问有没有buffer.numMU这个属性的?还是用客制化属性。
还有怎么控制它每隔一秒就记录buffer里面的mu个数啊?
可以的话,请写一下程序我参考一下,谢谢~

sgaini 发表于 2009-5-18 19:14:32

是有.numMU这个属性的,我刚刚查帮助找到了
numMu
Usage:<mu_path>.numMu;

The method numMu returns the number of MUs located on the loading space of the MU designated by <mu_path>.

The return value is of type integer.

Example:.MUs.transporter:1.numMu;

sgaini 发表于 2009-5-18 19:38:32

对于kaly,我大概了解你的意思,请问你的ac指的是eventcontroller的当前时间吗?
是不是定义ac:=Eventcontroller.simtime;啊?
如果ac指的是eventcontroller的当前时间,
那你认为的平均队长=每一个物件在buffer的逗留时间的总和/仿真的总时间。
这是和我们的生产系统仿真课的老师上课讲的平均队长的计算一样。
我后来查看上课的笔记,才发现的,按这种思路来算,但我是用一个tablefile来记录的。
但如果用你的方法,建一个method,来算是方便很多。

sgaini 发表于 2009-5-18 19:56:50

在这里我想问一下,
究竟平均队长的定义是什么?
是平均队长=每一个物件在buffer的逗留时间的总和/仿真的总时间?
还是平均队长=在统计次数内的每一次buffer里数量的总和/总的统计次数?
很明显kaly方法是建立在第一种定义上的,而liysunny和yjieemail的方法是建立在第二种定义上的。
第一种定义是老师上课讲的,应该没错,但第二种好像也可以。我一开始就是这么想的。
大家讨论一下这个问题吧!

[ 本帖最后由 sgaini 于 2009-5-18 20:05 编辑 ]

sgaini 发表于 2009-5-18 20:04:44

另外一种定义应该是
平均队长=在统计次数内的每一次buffer里数量的总和/总的统计次数,如果统计次数足够大,我觉得这个也能反映平均队长的~

kaly 发表于 2009-5-19 09:44:32

在这种模型里,平均队长是积分积出来的。

sgaini 发表于 2009-5-19 16:27:36

请问如何用积分积出来呢?
这个我真的不会,simtalk里面有积分的函数吗?还是要自己编?

kaly 发表于 2009-5-20 10:45:55

就是我跟你说的那种方法,对长的积分还是比较简单的,因为是离散函数的积分。
页: [1] 2
查看完整版本: 求助!如何求buffer中的产品数量平均值