gpt4 book ai didi

matlab - FMINCON 的替代品

转载 作者:行者123 更新时间:2023-12-04 04:53:39 25 4
gpt4 key购买 nike

除了 fmincon 之外,还有更快更高效的求解器吗?我正在使用 fmincon 解决特定问题,但我的内存不足,无法容纳中等大小的向量变量。我也没有任何 super 计算机或云计算选项可供我使用。我知道任何替代解决方案仍然会耗尽内存,但我只是想看看问题出在哪里。

附言我不想要一个会改变我处理实际问题方式的解决方案。我知道凸优化是要走的路,我已经做了足够的工作来完成这里。

P.P.S 我看到了关于开源替代品的另一个问题。那不是我要找的。我正在寻找更有效的方法,如果有人面临同样的问题并转向更好的解决方案。

最佳答案

嗯...

如果没有进一步的信息,我猜是 fmincon内存不足,因为它需要 Hessian(假设您的决策变量是 10^4,它将是 10^4 x numel(f(x1,x2,x3,....)) 大)。

确定Hessian的值也需要很多时间,因为fmincon如果您没有明确指定导数,通常会使用有限差分。

你可以做一些事情来加快速度。

  • 如果您事先知道 Hessian 中会有很多零,您可以通过 HessPattern 传递 Hessian 矩阵的稀疏模式.这节省了大量的内存和计算时间。
  • 如果为目标函数的 Hessian 找出明确的公式相当容易,请创建一个计算 Hessian 的函数并将其传递给 fmincon通过 HessFcn优化集中的选项。
  • 这同样适用于梯度。 GradConstr (对于您的非线性约束函数)和/或 GradObj (对于您的目标函数)在此处应用。

  • 我在这里可能忘记了一些选项,它们也可以帮助您。只需浏览优化工具箱中的所有选项' optimset看看他们是否可以帮助你。

    如果所有这些都无济于事,您真的必须切换优化器。鉴于 fmincon是 MATLAB 优化工具箱的骄傲和喜悦,确实没有比这更好的现成工具了,您必须到别处搜索。

    TOMLAB是一个非常好的 MATLAB 商业解决方案。如果您不介意使用 C 或 C++...还有 SNOPT (这是 TOMLAB/SNOPT 的基础)。您可以在 GSL 中尝试很多东西(虽然我在那里没有看到任何像 SNOPT 那样先进的东西......)。

    我不知道您使用的是哪个版本的 MATLAB,但我知道在 R2009b(可能还有以后)中, fmincon对某些类型的问题有一些真正的弱点。我知道这个 很好 ,因为我曾经因为它输掉了一个非常负盛名的比赛( GTOC)。结果证明我们的方法与获胜者的方法完全相同,除了他们可以访问 SNOPT,这使得他们的几百万变量优化问题在几次迭代中收敛,而 fmincon无论我们尝试过什么(相信我, 我们尝试过 ),根本无法收敛。直到今天,我仍然不知道为什么会发生这种情况,但是当我可以访问 SNOPT 时,我自己验证了这一点。有一次,当我有无限量的时间时,我会找出来并将其报告给 MathWorks。但在那之前......我对 fmincon失去了一点信任:)

    关于matlab - FMINCON 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17062925/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com