源块中的“比率”是固定比率吗?

时间:2018-12-08 07:26:13

标签: anylogic

我有一个简单的下沉模型源,我只是将“费率”更改为每小时6。我希望每小时生成一个固定的6个代理,但是似乎在从0到60分钟的第一个小时中,只生成了3个代理。同样,在60-120分钟内,仅生成了5个代理。

Anylogic是否有预热期或类似情况可以解释发生了什么情况?

2 个答案:

答案 0 :(得分:1)

源块无法每小时精确地生成6个代理,而是使用泊松分布来生成代理,平均每小时6个(lambda = 6)。因此,每小时获得的座席人数将是随机的。但是为什么总是在第一个小时得到3并在第二个小时得到5的原因是您拥有固定的种子: simulation experiment 您可以在随机性标签下的仿真实验中找到该选项。如果更改为随机种子,则每小时将产生不同的代理,而不是总是3和5。

要每小时准确产生6则您需要使用一个事件。但是首先创建一个通过注入生成代理的源: source

该事件每小时运行6次,向源中添加1个代理: event

答案 1 :(得分:0)

另一种替代方法是只使用间隔时间和固定时间。这将为您提供与费利佩的答案相同的结果,但是对象却少了一个,因为您不需要该事件。

有关此方法的一些重要事项:

  • 使用参数代替6.0会更好。您可以将此参数称为dArrivalsPerHour。这将使您的源代码块将来更容易阅读,并为您提供更好的灵活性。您的到达时间为1.0 / dArrivalsPerHour。
  • 确保至少除以(1)两倍。如果您执行1/6,则Java实际上将返回0!这是因为在Java中,两个彼此相除的整数会返回一个整数,因此java会截断小数。如果使用参数,则将其类型设置为double。通常,要格外小心,以防将来有人将我的参数类型意外更改为整数,我仍然会继续使用1.0。
  • 在这种方法中,AnyLogic不会在零时到达。第一次到达将是在0.166小时。如果您希望到达零时的时间,然后遵循此模式(每小时仍为6,开始时才移动),则有两种选择。首先,您可以使用Felipe的方法并将首次出现时间设置为零。另一种方法是可以在模型完成初始化代码后调用“启动时注入”。

建模愉快!