在模拟中优化决策的最佳算法
Posted
技术标签:
【中文标题】在模拟中优化决策的最佳算法【英文标题】:Best algorithm for optimizing the decisions in a simulation 【发布时间】:2011-07-03 05:20:50 【问题描述】:我正在寻找最佳算法来优化同时做出的决策,以便在合理的时间内找到快速的结果。 simultaion 做了一些“滴答”,偶尔需要做出决定。最终达到目标状态。 (如果您做出非常糟糕的决定,可能永远无法达到目标状态)
有很多很多目标状态。我想用最少的滴答声找到目标状态(一个滴答声大约相当于现实生活中的一秒。”我基本上想决定做出哪些决定以在尽可能短的时间内达到目标,
关于问题域的几点:
我可以立即生成一系列选择,从而找到解决方案。它不会是最佳的。 我有一个合理的启发式函数来确定什么是好的决定 我有一个合理的函数来确定从节点到目标的最小可能时间成本。算法:
我需要处理这个问题大约 10 秒,然后给出我能给出的最佳答案。 我相信 A* 会为我找到最佳解决方案。问题是决策树太大了,我无法足够快地计算它。 IDA* 会在 10 秒内给我很好的前几个选择,但我需要一条通向目标的路径。目前我正在考虑从已知的非最佳目标路径开始,然后可能使用模拟退火并尝试在 10 秒内改进它。
为了解决这类问题,有什么好的算法可以研究?
【问题讨论】:
【参考方案1】:让我们弄清楚一些事实。
1) 确定哪个决策最好的唯一方法是测试每个可能的决策并根据某些标准评估结果。
2) 我们不太可能有时间来决定通过每一个可能的决定,因此我们必须限制我们在未来多长时间内评估该决定。
3) 我们不太可能做出有史以来最好的举动。不只是经常,而是永远。除非您只有几个决定,否则每次您做出决定时,都会有一个更好的决定,而您却没有做出决定。
4) 我们可以利用我们之前的决定如何发挥作用。
将所有这些放在一起...假设当我们做出决定时,我们评估未来 30 个滴答声中会发生什么,在 30 个滴答声中,我们可以检查实际发生的情况是否与我们在 30 个滴答刻前模拟的相符。如果是这样,我们知道该决定会导致可预测的结果,我们应该更少使用该决定。如果我们没有这样做,或者结果比我们希望的要好,我们应该更多地使用这个决定。
理想情况下,您会在...模拟您的模拟...中使用您的逻辑来评估它。然后,当您进行“真实”模拟时,您就有更好的机会更早地做出更好的决定。当然,与您的模拟模拟结果相比,您的实际模拟结果的结果应给予更高的权重。
【讨论】:
听起来很像Temporal Difference Learning。 @DataWraith 多么出色的连接/资源。为此非常感谢!!!!我不知道它有名字,这就是我想出来的。【参考方案2】:看看有限差异搜索,在最大差异搜索或光束搜索上以越来越宽松的限制重复。
如果您有一个很好的启发式算法,您应该能够使用它来比较个人选择 - 用于有限差异搜索,并比较部分解决方案,用于光束搜索。
看看你是否可以为部分解决方案的任何扩展设置一个上限。然后,您可以删除部分解决方案,这些解决方案不可能被扩展以击败启发式方法的结果,或者是迄今为止在一系列迭代搜索中找到的最佳结果,并且随着深度的增加。
【讨论】:
以上是关于在模拟中优化决策的最佳算法的主要内容,如果未能解决你的问题,请参考以下文章