1

我目前正在为大学考试编写一个使用JavaSim的面向过程的模拟器。模拟器本身运行良好,但我有一个主要疑问:是否有一种正确/最佳的方法可以在代码中找到模拟的稳定状态?

我读的那本书模糊地描述了当模拟的行为收敛到一个常数或重复值时找到“稳态”的过程:

稳态 http://img24.imageshack.us/img24/9782/steadystate.png

但是这在代码中看起来如何?我想我可以对需要定期收集的统计数据进行抽样,并检查它们是否收敛于某个平均值。或者我可以简单地及时打印出值并任意决定模拟何时达到稳定状态?

4

2 回答 2

0

标准方法是监控波动率,并选择一些足够小的阈值以被视为“稳定状态”。使用提供的平均值很脆弱,因为它硬编码了您正在寻找的解决方案的绝对值。

我只是计算一个点窗口的标准偏差,比如最后 50 个,并声明当该偏差低于可接受的最小值时达到稳定状态(你必须自己选择最小偏差,因为这是你的定义稳定状态')。这大致相当于在图表中的摆动变得足够小并持续一段时间时接受答案。

于 2009-11-03T15:43:53.153 回答
0

没看到你有一个很好的答案......

查看在线资源或 Law and Kelton, Simulation Modeling and Analysis,了解确定稳态的过程。关键是您希望您的模拟独立于系统启动条件。更重要的是,您的关键措施(如延迟)的分布应该独立于起始条件。他们有一套程序可以根据均值、方差和样本量围绕您的关键度量构建置信区间,然后确定您的连续样本在统计上是否相同。尽管满足正态性假设,但拥有足够的样本量很重要。

Simulation with Arena 一书中的好东西还包括对为什么稳态可能不重要的讨论。

祝你好运 !

于 2010-02-02T22:34:44.780 回答