0

我会先说这感觉应该很简单......但这对我来说并不完全明显。我正在尝试使用BrentOptimizer来查找函数的局部最小值和最大值。我对这些的周期性有了一个概念,我觉得我应该能够使用BracketFinder来包围最佳值,然后将它发送到BrentOptimizer。需要帮助理解Apache Commons Math BracketFinder

她是文档:http://commons.apache.org/math/api-2.2/org/apache/commons/math/optimization/univariate/BracketFinder.html

因此,对于一个简单的情况下,可以考虑:

f(x) = sin(x) 

我们知道,在π/ 2最大和3PI/2分钟。如果我从零开始并沿着函数移动,我将如何去在Pi/2处寻找那根?这真的归结为构造参数和初始点。是否有任何最佳实践(假设您知道一些关于函数的形状),我可以用这些参数以合理的方式设置这些参数?

感谢

回答

0

你可能已经整理了这一点,现在,但包围方法不期待任何初始点可言,与BracketFinder的意图是要找到一个开始猜测,你应该在你的电话适用于BrentOptimizer。在BracketFinder中应用默认构造函数应该没关系。

具有接收包围点之后,使用抽象基类BaseAbstractUnivariateOptimizer,其中minmaxstartValueBracketFinder采取定义的三个点optimize方法:■getLo(),分别getHi()getMid(),。

BracketFinder实现显然是基于一个在Numerical Recipes发现,在C版的书章节10.1。这可以为您提供更多关于所用括号原则的背景信息。