Details

    • Type: New Feature New Feature
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 3.0
    • Fix Version/s: 4.0
    • Labels:
      None

      Description

      During experiments with space flight trajectory optimizations I recently
      observed, that the direct optimization algorithm BOBYQA
      http://plato.asu.edu/ftp/other_software/bobyqa.zip
      from Mike Powell is significantly better than the simple Powell algorithm
      already in commons.math. It uses significantly lower function calls and is
      more reliable for high dimensional problems. You can replace CMA-ES in many
      more application cases by BOBYQA than by the simple Powell optimizer.
      I would like to contribute a Java port of the algorithm.
      I maintained the structure of the original FORTRAN code, so the
      code is fast but not very nice.

      License status: Michael Powell has sent the agreement via snail mail

      • it hasn't arrived yet.

      Progress: The attached patch relative to the trunk contains both the
      optimizer and the related unit tests - which are all green now.

      Performance:
      Performance difference (number of function evaluations)
      PowellOptimizer / BOBYQA for different test functions (taken from
      the unit test of BOBYQA, dimension=13 for most of the
      tests.

      Rosen = 9350 / 1283
      MinusElli = 118 / 59
      Elli = 223 / 58
      ElliRotated = 8626 / 1379
      Cigar = 353 / 60
      TwoAxes = 223 / 66
      CigTab = 362 / 60
      Sphere = 223 / 58
      Tablet = 223 / 58
      DiffPow = 421 / 928
      SsDiffPow = 614 / 219
      Ackley = 757 / 97
      Rastrigin = 340 / 64

      The number for DiffPow should be discussed with Michael Powell,
      I will send him the details.

      Open Problems

      • Checkstyle violations[1] because of the original Fortran source:
        • Original method comments were copied: Javadoc standard documentation should be added, but the original documentation should stay (as a reference to what the original intended behaviour was) untouched until we are sure that the code behaves as expected.
        • Multiple variable declarations per line.
        • "goto" conversions:
          • "goto"s not convertible in loops were translated into a finite automaton (switch statement)
          • "no default in switch"
          • "fall through from previous case in switch"
      • Unexplored code paths: "throw" statements have been introduced in the code. Each should be triggered by at least one unit test. They are currently commented out in provision of the 3.0 release (cf. MATH-712) but should be re-enabled afterwards.

      [1] Once the violations are solved, the following lines should be removed from the source file:

      • // CHECKSTYLE: stop all
      • //CHECKSTYLE: resume all
      1. BOBYQA.math.patch
        158 kB
        Dr. Dietmar Wolz
      2. BOBYQA.v02.math.patch
        158 kB
        Dr. Dietmar Wolz
      3. bobyqa.zip
        39 kB
        Dr. Dietmar Wolz
      4. bobyqav0.3.zip
        39 kB
        Dr. Dietmar Wolz
      5. bobyqaoptimizer0.4.zip
        129 kB
        Dr. Dietmar Wolz
      6. bobyqa_convert.pl
        0.8 kB
        Gilles
      7. BOBYQAOptimizer0.4.zip
        26 kB
        Dr. Dietmar Wolz
      8. BOBYQAOptimizer.java.patch
        3 kB
        Dr. Dietmar Wolz

        Issue Links

          Activity

          Gilles made changes -
          Link This issue relates to MATH-1057 [ MATH-1057 ]
          Luc Maisonobe made changes -
          Fix Version/s 4.0 [ 12317577 ]
          Fix Version/s 3.2 [ 12322545 ]
          Gilles made changes -
          Fix Version/s 3.2 [ 12322545 ]
          Fix Version/s 3.1 [ 12317576 ]
          Gilles made changes -
          Original Estimate 8h [ 28800 ]
          Remaining Estimate 8h [ 28800 ]
          Fix Version/s 3.1 [ 12317576 ]
          Fix Version/s 3.0 [ 12314824 ]
          Gilles made changes -
          Description During experiments with space flight trajectory optimizations I recently
          observed, that the direct optimization algorithm BOBYQA
          http://plato.asu.edu/ftp/other_software/bobyqa.zip
          from Mike Powell is significantly better than the simple Powell algorithm
          already in commons.math. It uses significantly lower function calls and is
          more reliable for high dimensional problems. You can replace CMA-ES in many
          more application cases by BOBYQA than by the simple Powell optimizer.
          I would like to contribute a Java port of the algorithm.
          I maintained the structure of the original FORTRAN code, so the
          code is fast but not very nice.

          License status: Michael Powell has sent the agreement via snail mail
          - it hasn't arrived yet.

          Progress: The attached patch relative to the trunk contains both the
          optimizer and the related unit tests - which are all green now.

          Performance:
          Performance difference (number of function evaluations)
          PowellOptimizer / BOBYQA for different test functions (taken from
          the unit test of BOBYQA, dimension=13 for most of the
          tests.

          Rosen = 9350 / 1283
          MinusElli = 118 / 59
          Elli = 223 / 58
          ElliRotated = 8626 / 1379
          Cigar = 353 / 60
          TwoAxes = 223 / 66
          CigTab = 362 / 60
          Sphere = 223 / 58
          Tablet = 223 / 58
          DiffPow = 421 / 928
          SsDiffPow = 614 / 219
          Ackley = 757 / 97
          Rastrigin = 340 / 64

          The number for DiffPow should be dicussed with Michael Powell,
          I will send him the details.

          Open Problems:

          Some checkstyle violations because of the original Fortran source:

          - Original method comments were copied - doesn't follow javadoc standard
          - Multiple variable declarations in one line as in the original source
          - Problems related to "goto" conversions:
            "gotos" not convertible in loops were transated into a finite automata (switch statement)
          "no default in switch"
          "fall through from previos case in switch"
          which usually are bad style make no sense here.

          {color: red} Once these checkstyle violations are solved, the following lines should be removed from the source file{color}
          * {{// CHECKSTYLE: stop all}}
          * {{//CHECKSTYLE: resume all}}
          During experiments with space flight trajectory optimizations I recently
          observed, that the direct optimization algorithm BOBYQA
          http://plato.asu.edu/ftp/other_software/bobyqa.zip
          from Mike Powell is significantly better than the simple Powell algorithm
          already in commons.math. It uses significantly lower function calls and is
          more reliable for high dimensional problems. You can replace CMA-ES in many
          more application cases by BOBYQA than by the simple Powell optimizer.
          I would like to contribute a Java port of the algorithm.
          I maintained the structure of the original FORTRAN code, so the
          code is fast but not very nice.

          License status: Michael Powell has sent the agreement via snail mail
          - it hasn't arrived yet.

          Progress: The attached patch relative to the trunk contains both the
          optimizer and the related unit tests - which are all green now.

          Performance:
          Performance difference (number of function evaluations)
          PowellOptimizer / BOBYQA for different test functions (taken from
          the unit test of BOBYQA, dimension=13 for most of the
          tests.

          Rosen = 9350 / 1283
          MinusElli = 118 / 59
          Elli = 223 / 58
          ElliRotated = 8626 / 1379
          Cigar = 353 / 60
          TwoAxes = 223 / 66
          CigTab = 362 / 60
          Sphere = 223 / 58
          Tablet = 223 / 58
          DiffPow = 421 / 928
          SsDiffPow = 614 / 219
          Ackley = 757 / 97
          Rastrigin = 340 / 64

          The number for DiffPow should be discussed with Michael Powell,
          I will send him the details.


          h3. Open Problems

          * Checkstyle violations[1] because of the original Fortran source:
          ** Original method comments were copied: Javadoc standard documentation should be added, but the original documentation should stay (as a reference to what the original intended behaviour was) untouched until we are sure that the code behaves as expected.
          ** Multiple variable declarations per line.
          ** "goto" conversions:
          *** "goto"s not convertible in loops were translated into a finite automaton (switch statement)
          *** "no default in switch"
          *** "fall through from previous case in switch"
          * Unexplored code paths: "throw" statements have been introduced in the code. Each should be triggered by at least one unit test. They are currently commented out in provision of the 3.0 release (cf. MATH-712) but should be re-enabled afterwards.

          [1] Once the violations are solved, the following lines should be removed from the source file:
          * {{// CHECKSTYLE: stop all}}
          * {{//CHECKSTYLE: resume all}}
          Sébastien Brisard made changes -
          Description During experiments with space flight trajectory optimizations I recently
          observed, that the direct optimization algorithm BOBYQA
          http://plato.asu.edu/ftp/other_software/bobyqa.zip
          from Mike Powell is significantly better than the simple Powell algorithm
          already in commons.math. It uses significantly lower function calls and is
          more reliable for high dimensional problems. You can replace CMA-ES in many
          more application cases by BOBYQA than by the simple Powell optimizer.
          I would like to contribute a Java port of the algorithm.
          I maintained the structure of the original FORTRAN code, so the
          code is fast but not very nice.

          License status: Michael Powell has sent the agreement via snail mail
          - it hasn't arrived yet.

          Progress: The attached patch relative to the trunk contains both the
          optimizer and the related unit tests - which are all green now.

          Performance:
          Performance difference (number of function evaluations)
          PowellOptimizer / BOBYQA for different test functions (taken from
          the unit test of BOBYQA, dimension=13 for most of the
          tests.

          Rosen = 9350 / 1283
          MinusElli = 118 / 59
          Elli = 223 / 58
          ElliRotated = 8626 / 1379
          Cigar = 353 / 60
          TwoAxes = 223 / 66
          CigTab = 362 / 60
          Sphere = 223 / 58
          Tablet = 223 / 58
          DiffPow = 421 / 928
          SsDiffPow = 614 / 219
          Ackley = 757 / 97
          Rastrigin = 340 / 64

          The number for DiffPow should be dicussed with Michael Powell,
          I will send him the details.

          Open Problems:

          Some checkstyle violations because of the original Fortran source:

          - Original method comments were copied - doesn't follow javadoc standard
          - Multiple variable declarations in one line as in the original source
          - Problems related to "goto" conversions:
            "gotos" not convertible in loops were transated into a finite automata (switch statement)
          "no default in switch"
          "fall through from previos case in switch"
          which usually are bad style make no sense here.
          During experiments with space flight trajectory optimizations I recently
          observed, that the direct optimization algorithm BOBYQA
          http://plato.asu.edu/ftp/other_software/bobyqa.zip
          from Mike Powell is significantly better than the simple Powell algorithm
          already in commons.math. It uses significantly lower function calls and is
          more reliable for high dimensional problems. You can replace CMA-ES in many
          more application cases by BOBYQA than by the simple Powell optimizer.
          I would like to contribute a Java port of the algorithm.
          I maintained the structure of the original FORTRAN code, so the
          code is fast but not very nice.

          License status: Michael Powell has sent the agreement via snail mail
          - it hasn't arrived yet.

          Progress: The attached patch relative to the trunk contains both the
          optimizer and the related unit tests - which are all green now.

          Performance:
          Performance difference (number of function evaluations)
          PowellOptimizer / BOBYQA for different test functions (taken from
          the unit test of BOBYQA, dimension=13 for most of the
          tests.

          Rosen = 9350 / 1283
          MinusElli = 118 / 59
          Elli = 223 / 58
          ElliRotated = 8626 / 1379
          Cigar = 353 / 60
          TwoAxes = 223 / 66
          CigTab = 362 / 60
          Sphere = 223 / 58
          Tablet = 223 / 58
          DiffPow = 421 / 928
          SsDiffPow = 614 / 219
          Ackley = 757 / 97
          Rastrigin = 340 / 64

          The number for DiffPow should be dicussed with Michael Powell,
          I will send him the details.

          Open Problems:

          Some checkstyle violations because of the original Fortran source:

          - Original method comments were copied - doesn't follow javadoc standard
          - Multiple variable declarations in one line as in the original source
          - Problems related to "goto" conversions:
            "gotos" not convertible in loops were transated into a finite automata (switch statement)
          "no default in switch"
          "fall through from previos case in switch"
          which usually are bad style make no sense here.

          {color: red} Once these checkstyle violations are solved, the following lines should be removed from the source file{color}
          * {{// CHECKSTYLE: stop all}}
          * {{//CHECKSTYLE: resume all}}
          Dr. Dietmar Wolz made changes -
          Attachment BOBYQAOptimizer.java.patch [ 12490769 ]
          Dr. Dietmar Wolz made changes -
          Attachment BOBYQAOptimizer0.4.zip [ 12490422 ]
          Gilles made changes -
          Attachment bobyqa_convert.pl [ 12490335 ]
          Dr. Dietmar Wolz made changes -
          Attachment bobyqaoptimizer0.4.zip [ 12488351 ]
          Luc Maisonobe made changes -
          Link This issue incorporates MATH-196 [ MATH-196 ]
          Dr. Dietmar Wolz made changes -
          Attachment bobyqav0.3.zip [ 12486742 ]
          Dr. Dietmar Wolz made changes -
          Attachment bobyqa.zip [ 12486645 ]
          Dr. Dietmar Wolz made changes -
          Attachment BOBYQA.v02.math.patch [ 12486611 ]
          Dr. Dietmar Wolz made changes -
          Field Original Value New Value
          Attachment BOBYQA.math.patch [ 12486585 ]
          Dr. Dietmar Wolz created issue -

            People

            • Assignee:
              Unassigned
              Reporter:
              Dr. Dietmar Wolz
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:

                Development