通常,Apache Commons
Math是开始使用Java进行数值计算的好地方。通过示例,通过查看API文档以及各种类和方法的单元测试源代码,可以最佳地了解用法。
正如您已经指出的,不建议使用用户指南中引用的优化类。仍然可以调用它们,但是最终它们当然会从库中淘汰。由于我不知道的原因,正在进行的优化开发现在是在
优化中 而不是 优化 子程序包中进行的。
为了最小化单变量(局部最优), Apache Commons Math 提供了 Brent
方法的实现。在的单元测试中概述了用法
BrentOptimizer,我从中复制了此摘录:
@Testpublic void testSinMin() { UnivariateFunction f = new Sin(); UnivariateOptimizer optimizer = new BrentOptimizer(1e-10, 1e-14); Assert.assertEquals(3 * Math.PI / 2, optimizer.optimize(new Maxeval(200), new UnivariateObjectiveFunction(f), GoalType.MINIMIZE, new SearchInterval(4, 5)).getPoint(), 1e-8); Assert.assertTrue(optimizer.getevaluations() <= 50); Assert.assertEquals(200, optimizer.getMaxevaluations()); ...}


