commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dr. Dietmar Wolz (JIRA)" <>
Subject [jira] [Commented] (MATH-621) BOBYQA is missing in optimization
Date Tue, 02 Aug 2011 19:58:27 GMT


Dr. Dietmar Wolz commented on MATH-621:

The code is now fully documented - even the internals of the private functions.
Gilles and me have already removed the main obstacle - the use of pointers und the
nasty huge working area. 
A further refactoring - splitting the private functions into smaller ones - now is much more
Maybe Gilles can give an estimation of the effort?
I started and was a bit frustrated soon since I had to introduce so many global variables,
I felt the
code even lost readability. Now the variables are at least local to the (admittedly large)
I got the feeling that it would be easier to invent something equivalent from scratch describing
algorithm mathematically as a set of matrix operations first - similar as it was done for
Then a clean implementation (maybe starting with a matlab prototype) could be done.
I can perform the second step - but for the first one an active researcher in the field would
be required - a researcher willing to license his work for Apache. As discussed in the mailing
list there are candidates and Luc offered to approach one of them. 

To summarize the opinions so far:
Besides Luc and me everyone seems to favor to keep out BOBYQA from CM. It could be
hosted at Apache Extras, GitHub or SourceForge.
Gilles continues to try to further enhance the code with the aim to make it "suitable" for
inclusion into CM.

Phil Steitz commented on MATH-621:
+1 for this and that we could do here.  The key is to get the code to the point where others
can follow it so they get "inspired" rather than confused and frustrated.

> BOBYQA is missing in optimization
> ---------------------------------
>                 Key: MATH-621
>                 URL:
>             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,,,
>   Original Estimate: 8h
>  Remaining Estimate: 8h
> During experiments with space flight trajectory optimizations I recently
> observed, that the direct optimization algorithm BOBYQA
> 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.

This message is automatically generated by JIRA.
For more information on JIRA, see:


View raw message