我正在寻找最佳算法来优化模拟中的决策,以便在合理的时间内找到快速结果。 模拟会进行多次“滴答”,偶尔需要做出决定。 最终会达到目标状态。(如果你做出非常糟糕的决定,可能永远无法达到目标状态)
有很多很多目标状态。 我想找到滴答次数最少的目标状态(滴答大约相当于现实生活中的一秒)。我基本上想决定做出哪些决定,以尽可能少的秒数到达目标,
关于问题领域的一些要点:
- 一开始,我可以生成一系列选择,这将导致一个解决方案。 但它不会是最优的。
- 我有一个合理的启发式函数来确定什么才是好的决定
- 我有一个合理的函数来确定从一个节点到目标的最小可能时间成本。
算法:
- 我需要在大约 10 秒内处理这个问题,然后给出我能找到的最佳答案。
- 我相信 A* 会找到我的最佳解决方案。 问题是决策树会非常大,我无法足够快地计算它。
- IDA* 会在 10 秒内给出我几个好的初步选择,但我需要一条通往目标的完整路径。
目前,我正在考虑从已知的非最优路径开始,然后可能使用模拟退火,并尝试在 10 秒内改进它。
应该研究哪些好的算法来尝试解决这类问题?
回答:
可以看看有限差异搜索,重复使用越来越宽松的限制进行最大差异搜索,或者束搜索。
如果你有一个好的启发式方法,你应该能够用它来比较单个选择 – 用于有限差异搜索,以及比较部分解决方案 – 用于束搜索。
看看你是否可以对部分解决方案的任何扩展的优劣程度设置一个上限。 然后你可以剪除那些不可能扩展到超过启发式方法的结果,或者在一系列深度递增的迭代搜索中找到的目前为止的最佳结果的部分解决方案。