问题描述
我有一个(相对)简单的函数,我想在 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 更好的方法来执行此任务?
解决方法
我的问题是是否有更好的方法来最小化多个参数上的一些通用函数以确保收敛?
根据 PaSTE 的评论,这不能用通用函数来回答。
我可以在 Optim.jl 中增加最大迭代次数吗?
是的,请参阅 docs 中的 iterations
选项。
在 Julia 中是否有比 Optim.jl 更好的方法来执行此任务?
这取决于您的问题。 Optim.jl 不是一种方法,它是一个包,它提供了多种算法来完成这项工作。你都试过了吗?否则,还有其他软件包需要注意,例如 BlackBoxOptim.jl、Convex.jl、Evolutionary.jl、GeneticAlgorithms.jl 等等。如果没有您提供更多信息,就无法更好地指导您。