【问题标题】:Julia optimization reaching maximum number of iterationsJulia 优化达到最大迭代次数
【发布时间】:2021-02-22 16:41:18
【问题描述】:

我有一个(相对)简单的函数,我想最小化 Julia 中的 10 多个参数。定义参数列表params和函数example_func,然后使用Optim.jl包:

r = optimize(x->example_func(x, J, K, G), params, NelderMead())

对于某些参数值,它很好地收敛。但是,对于某些参数值,我收到以下错误消息:

* Status: failure (reached maximum number of iterations)

* Candidate solution
  Final objective value:     -1.148303e+00

* Found with
  Algorithm:     Nelder-Mead

* Convergence measures
   √(Σ(yᵢ-ȳ)²)/n ≰ 1.0e-08

* Work counters
   Seconds run:   3  (vs limit Inf)
   Iterations:    1000
   f(x) calls:    1391

我无法显示函数的显式形式。

我的问题是是否有更好的方法来最小化多个参数上的一些通用函数以确保收敛?我可以增加 Optim.jl 中的最大迭代次数吗?在 Julia 中是否有比 Optim.jl 更好的方法来执行此任务?

【问题讨论】:

  • 如果你不能显示函数的显式形式,那么我认为是否有更好的方法来找到最小值没有答案。保证任意输入的优化问题收敛是对halting problem的重述。

标签: optimization julia minimization


【解决方案1】:

我的问题是,是否有更好的方法可以在多个参数上最小化一些通用函数以确保收敛?

根据 PaSTE 的评论,对于通用功能无法回答此问题。

我可以增加 Optim.jl 中的最大迭代次数吗?

是的,请参阅docs 中的iterations 选项。

在 Julia 中是否有比 Optim.jl 更好的方法来执行此任务?

这取决于你的问题。 Optim.jl 不是一种方法,它是一个提供各种算法来完成这项工作的包。你都试过了吗?否则,还有其他需要注意的包,例如 BlackBoxOptim.jl、Convex.jl、Evolutionary.jl、GeneticAlgorithms.jl 等等。如果没有您提供的更多信息,无法更好地指导您。

【讨论】:

    猜你喜欢
    • 2019-12-04
    • 2020-06-20
    • 2018-02-12
    • 2018-11-16
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多