在 AnyLogic 中的特定时间步计数

Counts at a specific time step in AnyLogic

我正在尝试 运行 一个标准的基于 SIR 代理的模型,其中代理从 'Susceptible' 过渡到 'Infected',从 'Infected' 过渡到 'Recovered'.我现在对计算瞬时发生率很感兴趣,即在给定时间 t 从 'Susceptible' 状态转换到 'Infected' 状态的代理人数量。

例如: 在第 1 天(模型时间),2 个代理从 'Susceptible' 过渡到 'Infected' 在第 2 天(模型时间),5 个代理从 'Susceptible' 过渡到 'Infected' 在第 3 天(模型时间),7 位代理人从 'Susceptible' 过渡到 'Infected' . . .

我能够获得 'Infected' 个代理的总数,但我想知道每个时间步长的这个值。我正在寻找一个函数,用于累计累加每个时间步的新感染数量。

关于如何在 AnyLogic 中执行此操作的任何想法都将非常有帮助。谢谢。

我建议您在 Main col_Counter 上创建一个类型的集合,其中键是日期,值是感染数。 然后在代理中创建一个名为 e_Counting 的重复事件,从模型开始时开始,每 24 小时重复一次。在动作中写:

main.col_Counter.add(date(), v_countsToday);

v_countsToday=0;

同时在代理中创建 v_countsToday 作为整型变量。每当发生感染时加+1。

还有很多其他方法,但这行得通。

干杯

这里是截图,需要select"Other"键手动输入维度"Date()":