Алгоритм LM с использованием EJML

Я пытаюсь использовать пример из вики EJML, где мы используем оптимизацию Левенберга Марквардта исходный код здесь< /а>

Я сравниваю его с этой версией .Net в котором у нас есть возможность задавать параметры модели функции.

Например: 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}}));    
    }
}

Итак, как я могу указать эти параметры модели?


person Valimo Ral    schedule 22.03.2016    source источник


Ответы (1)


Вы можете проверить DDogleg . Он содержит более надежный LM-решатель и использует EJML под капотом. Решатель LM, который вы нашли на веб-сайте EJML, предназначен в качестве примера использования EJML и пропускает несколько деталей.

person lessthanoptimal    schedule 09.01.2017