我正在寻找一种方法来找到模拟的最佳参数。这是关于台球/游泳池的突破。镜头由7个参数定义,我可以模拟镜头然后对结果进行评分,我想计算出最佳参数。
我在这里找到了以下链接: Multiple parameter optimization with lots of local minima 提出了4种算法。在我使用的游泳池模拟器中,每次模拟时,镜头都会被一点随机值改变。如果我模拟两次相同的镜头,结果会有所不同。所以我正在寻找一个像上面链接中那样的算法,只需添加一个随机元素,优化7个参数,这些参数平均会产生最佳参数,即最有可能取得成功的突破。我最初的想法是模拟100或1000次拍摄,并且只取平均作为上述算法的评级,但我仍然觉得有更好的方法。有没有人有想法?
7个参数是连续的,但在不同的范围内(一个从0到10,另一个从0.0到0.028575,依此类推)。
谢谢
答案 0 :(得分:1)
至少对于某些算法,重复模拟相同的镜头可能不是必需的。只要您的替代方案具有某种形式的动力,就像在群体模拟方法中一样,您可以让它受到每个单独模拟结果的影响。在这种情况下,单个不幸的模拟只能稍微减慢参数空间中的运动,而严重的质量损失应该足以停止和反转运动。可以调整不使用动量的Thos算法以获得动量。如果没有,那么重复模拟似乎是最好的方法。除非你能够掌握模拟器的内部结构,否则不必一遍又一遍地模拟镜头。
答案 1 :(得分:1)
您可以使用您在非确定性场景中提到的算法以及独立的随机运行。重复模拟的想法很好,你可以阅读更多关于how many repeats你可能需要考虑的模拟(不幸的是,没有简单的答案)。如果你没有那么多的数学,并且运行速度很快,做1.000重复,然后10.000重复,看看结果是否有很大差异。如果是,你必须收集更多的样本,如果没有,你可能是安全的(central limit theorem表示结果收敛)。
此外,不要只考虑平均值!确保查看每个算法结果的标准差;您可能希望使用box plots来比较它们的四分位数。如果你只依赖于平均值,你可以选择一种算法,它会产生非常不同的结果,有时很好,有时候性能也很差。
我不知道您使用的语言是什么,但如果您使用Java,我会维护a tool,这可以简化您的“蒙特卡罗”风格实验。