如何基于导入的数据集配置AnyLogic Source Block的到达间隔时间?
基于频率数据集配置AnyLogic Source Block生成卡车到达
1. 确认数据集引用
你已经把Excel表格导入为AnyLogic的DataSet对象(比如命名为arrivalData),先确认两列字段名清晰,比如第一列是interval(到达间隔,单位分钟),第二列是freq(对应出现频率)。
2. 编写自定义函数生成符合频率的间隔
新建一个返回double类型的函数(命名为getRandomInterval),代码如下:
// 从数据集提取间隔和频率数组 double[] intervals = arrivalData.getColAsDoubles("interval"); double[] freqs = arrivalData.getColAsDoubles("freq"); // 若Excel中是绝对次数而非概率,需先转换为概率(取消下方注释) // double totalFreq = sum(freqs); // for(int i=0;i<freqs.length;i++) freqs[i] /= totalFreq; // 创建离散分布并随机抽样 DiscreteDistribution dist = new DiscreteDistribution(intervals, freqs); return dist.sample();
3. 配置Source Block
打开Source Block的属性面板,找到**到达间隔(Inter-arrival time)**设置项,把原来的固定值30替换为自定义表达式:
getRandomInterval()
注意确认Source的时间单位和你数据中的间隔单位一致(比如均为分钟)。
验证建议
添加一个Histogram组件,将生成的到达间隔传入统计,对比原始数据集的频率分布,确保配置符合预期。
内容的提问来源于stack exchange,提问作者Miguel Ribeiro
相关产品推荐
相关产品推荐

