在AnyLogic中创建一个从1计数到n的变量



我希望在AnyLogic中添加一个每小时从1计数到217的变量,以便用作设置参数行引用的选择条件。

我想我要么需要使用一个事件,要么需要使用状态图,但我真的很难确定,在网上找不到任何东西。

如果你有任何提示,请让我知道,任何帮助都将不胜感激

谢谢,Tash

在这种情况下不需要状态机,因为这可以通过计算或定时事件来实现。AnyLogic具有time()函数,该函数以的形式返回自模型启动以来的时间,单位为模型时间测量单位。

例如:如果模型时间单位为,并且已运行2小时2分10秒,则time(SECOND)将返回7330.0(它始终是值(。一小时的1/217对应于大约3600/217 = 16.58秒。此外,java有一个方便的函数Math.floor(),它将值四舍五入,因此为Math.floor(8.37) = 8.0

将其组装在一起:

// how many full hours have elapsed from the start of the model
double fullHrsFromStart = Math.floor(time(HOUR));
// how many seconds have elapsed in the current model hour
double secondsInCurrentHour = time(SECOND) - fullHrsFromStart * 3600.0;
// how many full 16.58 (1/217th of an hour) intervals have elapsed
int fullIntervals = (int)(secondsInCurrentHour / 16.58);

这可以打包成一个函数并随时调用,而且速度非常快。

或者:可以创建一个Event,它每16.58秒将一些count递增1,当计数达到217时,10将其重置回0。

最新更新