【问题标题】:LM algorithm using EJML使用 EJML 的 LM 算法
【发布时间】:2016-07-09 04:37:27
【问题描述】:

我尝试使用 EJML wiki 中的示例,我们使用 Levenberg Marquardt 优化source code here

我将它与.Net version 进行比较,我们可以在其中提供函数模型参数。

例如:a*x^2+b*x+c,我们可以将模型的所有参数作为输入。

但是,对于 EJML LM 代码,我看不到在哪里可以提供这些模型参数。

我在下面粘贴了我如何使用 LM EJML 类:

public class Main {
    public static void main(String[] args) {
        LevenbergMarquardt lm = new LevenbergMarquardt(new LevenbergMarquardt.Function() {

            @Override
            public void compute(DenseMatrix64F param, DenseMatrix64F x, DenseMatrix64F y) {
                // TODO Auto-generated method stub
                System.out.println("param:");
                param.print();
                System.out.println("X:");
                x.print();
                //y=a*x^2+b*x+c
                for (int i = 0; i < x.numRows; i++) {
                    double xx = x.get(i, 0);
                    y.set(i, 0, param.get(0, 0) * xx * xx + 
                        param.get(1, 0) * xx + param.get(2, 0));
                }
                System.out.println("Y:");
                y.print();
            }
        });
        //Seed inital parameters
        lm.optimize(new DenseMatrix64F(new double[][]{{1}, {1}, {1}}),
                new DenseMatrix64F(new double[][]{{0.1975}, {0.5084}, {0.7353}, {0.9706},
                        {1.1891}}), new DenseMatrix64F(new double[][]{{-0.0126}, {0.2311}, 
                        {0.4412}, {1.0210}, {1.1891}}));    
    }
}

那么我怎样才能给出这些模型参数呢?

【问题讨论】:

    标签: java levenberg-marquardt ejml


    【解决方案1】:

    您可能想结帐DDogleg。它包含一个更强大的 LM 求解器,并在后台使用 EJML。您在 EJML 网站上找到的 LM 求解器旨在作为如何使用 EJML 的示例,并跳过了一些细节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 2014-03-02
      • 2021-04-04
      • 1970-01-01
      • 2023-03-22
      • 2018-11-26
      相关资源
      最近更新 更多