You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AnyLogic中基于Dep28 Sink条目创建小时级条目数直方图

AnyLogic中基于Sink条目实现每小时数量直方图的方法

1. 记录条目进入Sink的时间

在Dep28 Sink的On enter事件中添加代码,记录每个条目的到达时间(转换为小时单位):

  • 先在模型中创建一个List<Double>类型的变量,命名为sinkEntryTimes,用于存储所有条目进入Sink的时间(小时)。
  • 在Sink的On enter事件中写入:
sinkEntryTimes.add(time() / 3600);

2. 统计每小时的条目数量

创建一个TimeSeries<Integer>变量hourlyEntryCounts,用于存储各小时对应的条目总数,再编写自定义函数完成统计:

void calculateHourlyCounts() {
    hourlyEntryCounts.clear();
    int totalHours = (int) Math.ceil(time() / 3600);
    // 遍历每个小时区间统计数量
    for (int hour = 0; hour <= totalHours; hour++) {
        int count = 0;
        for (double entryTime : sinkEntryTimes) {
            if (entryTime >= hour && entryTime < hour + 1) {
                count++;
            }
        }
        hourlyEntryCounts.add(hour, count);
    }
}
  • 若需实时更新统计结果,在Sink的On enter事件末尾调用calculateHourlyCounts();;若仅需仿真结束后展示,在Main的On stop事件中调用该函数。

3. 创建并配置图表

根据需求选择合适的图表组件:

选项1:使用柱状图(适配离散小时计数)

  • 添加Bar Chart组件到界面,在右侧属性面板的Data标签页,设置Series为hourlyEntryCounts。
  • 自定义横轴标签为「仿真时间(小时)」,纵轴标签为「每小时条目数」。
  • 若需实时更新,在calculateHourlyCounts()函数末尾添加yourChartName.update();(替换为你的图表组件名称)。

选项2:使用直方图组件

  • 添加Histogram组件到界面,在Data标签页设置Data source为sinkEntryTimes。
  • 设置Bin width为1,Minimum value为0,Maximum value为仿真总时长(单位:小时,如仿真时长24小时则填24)。
  • 在Appearance标签页,将Y-axis represents改为Count,确保纵轴显示条目数量。

4. 验证结果

运行仿真后,检查图表显示的每小时计数是否与实际条目进入情况一致,若有偏差可调试时间转换逻辑或统计函数。

内容的提问来源于stack exchange,提问作者Kevin Etter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 15:03:19