Fortran 90 中的优化例程
我正在 Windows 7 机器上使用 gfortran 编译器在 Fortran 90 中进行(尝试进行)数值优化。我有一个由其他人预先编写的函数,在传入大量参数(总共约 60 个参数)的情况下,它返回函数的对数似然。我正在尝试复制某人的结果,所以我知道最终参数值,但我要尝试重新估计它们,并最终扩展他们的模型并使用不同的数据。我一直在尝试 此处 提供的 uobyqa.f90 例程,但效果不是特别成功到目前为止。
我的问题是:首先,对于具有大量参数(超过 60 个)的优化问题,有人可以建议最好的免费例程吗?导数不可用,并且进行数值估计的成本很高,因此首先尝试 uobyqa 例程。另外,实施并行化对解决这个问题有很大帮助吗?如果是这样,有人可以建议一个已经使用 openmp 实现并行化的优化例程吗?
谢谢!
I am doing (trying to do) numerical optimization in Fortran 90, on a Windows 7 machine with the gfortran compiler. I have a function, pre-written by someone else, which returns the loglikelihood of a function, given a large set of parameters (about 60 parameters in total) passed in. I am trying to replicate someone's results, so I know the final parameter values, but I was to try and re-estimate them and, eventually, extend their model and use different data. I've been trying the uobyqa.f90 routine available here, which has not been particularly successful thus far.
My questions are: First, for an optimization problem with a large number of parameters (over 60), can anyone suggest the best freely available routine? Derivatives are not available, and would be costly to estimate numerically, hence trying the uobyqa routine first. Also, would implementing parallelization aid significantly in solving this problem? And, if so, could anyone suggest an optimization routine that already implements parallelization using openmp?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我对具体的优化策略没有什么好的建议,但是 NLopt 包有一些无导数优化器,可以处理大量变量。值得一看。我发现 Fortran 界面非常易于使用。
I don't have a good suggestion for a specific optimization strategy, but the NLopt package has a few derivative-free optimizers that can handle larger numbers of variables. Worth checking out. I've found the Fortran interface to be very easy to use.
首先对这个问题进行常规(已发表的学术)文献检索。
也许尝试将“LAPACK”与其他搜索词(例如“optimization”、“uobyqa”等)一起添加,以查看其他方的相关工作。
Do a regular (published academic) literature search on this question first.
Maybe try including "LAPACK" with your other search terms (e.g. "optimization", "uobyqa", etc) to see relavant work by other parties.