2

我正在寻找一种方法来找到模拟的最佳参数。这是关于台球/台球的突破。一个镜头由 7 个参数定义,我可以模拟镜头,然后对结果进行评分,我想计算最佳参数。

我在这里找到了以下链接: Multiple parameter optimization with lots of local minima 建议4种算法。在我使用的泳池模拟器中,每次模拟时,镜头都会改变一点随机值。如果我两次模拟同一个镜头,结果会有所不同。所以我正在寻找一种类似于上面链接中的算法,只是添加了一个随机元素,优化了 7 个参数,这些参数平均会产生最佳参数,即最有可能成功的破门。我最初的想法是模拟 100 或 1000 次镜头,然后将平均值作为上述算法的评分,但我仍然觉得有更好的方法。有人有想法吗?

这 7 个参数是连续的,但在不同的范围内(一个从 0 到 10,另一个从 0.0 到 0.028575 等等)。

谢谢

4

2 回答 2

1

至少对于某些算法而言,可能不需要重复模拟同一个镜头。只要您的替代方案具有某种形式的动力,例如在群体模拟方法中,您就可以让它受到每个单独模拟结果的影响。在这种情况下,一个不幸的模拟只会稍微减慢参数空间中的运动,而严重的质量损失应该足以停止和反转运动。那些不使用动量的算法可能会被调整为具有动量。如果不是,那么重复模拟似乎是最好的方法。除非您可以掌握模拟器的内部结构,并从整体上对镜头进行评分,而不必一遍又一遍地模拟它。

于 2012-08-12T19:13:09.443 回答
1

您可以将您在非确定性场景中提到的算法与独立的随机运行一起使用。您重复模拟的想法很好,您可以阅读更多关于您可能需要为模拟考虑多少次重复的信息(不幸的是,没有简单的答案)。如果你不太喜欢数学,而且跑得很快,重复 1.000 次,然后重复 10.000 次,看看结果是否有很大差异。如果是,您必须收集更多样本,如果不是,您可能是安全的(中心极限定理表明结果收敛)。

此外,不要只考虑平均值!确保查看每个算法结果的标准偏差;您可能想使用箱线图来比较它们的四分位数。如果你只依赖平均值,你可能会选择一种产生非常不同结果的算法,有时性能很好,有时性能很差。

我不知道您使用的是什么语言,但如果您使用 Java,我正在维护一个可以简化您的“蒙特卡罗”风格实验的工具。

于 2012-10-08T12:12:59.947 回答