我希望在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。