commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bruce A Johnson (Created) (JIRA)" <j...@apache.org>
Subject [jira] [Created] (MATH-728) Errors in BOBYQAOptimizer when numberOfInterpolationPoints is greater than 2*dim+1
Date Tue, 20 Dec 2011 02:05:33 GMT
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


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

        

Mime
View raw message