Hi Gilles,

Le 15/07/2011 15:05, Gilles (JIRA) a écrit :

     [ 
https://issues.apache.org/jira/browse/MATH-621?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13065905#comment-13065905
 ]

Gilles commented on MATH-621:
-----------------------------

Oops, this is indeed FORTRAN code in Java clothes. There is quite _a lot_ of 
work to make it look like Java... :(
Personally, I'd rather not commit it as is, because it is unmaintainable (it 
does not match anything in CM in terms of design and programming style).

Yes, but committing it this as is with an objective to "javaize" it would allow to:

 - have a reference test harness to check changes do not introduce
   regressions
 - allow non-committer to help by providing small patches instead
   of always reworking the complete code (Dietmar is not a committer
   yet)
 - allow monitor what changes are introduced slightly
 - avoid delaying to much the availability of the feature so most
   people can test it
 - avoid delaying release to much as once the API is fixed (and in
   fact it depends on the optimization framework which is already
   defined), the implementation can be changed afterwards in 3.1

I agree the last point can lead to the code never been changed at all, but the other points are important too.

best regards,
Luc



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

   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 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: http://www.atlassian.com/software/jira



Reply via email to