如何在 Anylogic 中使用 LinkedHashMaps
How to use LinkedHashMaps in Anylogic
我想要累计进入 Sink 的母猪数量(deadSowsCulledSows 和
sowDeaths)在过去 52 周内。我为每周母猪创建了变量
使用循环事件在这些汇点位置死亡。我希望在模拟的每一周都计算这个累积数。例如,在第 10 周——我想要累积
第 1 至 10 周的死亡人数;在第 52 周——我想要第 1 周的累计数字
到 52,对于第 53 周——我想在第 2 周和第 53 周之间有一个累计数,
等等。
有人建议我使用LinkedHashMap,我同意,但我不知道从哪里开始设置?我想使用周作为价值,每周死亡作为关键。在哪里插入代码以将值放入 LinkedHashMap?
我觉得我缺少实现此目标的组件。
听起来你想要过去 52 周的 window 移动。
这里有几个选项,但我建议您使用的最简单的选项是使用 AnyLogic DataSet 对象,因为它已经具有您需要的“保持最大样本数”功能.
- 设置一个数据集,将最大样本数设置为 52,不要自动更新,也不要将时间用作 x-axis,因为我们将自行设置。
- 在接收器块中增加每周变量。 (我假设你已经在做)
- 创建一个 HashMap。我建议您使用星期作为键,使用死亡人数作为值(您在问题中采用了相反的方式)
- 然后你有一些事件将每周的值总和保存到数据集中,将变量重置为 0。
然后获取数据集的总和,保存到LinkedHasMap中。
您每周活动的代码如下
weekCounter ++;
deaths.add(weekCounter, weeklyDeaths);
weeklyDeaths = 0;
int tempSum = 0;
for (int i = 0; i < deaths.size(); i ++) {
tempSum += deaths.getY(i);
}
mapOfDeathsPerWeek.put(weekCounter, tempSum);
其中 weekCounter 只是我创建的另一个变量,我可以每周增加它以跟踪周数。
我想要累计进入 Sink 的母猪数量(deadSowsCulledSows 和 sowDeaths)在过去 52 周内。我为每周母猪创建了变量 使用循环事件在这些汇点位置死亡。我希望在模拟的每一周都计算这个累积数。例如,在第 10 周——我想要累积 第 1 至 10 周的死亡人数;在第 52 周——我想要第 1 周的累计数字 到 52,对于第 53 周——我想在第 2 周和第 53 周之间有一个累计数, 等等。
有人建议我使用LinkedHashMap,我同意,但我不知道从哪里开始设置?我想使用周作为价值,每周死亡作为关键。在哪里插入代码以将值放入 LinkedHashMap?
我觉得我缺少实现此目标的组件。
听起来你想要过去 52 周的 window 移动。
这里有几个选项,但我建议您使用的最简单的选项是使用 AnyLogic DataSet 对象,因为它已经具有您需要的“保持最大样本数”功能.
- 设置一个数据集,将最大样本数设置为 52,不要自动更新,也不要将时间用作 x-axis,因为我们将自行设置。
- 在接收器块中增加每周变量。 (我假设你已经在做)
- 创建一个 HashMap。我建议您使用星期作为键,使用死亡人数作为值(您在问题中采用了相反的方式)
- 然后你有一些事件将每周的值总和保存到数据集中,将变量重置为 0。
然后获取数据集的总和,保存到LinkedHasMap中。
您每周活动的代码如下
weekCounter ++;
deaths.add(weekCounter, weeklyDeaths);
weeklyDeaths = 0;
int tempSum = 0;
for (int i = 0; i < deaths.size(); i ++) {
tempSum += deaths.getY(i);
}
mapOfDeathsPerWeek.put(weekCounter, tempSum);
其中 weekCounter 只是我创建的另一个变量,我可以每周增加它以跟踪周数。