【问题标题】:Global optimisation of function with many parameters (~40) and local minima in PythonPython中具有许多参数(〜40)和局部最小值的函数的全局优化
【发布时间】:2022-01-29 04:25:38
【问题描述】:

有没有人对具有多个局部最小值和许多参数的复杂目标函数的全局优化问题有一些经验?对我来说,CPU 时间不是一个限制,但实际上找到全局最小值是最重要的。到目前为止,我已经尝试过 Scipy 'dual_annealing' (https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.dual_annealing.html),但是在 32 个内核上运行 24 小时后,没有找到全局最小值(也许我需要进一步微调这个最小化器或提供更强的界限?)。还有其他更适合此应用程序的最小化例程吗?

非常感谢。

【问题讨论】:

  • 如何检查最小值是本地的而不是全局的?您如何确定最低限度是全球性的?仅此一项可能非常困难,除非您的问题是(幸运)子集的一部分,例如线性和/或凸
  • 找到一个支持 GPU 的遗传算法库,并将其突变幅度与模拟退火算法相结合(多次重新启动多样性)并拥有大量的 DNA 种群。借助定制的 CUDA 加速 GA+SA 库和 2 个低端显卡(每个 192 条 CUDA 管道),它可以在 10 分钟内从 256 个圆(X、Y、颜色和半径的 1024 个参数)绘制蒙娜丽莎。跨度>

标签: python optimization scipy minimization


【解决方案1】:

您可以尝试的超参数优化器框架。

【讨论】:

    【解决方案2】:

    有 40 多个参数将是一个非常困难的参数,尤其是如果您想合理地确定您找到了全局最小值(不是任何算法都能够告诉您)...我得到了很好的结果来自 SciPy 的双重退火,尽管是针对低维问题。

    但还是 24 小时?您的目标函数评估成本是多少?你有可用的分析梯度吗?我想答案是“不”,但如果你这样做了,可能会有很多有前途的技术可以尝试。您是否为参数指定了界限?

    你看过 NLopt (https://nlopt.readthedocs.io/en/latest/NLopt_Algorithms/) 吗?过去,我使用受控随机搜索 (CRS) 算法在较大的问题上取得了令人惊讶的好结果,但您的里程可能会有所不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 2017-02-18
      • 1970-01-01
      • 2011-05-22
      • 2014-03-07
      • 1970-01-01
      相关资源
      最近更新 更多