用特定时间范围内的数据填充数据集

Fill Datasets with data in a specific time range

我有一个模拟可以确定工厂在一年内的能源需求。 模拟完成后,全年的能源数据在一个数据集中。现在我想将现有数据复制到新数据集中,但仅限于特定时间段,例如从 6 月 1 日到 6 月 31 日。 我为此使用以下代码:

specificDatasetJune.setCapacity(monthCapacity); //"specificDatasetJune" gets capacity of the time period, e.g. June    
specificDataset.fillFrom(datasetTEST); //Data from fill dataset "datasetTEST" is copied to the "specificDataset".

我当前函数的问题是,对于函数“fillFrom”,我无法指定时间段,因为它会从原始数据集中复制所有数据。例如,如果我在 6 月使用此代码,我的新数据集将从 6 月到 12 月获取值。如果我在完成模拟后使用代码,我只会得到 12 月的数据。 但我只想复制特定时间window。这可能吗?

我使用了 Anylogic 的以下帮助页面:

anylogic.help/api/com/anylogic/engine/analysis/DataSet.html

最好的, 克里斯托夫

您可以(并且应该)手动填充新数据集。只需遍历原始数据集并仅复制您需要的位。假设原来ds每天复制数据,那么x-values就是days:

int startDay = 10; // start Jan 10
int endDay = 30; // end Jan 30
ds_Copy.reset(); // delete any old data
ds_Copy.setCapacity(endDay - startDay); // prepare for new data
for (int i=0; i<ds_Original.size(); i++) {
    if (i>=startDay && i<endDay) {
        ds_Copy.add(i, ds_Original.getY(i));
    }
}

显然,您可以在任何时间执行此操作,无论是 6 月还是模型结束时。只需确保 endDay 实际上已经通过