处理时间的 Anylogic 移动平均值

Anylogic moving average of processing times

在我的模型中,我有 9 个不同的服务块,每个服务可以产生 9 个不同的特征。每个组合都有不同的延迟时间和标准偏差。例如特征 3 在服务块 8 中需要 5 分钟,偏差为 0.05,但在服务块 4 中只需要 3 分钟,偏差为 0.1。

如何永久跟踪每个组合的最后 5 次所需时间并计算平均值(如移动平均线)?我想使用平均值让产品根据最短时间比较所有机器的过去时间来决定为各个功能选择哪个服务块。产品代理已经有一个参数用于进入服务的时间和一个通过从离开服务块的时间减去进入时间来计算处理时间的参数。

感谢您的支持!

我不确定我是否理解你的问题,但这可能是一个答案:

要跟踪最后 5 次需要的时间,您可以使用分析调色板中的数据集,将样本数量限制为 5...

您将使用 dataset.add(yourTimeVariable); 更新数据集,因此您可以将数据集的垂直轴值留空。

我假设每个特征需要 1 个数据集

然后你可以计算你的移动平均线:

dataset.getYMean();

如果您需要 81 个数据集,那么您可以创建一个集合作为元素类型为 DataSet 的 ArrayList 并且在Main properties上,在On Startup中可以添加如下代码,效果一样。

for(int i=0;i<81;i++){
    collection.add(new DataSet( 5, new DataUpdater_xjal() {
        double _lastUpdateX = Double.NaN;
        @Override
        public void update( DataSet _d ) {
          if ( time() == _lastUpdateX ) { return; }
          _d.add( time(), 0 );
          _lastUpdateX = time();
        }
        @Override
        public double getDataXValue() {
          return time();
        }
      } )
  );
}

你只需要记住什么对应于什么服务块和功能就可以了

collection.get(4).getYMean();

并向数据集添加新值:

collection.get(2).add(yourTimeVariable);