我想知道AnyLogic社区使用哪些不同的方法来记录状态统计中的时间。为了解释我的意思,我给你举个例子:
比如说,我在给一家电影院做模特,里面有很多电影院。每个电影院都被建模为一个代理,其中包含一个状态图,其中电影院可以处于以下几个状态之一:
假设我现在想记录和输出关于每家电影院所处状态的时间和计数的统计数据,大致如下:
电影1-国家:
+-----------+-------------+--------------+--------------+
| State | Occurrences | Average Time | % Total Time |
+-----------+-------------+--------------+--------------+
| Idle | 25 | 60 | 20% |
+-----------+-------------+--------------+--------------+
| Filling | 50 | 20 | 10% |
+-----------+-------------+--------------+--------------+
| InSession | 50 | 90 | 40% |
+-----------+-------------+--------------+--------------+
| Etc. | ... | ... | ... |
+-----------+-------------+--------------+--------------+请分享在AnyLogic中实现这一目标所使用的技术。
发布于 2018-04-01 15:14:07
不管你做什么,你都需要创建一个变量来收集信息.
事件:
您有一个名为并发数的变量,从0开始,每次代理进入状态时增加1。您可以计算以后执行average(cinemas,c->c.occurrences)的所有代理的平均值。
AverageTime:
您可以使用来自代理面板的集合或数据集,也可以使用分析中的统计信息。这样做有很多种方法,所以我不会在这里列出它们,但是数据集-- stastics对象--有它们自己的平均值(分别为getYmean和mean ),您可以使用这些函数。在状态空闲的情况下,您必须有一个变量timeIdle,例如,每当状态空闲时,每次单元都会增加。
if(inState==idle) timeIdle+=timeUnit当代理退出状态时,或者在模拟结束时,或者当您希望度量如果您使用数据集时可以执行的值( data.add(timeIdle) ),以及当您需要检索数据集对象时可以执行data.getYmean()时,如果它是数据集对象,则可以执行data.mean();如果是统计数据对象,则可以执行data.mean()
%总时间:
同样的事情有一个变量叫做percTotalTime..。在需要读取值时执行percTotalTime=timeIdle/time()。
你必须为每个州做同样的事情。
https://stackoverflow.com/questions/49595827
复制相似问题