commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gilles (Updated) (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (MATH-621) BOBYQA is missing in optimization
Date Thu, 16 Feb 2012 14:02:59 GMT

     [ https://issues.apache.org/jira/browse/MATH-621?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Gilles updated MATH-621:
------------------------

    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. 


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}}


  was:
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}}

    
> BOBYQA is missing in optimization
> ---------------------------------
>
>                 Key: MATH-621
>                 URL: https://issues.apache.org/jira/browse/MATH-621
>             Project: Commons Math
>          Issue Type: New Feature
>    Affects Versions: 3.0
>            Reporter: Dr. Dietmar Wolz
>             Fix For: 3.0
>
>         Attachments: BOBYQA.math.patch, BOBYQA.v02.math.patch, BOBYQAOptimizer.java.patch,
BOBYQAOptimizer0.4.zip, bobyqa.zip, bobyqa_convert.pl, bobyqaoptimizer0.4.zip, bobyqav0.3.zip
>
>   Original Estimate: 8h
>  Remaining Estimate: 8h
>
> 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}}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message