You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2011/10/29 13:19:31 UTC

svn commit: r1194874 - in /commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization: BaseMultivariateRealOptimizer.java direct/BaseAbstractScalarOptimizer.java

Author: erans
Date: Sat Oct 29 11:19:30 2011
New Revision: 1194874

URL: http://svn.apache.org/viewvc?rev=1194874&view=rev
Log:
MATH-697
Fixed bug in check that the initial value is within bounds.

Modified:
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/BaseMultivariateRealOptimizer.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/direct/BaseAbstractScalarOptimizer.java

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/BaseMultivariateRealOptimizer.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/BaseMultivariateRealOptimizer.java?rev=1194874&r1=1194873&r2=1194874&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/BaseMultivariateRealOptimizer.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/BaseMultivariateRealOptimizer.java Sat Oct 29 11:19:30 2011
@@ -73,8 +73,10 @@ public interface BaseMultivariateRealOpt
      * if the maximal number of evaluations is exceeded.
      * @throws org.apache.commons.math.exception.NullArgumentException if
      * {@code f}, {@code goalType} or {@code startPoint} is {@code null}.
-     * @throws org.apache.commons.math.exception.OutOfRangeException if any
-     * of the initial values is out of bounds.
+     * @throws org.apache.commons.math.exception.NumberIsTooSmallException if any
+     * of the initial values is less than its lower bound.
+     * @throws org.apache.commons.math.exception.NumberIsTooLargeException if any
+     * of the initial values is greater than its upper bound.
      */
     RealPointValuePair optimize(int maxEval, FUNC f, GoalType goalType,
                                 double[] startPoint,

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/direct/BaseAbstractScalarOptimizer.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/direct/BaseAbstractScalarOptimizer.java?rev=1194874&r1=1194873&r2=1194874&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/direct/BaseAbstractScalarOptimizer.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/direct/BaseAbstractScalarOptimizer.java Sat Oct 29 11:19:30 2011
@@ -22,7 +22,8 @@ import org.apache.commons.math.exception
 import org.apache.commons.math.exception.TooManyEvaluationsException;
 import org.apache.commons.math.exception.NullArgumentException;
 import org.apache.commons.math.exception.DimensionMismatchException;
-import org.apache.commons.math.exception.OutOfRangeException;
+import org.apache.commons.math.exception.NumberIsTooSmallException;
+import org.apache.commons.math.exception.NumberIsTooLargeException;
 import org.apache.commons.math.analysis.MultivariateRealFunction;
 import org.apache.commons.math.optimization.BaseMultivariateRealOptimizer;
 import org.apache.commons.math.optimization.GoalType;
@@ -125,21 +126,28 @@ public abstract class BaseAbstractScalar
             throw new NullArgumentException();
         }
         final int dim = startPoint.length;
-        if (lower != null &&
-            lower.length != dim) {
-            throw new DimensionMismatchException(lower.length, dim);
-        }
-        if (upper != null &&
-            upper.length != dim) {
-            throw new DimensionMismatchException(upper.length, dim);
-        }
-        for (int i = 0; i < dim; i++) {
-            final double v = startPoint[i];
-            final double lo = lower[i];
-            final double hi = upper[i];
-            if (v < lo ||
-                v > hi) {
-                throw new OutOfRangeException(v, lo, hi);
+        if (lower != null) {
+            if (lower.length != dim) {
+                throw new DimensionMismatchException(lower.length, dim);
+            }
+            for (int i = 0; i < dim; i++) {
+                final double v = startPoint[i];
+                final double lo = lower[i];
+                if (v < lo) {
+                    throw new NumberIsTooSmallException(v, lo, true);
+                }
+            }
+        }
+        if (upper != null) {
+            if (upper.length != dim) {
+                throw new DimensionMismatchException(upper.length, dim);
+            }
+            for (int i = 0; i < dim; i++) {
+                final double v = startPoint[i];
+                final double hi = upper[i];
+                if (v > hi) {
+                    throw new NumberIsTooLargeException(v, hi, true);
+                }
             }
         }