首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代理状态时间统计

代理状态时间统计
EN

Stack Overflow用户
提问于 2018-04-01 07:29:40
回答 1查看 831关注 0票数 1

我想知道AnyLogic社区使用哪些不同的方法来记录状态统计中的时间。为了解释我的意思,我给你举个例子:

比如说,我在给一家电影院做模特,里面有很多电影院。每个电影院都被建模为一个代理,其中包含一个状态图,其中电影院可以处于以下几个状态之一:

  • 空闲(目前没有使用电影院)
  • 灌装(电影院开放,并挤满了顾客)
  • InSession (一部电影正在播放)
  • 清空(电影上映后主顾开放,观众离开)
  • 脏的(电影院在看完电影后是空的,但还没有被清理)
  • 清洁(清洁工正在做他们的事)

假设我现在想记录和输出关于每家电影院所处状态的时间和计数的统计数据,大致如下:

电影1-国家:

代码语言:javascript
复制
+-----------+-------------+--------------+--------------+
| State     | Occurrences | Average Time | % Total Time |
+-----------+-------------+--------------+--------------+
| Idle      | 25          | 60           | 20%          |
+-----------+-------------+--------------+--------------+
| Filling   | 50          | 20           | 10%          |
+-----------+-------------+--------------+--------------+
| InSession | 50          | 90           | 40%          |
+-----------+-------------+--------------+--------------+
| Etc.      | ...         | ...          | ...          |
+-----------+-------------+--------------+--------------+

请分享在AnyLogic中实现这一目标所使用的技术。

EN

回答 1

Stack Overflow用户

发布于 2018-04-01 15:14:07

不管你做什么,你都需要创建一个变量来收集信息.

事件:

您有一个名为并发数的变量,从0开始,每次代理进入状态时增加1。您可以计算以后执行average(cinemas,c->c.occurrences)的所有代理的平均值。

AverageTime:

您可以使用来自代理面板的集合或数据集,也可以使用分析中的统计信息。这样做有很多种方法,所以我不会在这里列出它们,但是数据集-- stastics对象--有它们自己的平均值(分别为getYmean和mean ),您可以使用这些函数。在状态空闲的情况下,您必须有一个变量timeIdle,例如,每当状态空闲时,每次单元都会增加。

代码语言:javascript
复制
if(inState==idle) timeIdle+=timeUnit

当代理退出状态时,或者在模拟结束时,或者当您希望度量如果您使用数据集时可以执行的值( data.add(timeIdle) ),以及当您需要检索数据集对象时可以执行data.getYmean()时,如果它是数据集对象,则可以执行data.mean();如果是统计数据对象,则可以执行data.mean()

%总时间:

同样的事情有一个变量叫做percTotalTime..。在需要读取值时执行percTotalTime=timeIdle/time()

你必须为每个州做同样的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49595827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档