Uploaded image for project: 'Commons Math'
  1. Commons Math
  2. MATH-1144

LevenbergMarquardtOptimizer does not allow to change current point during optimization



    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Implemented
    • Affects Version/s: 3.3
    • Fix Version/s: 3.4
    • Labels:


      It's a regression to commons-math v2.0.

      Our software uses LevenbergMarquardtOptimizer for surface fitting by sampled points. Our parameterization of the surface we are fitting may be unconstrained, for example it is enough to have only 4 variables to represent cylinder axis and origin (using euler angles and origin distance), but to simplify derivative computation we instead use 6 parameter representation (vector + point). To make sure that the we constrain our search to valid vectors and origins, we need to renormalize and update surface parameters on every step of optimization.

      Please see this article for details of 3d surface fitting and parameter normalization:

      Attached surface_fitting_tests.zip package with 2 unit tests that reproduce this problem.
      Contents of package:
      1) simple - simple single file test that tests only in/out side effect of patched library
      2) full - complex test that fits cylinder using sampled points (uses cylinder, fit, utils sources)
      3) lib - contains commons-math3 jar libraries: v3.3 and v3.3A1 (patched). There are also library sources.
      4) patch - contains SVN patch file

      To reproduce:
      Run SurfaceFitterFullTest.java and SurfaceFitterSimpleTest.java tests with commons-math3-3.3.jar OR commons-math3-3.3A1.jar libraries.


        1. LevenbergMarquardtOptimizer.java.patch
          1 kB
          Olexiy Movchan
        2. surface_fitting_tests.zip.001
          10.00 MB
          Olexiy Movchan
        3. surface_fitting_tests.zip.002
          2.15 MB
          Olexiy Movchan
        4. MATH-1144.patch
          18 kB
          Gilles Sadowski
        5. SurfaceFitterSimpleTest.java
          5 kB
          Olexiy Movchan



            • Assignee:
              omovchan Olexiy Movchan
            • Votes:
              0 Vote for this issue
              2 Start watching this issue


              • Created: