You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Gilles (Issue Comment Edited) (JIRA)" <ji...@apache.org> on 2012/02/12 00:49:02 UTC

[jira] [Issue Comment Edited] (MATH-728) Errors in BOBYQAOptimizer when numberOfInterpolationPoints is greater than 2*dim+1

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

Gilles edited comment on MATH-728 at 2/11/12 11:47 PM:
-------------------------------------------------------

Although the bug that triggered this issue is fixed, failures of the unit test still miss an explanation...

The poor performance is to be expected given the current state of the code (e.g. many matrix calculations are done explicitly, with getters and setters, instead of calling methods of the matrix objects).

                
      was (Author: erans):
    Although the bug that triggered this issue is fixed, failures of the unit test are still miss an explanation...

The poor performance is to be expected given the current state of the code (e.g. many matrix calculations are done explicitly, with getters and setters, instead of calling methods of the matrix objects).

                  
> Errors in BOBYQAOptimizer when numberOfInterpolationPoints is greater than 2*dim+1
> ----------------------------------------------------------------------------------
>
>                 Key: MATH-728
>                 URL: https://issues.apache.org/jira/browse/MATH-728
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 3.0
>         Environment: Mac Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-11M3527)
>            Reporter: Bruce A Johnson
>             Fix For: 3.0
>
>
> I've been having trouble getting BOBYQA to minimize a function (actually a non-linear least squares fit) so as one change I increased the number of interpolation points.  It seems that anything larger than 2*dim+1 causes an error (typically at
> line 1662
>                    interpolationPoints.setEntry(nfm, ipt, interpolationPoints.getEntry(ipt, ipt));
> I'm guessing there is an off by one error in the translation from FORTRAN.  Changing the BOBYQAOptimizerTest as follows (increasing number of interpolation points by one) will cause failures.
> Bruce
> Index: src/test/java/org/apache/commons/math/optimization/direct/BOBYQAOptimizerTest.java
> ===================================================================
> --- src/test/java/org/apache/commons/math/optimization/direct/BOBYQAOptimizerTest.java	(revision 1221065)
> +++ src/test/java/org/apache/commons/math/optimization/direct/BOBYQAOptimizerTest.java	(working copy)
> @@ -258,7 +258,7 @@
>  //        RealPointValuePair result = optim.optimize(100000, func, goal, startPoint);
>          final double[] lB = boundaries == null ? null : boundaries[0];
>          final double[] uB = boundaries == null ? null : boundaries[1];
> -        BOBYQAOptimizer optim = new BOBYQAOptimizer(2 * dim + 1);
> +        BOBYQAOptimizer optim = new BOBYQAOptimizer(2 * dim + 2);
>          RealPointValuePair result = optim.optimize(maxEvaluations, func, goal, startPoint, lB, uB);
>  //        System.out.println(func.getClass().getName() + " = " 
>  //              + optim.getEvaluations() + " f(");

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