我正在寻找一种简单的方法来用Java完成MATLAB的fminsearch()所做的工作。我不需要像fminsearch那样通用,就我而言,我只想找到单变量非线性函数的最小值(函数和参数值最小)。我不知道该函数的解析表达式,但我可以轻松对其进行评估。
您是否知道执行此操作的库,或者我可以重新实现的简单算法?
注意:我看到apache的通用方法似乎有这样的东西(UnivariateOptimizer),但是大多数方法似乎已被弃用,我找不到如何使用它的很好的解释。也欢迎与此相关的任何提示。
谢谢!
通常,Apache Commons
Math
是开始使用Java进行数值计算的好地方。通过示例,通过查看API文档以及各种类和方法的单元测试源代码,可以最佳地了解用法。
正如您已经指出的,不建议使用用户指南中引用的优化类。仍然可以调用它们,但是最终它们当然会从库中淘汰。由于我不知道的原因,正在进行的优化开发现在是在
优化中 而不是 优化 子程序包中进行的。
为了最小化单变量(局部最优), Apache Commons Math 提供了 Brent
方法的实现。在的单元测试中概述了用法BrentOptimizer
,我从中复制了此摘录:
@Test
public 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());
...
}
主要内容:语法,示例当对真实世界数据建模进行回归分析时,我们观察到模型的方程很少是给出线性图的线性方程。 大多数情况下,现实世界数据模型的方程式涉及更高程度的数学函数,如或函数的指数。 在这种情况下,模型的曲线给出了曲线而不是线性。线性和非线性回归的目标是调整模型参数的值以找到最接近您的数据的线或曲线。当找到这些值时,我们才能够准确估计响应变量。 在最小二乘回归中,我们建立了一个回归模型,不同点与回归曲线的垂直距离的
在对真实世界数据进行建模以进行回归分析时,我们观察到模型方程很少是给出线性图的线性方程。 大多数情况下,现实世界数据模型的方程涉及更高程度的数学函数,如指数为3或sin函数。 在这种情况下,模型的图给出曲线而不是线。 线性回归和非线性回归的目标是调整模型参数的值,以找到最接近数据的直线或曲线。 在找到这些值后,我们将能够以良好的准确度估计响应变量。 在最小二乘回归中,我们建立一个回归模型,其中不同
如何确定流中对象的不同属性的最小值和最大值?我已经看到了关于如何得到同一变量的最小值和最大值的答案。我还看到了关于如何使用特定对象属性(例如)获取最小值或最大值的答案。但是我如何获得流中所有“x”属性的最小值和所有“y”属性的最大值呢? 假设我有一个Java
我试图用最小二乘法将实验数据拟合成一个三次多项式方程。我有两个自变量和一个因变量,这使得它是一个非线性拟合。我使用函数“fitnlm”和“lsqcurvefit”计算了系数,这两个函数都建议用于非线性回归拟合。我从两个函数中获得了不同的系数值,尽管我输入了相同的初始系数(猜测)值。请告知两个函数中哪一个更好,以及我可以信任的系数。在使用lsqcurvefit时,如何检查均方根误差的值?非常感谢您的
问题内容: 在Java中,何时应使用静态非最终变量? 例如 显然,这里我们不是在谈论常量。 根据我的经验,我经常在使用单例时对它们进行辩护,但后来我最终需要拥有多个实例,这使我感到非常头痛和重构。 似乎很少在实践中使用它们。你怎么看? 问题答案: 统计信息收集可以使用非最终变量,例如,计算创建的实例数。另一方面,对于这种情况,您可能还是要使用etc,这时可能是最终的。另外,如果您要收集多个统计信息
本文向大家介绍python实现简单的单变量线性回归方法,包括了python实现简单的单变量线性回归方法的使用技巧和注意事项,需要的朋友参考一下 线性回归是机器学习中的基础算法之一,属于监督学习中的回归问题,算法的关键在于如何最小化代价函数,通常使用梯度下降或者正规方程(最小二乘法),在这里对算法原理不过多赘述,建议看吴恩达发布在斯坦福大学上的课程进行入门学习。 这里主要使用python的sklea