目前,我正在使用JavaSim编写一个面向过程的模拟器,用于大学考试。模拟器本身运行良好,但我有一个主要的疑问:是否有一种正确的/最好的方法在代码中找到模拟的稳态?
我读的这本书模糊地描述了当模拟的行为收敛到一个常数或重复值时,寻找“稳态”的过程:
稳态http://img24.imageshack.us/img24/9782/steadystate.png
但这在代码中看上去怎么样?我想我可以对我需要定期收集的统计数据进行抽样,并检查它们是否收敛于某个平均值。或者,我可以简单地打印出值,并任意决定何时模拟达到稳定状态?
发布于 2009-11-03 15:43:53
标准的方法是监测波动率,并选择一些足够小的阈值,以考虑“稳态”。使用提供的平均值是脆弱的,因为它硬编码您正在寻找的解决方案的绝对值。
我只需要计算点窗口的标准差,比如最后的50点,并声明当偏差低于可接受的最小值时所达到的稳态(您必须自己选择最小偏差,因为这是‘稳态’的定义)。这大致相当于接受答案时,你的图形中的摆动变得足够小,足以维持一段时间。
发布于 2010-02-02 22:34:44
别以为你对这件事有个好的答案.
查看在线资源或法律和凯尔顿,模拟建模和分析,以确定稳态的过程。关键是您希望您的模拟与系统启动条件无关。更重要的是,您的关键措施(如延迟)的分布应该独立于启动条件。他们有一套程序,根据均值、方差和样本大小,围绕你的关键度量来构造置信区间,然后确定你的连续样本是否在统计上是相同的。尽管有足够的样本来满足正态假设,这是很重要的。
同样,在“与竞技场的模拟”一书中也有一些好的东西,其中包括了为什么稳态可能不重要的讨论。
祝你好运!
https://stackoverflow.com/questions/1667940
复制相似问题