AnyLogic中如何在不修改模型单位的情况下转换timeMeasureEnd块时间单位?
在AnyLogic中转换timeMeasureEnd数据的时间单位
无需修改模型全局时间单位,有两种实用方法满足你的需求:
方法一:调用数据时实时转换(保留原始存储数据)
myTimeMeasureEnd.distribution默认存储模型时间单位(分钟)的原始时长数据,你可以在配置直方图或调用数据时直接做单位转换:
- 转换为小时:使用表达式
myTimeMeasureEnd.distribution.map(v -> v / 60.0) - 直接转换为天(适配直方图横轴需求):使用表达式
myTimeMeasureEnd.distribution.map(v -> v / 1440.0)
配置直方图时,在「Data」选项卡的「Data set」中填入上述转换后的表达式即可,横轴将自动以目标单位展示。
方法二:修改timeMeasureEnd的存储规则(直接存储转换后的数据)
如果希望myTimeMeasureEnd.distribution本身就存储小时单位的数据,按以下步骤操作:
- 双击打开
myTimeMeasureEnd块的配置窗口 - 找到Recorded value选项,默认值为
time() - timeEntered(计算从进入到离开的模型时间差) - 将其修改为
(time() - timeEntered) / 60.0,这样块将直接存储小时单位的时长 - 确认设置后,后续调用
myTimeMeasureEnd.distribution即可直接获取小时数据;若要适配天为横轴的直方图,可再做转换:myTimeMeasureEnd.distribution.map(v -> v / 24.0)
注意:方法二会改变
myTimeMeasureEnd存储的原始数据,若模型其他逻辑需要使用分钟单位的时长,优先选择方法一更稳妥。
内容的提问来源于stack exchange,提问作者juanpablorv
相关产品推荐
相关产品推荐

