源块中的费率是固定费率吗?
Posted
技术标签:
【中文标题】源块中的费率是固定费率吗?【英文标题】:Is the Rate in the source block a fixed rate? 【发布时间】:2019-05-09 20:47:31 【问题描述】:我有一个简单的源来接收模型,我只是将“速率”更改为每小时 6 个。我希望每小时生成固定的 6 个代理,但似乎在从 0 到 60 分钟的第一个小时内,只生成了 3 个代理。同样,在 60-120 分钟的时间内,只生成了 5 个代理。
Anylogic 中是否有一个热身期或类似的东西来解释正在发生的事情?
【问题讨论】:
【参考方案1】:另一种选择是仅使用固定时间的到达间隔时间。这将为您提供与 Felipe 的答案相同的结果,但减少了一个对象,因为您不需要该事件。
关于这种方法需要注意的一些重要事项:
使用参数而不是 6.0 会更好。您可以将此参数称为 dArrivalsPerHour。这将使您的源代码块在将来更易于阅读,并为您提供更好的灵活性。您的到达间隔时间为 1.0 / dArrivalsPerHour。 确保至少除以 (1) 双倍。如果你做了 1/6,java 实际上会返回 0!这是因为在 Java 中两个整数相除返回一个整数,所以 java 只是截断小数。如果使用参数,只需将其类型设置为 double。通常为了防止将来有人意外将我的参数类型更改为整数,我仍然会继续使用 1.0。 AnyLogic 在此方法中没有到达时间为零。首次到达时间为 0.166 小时。如果您希望在零时间到达,然后是这种模式(仍然是每小时 6 班,只是在开始时移动),那么您有几个选择。首先,您可以使用 Felipe 的方法,并将第一次出现时间设置为零。另一种方法是在您完成模型具有的任何初始化代码之后调用注入 On Startup 或。建模愉快!
【讨论】:
这实际上比使用事件更好......你赢了:)【参考方案2】:源块每小时不会精确生成 6 个代理,它使用泊松分布生成代理,平均每小时 6 个 (lambda=6)。因此,您每小时获得的代理数量将是随机的。但是为什么你总是在第一个小时得到 3 和在第二个小时得到 5 的原因是你有一个固定的种子: 您可以在随机选项卡下单击您的模拟实验找到该选项。如果您更改为随机种子,它将每小时产生不同的代理,而不是总是 3 和 5。
要每小时产生正好 6 个,您需要使用一个事件。但首先创建一个通过注入生成代理的源:
并且事件每小时运行 6 次,向源添加 1 个代理:
【讨论】:
以上是关于源块中的费率是固定费率吗?的主要内容,如果未能解决你的问题,请参考以下文章