[ https://issues.apache.org/jira/browse/MATH-621?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13098060#comment-13098060 ]
Nigel Goodwin edited comment on MATH-621 at 9/6/11 5:49 PM: ------------------------------------------------------------ let me think. Assume hq is a lower triangular matrix, stored in order of columns. So, using a 1-index, we have hq(1) is mat(1,1) hq(3) is mat(2,2) hq(6) is mat(3,3) etc. So in 1-index, the diagonal element of the j'th row is {code]h((j + j*j)/2){/code} as in the Fortran So in 0-index, we have hq(0) is mat(0,0) hq(2) is mat(1,1) hq(5) is mat(2,2) So the diagonal element is given by ((j+1) + (j + 1) * ( j+ 1))/2 - 1 and I think (j + j*j)/2 is incorrect. I'm pretty sure about this - I do a lot of work with triangular matrices. Try another test - look at the last diagonal element - when j is n - 1, then the index is (n + n*n)/2 -1 which is n*(n+1)/2 - 1, which is compatible with the dimension when declared, n*np/2. was (Author: essence): let me think. Assume hq is a lower triangular matrix, stored in order of columns. So, using a 1-index, we have hq(1) is mat(1,1) hq(3) is mat(2,2) hq(6) is mat(3,3) etc. So in 1-index, the diagonal element of the j'th row is {code]h((j + j*j)/2){code} as in the Fortran So in 0-index, we have hq(0) is mat(0,0) hq(2) is mat(1,1) hq(5) is mat(2,2) So the diagonal element is given by ((j+1) + (j + 1) * ( j+ 1))/2 - 1 and I think (j + j*j)/2 is incorrect. I'm pretty sure about this - I do a lot of work with triangular matrices. Try another test - look at the last diagonal element - when j is n - 1, then the index is (n + n*n)/2 -1 which is n*(n+1)/2 - 1, which is compatible with the dimension when declared, n*np/2. > 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 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