优化模拟决策的最佳算法

我正在寻找最佳算法来优化模拟中的决策,以便在合理的时间内找到快速结果。 模拟会进行多次“滴答”,偶尔需要做出决定。 最终会达到目标状态。(如果你做出非常糟糕的决定,可能永远无法达到目标状态)

有很多很多目标状态。 我想找到滴答次数最少的目标状态(滴答大约相当于现实生活中的一秒)。我基本上想决定做出哪些决定,以尽可能少的秒数到达目标,

关于问题领域的一些要点:

  • 一开始,我可以生成一系列选择,这将导致一个解决方案。 但它不会是最优的。
  • 我有一个合理的启发式函数来确定什么才是好的决定
  • 我有一个合理的函数来确定从一个节点到目标的最小可能时间成本。

算法:

  • 我需要在大约 10 秒内处理这个问题,然后给出我能找到的最佳答案。
  • 我相信 A* 会找到我的最佳解决方案。 问题是决策树会非常大,我无法足够快地计算它。
  • IDA* 会在 10 秒内给出我几个好的初步选择,但我需要一条通往目标的完整路径。

目前,我正在考虑从已知的非最优路径开始,然后可能使用模拟退火,并尝试在 10 秒内改进它。

应该研究哪些好的算法来尝试解决这类问题?


回答:

可以看看有限差异搜索,重复使用越来越宽松的限制进行最大差异搜索,或者束搜索。

如果你有一个好的启发式方法,你应该能够用它来比较单个选择 – 用于有限差异搜索,以及比较部分解决方案 – 用于束搜索。

看看你是否可以对部分解决方案的任何扩展的优劣程度设置一个上限。 然后你可以剪除那些不可能扩展到超过启发式方法的结果,或者在一系列深度递增的迭代搜索中找到的目前为止的最佳结果的部分解决方案。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注