commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gilles (JIRA)" <>
Subject [jira] [Commented] (MATH-621) BOBYQA is missing in optimization
Date Mon, 15 Aug 2011 12:45:27 GMT


Gilles commented on MATH-621:

Thanks for the work.
However, if I change the "INDEX_OFFSET" constant (setting it back to "1"), the tests fail.
I see that you hard-coded the offset in most places instead of using "INDEX_OFFSET". I still
think that this place-holder would be useful to keep track of places where the index variables
might have been set to fit with the Fortran 1-based counting... Don't you?

The perl script has damaged the "for loop" intendation
Sorry, I didn't see that. But that's easy to fix. I'll do it after the issue with INDEX_OFFSET
is settled.

n, npt and nptm should be global variables and not set separately
in each method
Yes, I agree. But there are probably many other variables for which this is true ("zmat",
"bmat", etc).

"System generated locals": Declare variables in the scope they are needed [...]
Agreed, of course. I had started to do that mainly with "d__1"; then there are many cases
where the same variable was reused whereas we would prefer to create yet another one with
a more explicit name.

testDiagonalRosen() is a copy/paste leftover from CMAES, should be removed
OK, I'll do it in the next commit.

We should shink about removing rescue as proposed by Mike Powell.
I'm all for anything that leads to removing unnecessary lines of code :)
If you are indeed confident that, in most cases, the added complexity is not worth it, I'll
just delete it.

> 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