[Scipy-svn] r3193 - trunk/Lib/optimize

scipy-svn at scipy.org scipy-svn at scipy.org
Thu Jul 26 03:27:46 EDT 2007


Author: dmitrey.kroshko
Date: 2007-07-26 02:27:18 -0500 (Thu, 26 Jul 2007)
New Revision: 3193

Modified:
   trunk/Lib/optimize/tnc.py
Log:
HUGE_VAL was replaced by inf


Modified: trunk/Lib/optimize/tnc.py
===================================================================
--- trunk/Lib/optimize/tnc.py	2007-07-26 05:06:50 UTC (rev 3192)
+++ trunk/Lib/optimize/tnc.py	2007-07-26 07:27:18 UTC (rev 3193)
@@ -32,7 +32,7 @@
 (as a list of values); or None, to abort the minimization.
 """
 from scipy.optimize import moduleTNC
-from numpy import asarray
+from numpy import asarray, inf
 
 MSG_NONE = 0 # No messages
 MSG_ITER = 1 # One line per iteration
@@ -50,9 +50,6 @@
         MSG_ALL  : "All messages"
 }
 
-HUGE_VAL=1e200*1e200 # No standard representation of Infinity in Python 2.3.3
-               # FIXME: can we use inf now that we have numpy and IEEE floats?
-
 INFEASIBLE   = -1 # Infeasible (low > up)
 LOCALMINIMUM =  0 # Local minima reach (|pg| ~= 0)
 FCONVERGED   =  1 # Converged (|f_n-f_(n-1)| ~= 0)
@@ -101,7 +98,7 @@
     args      : arguments to pass to function
     approx_grad : if true, approximate the gradient numerically
     bounds    : a list of (min, max) pairs for each element in x, defining
-                the bounds on that parameter. Use None for one of min or max
+                the bounds on that parameter. Use None or +/-inf for one of min or max
                 when there is no bound in that direction
     scale     : scaling factors to apply to each variable (a list of floats)
                 if None, the factors are up-low for interval bounded variables
@@ -199,8 +196,6 @@
 
     """
     low, up   : the bounds (lists of floats)
-                set low[i] to -HUGE_VAL to remove the lower bound
-                set up[i] to HUGE_VAL to remove the upper bound
                 if low == None, the lower bounds are removed.
                 if up == None, the upper bounds are removed.
                 low and up defaults to None
@@ -208,15 +203,15 @@
     low = [0]*n
     up = [0]*n
     for i in range(n):
-        if bounds[i] is None: l, u = -HUGE_VAL, HUGE_VAL
+        if bounds[i] is None: l, u = -inf, inf
         else:
             l,u = bounds[i]
             if l is None:
-                low[i] = -HUGE_VAL
+                low[i] = -inf
             else:
                 low[i] = l
             if u is None:
-                up[i] = HUGE_VAL
+                up[i] = inf
             else:
                 up[i] = u
 
@@ -270,7 +265,7 @@
         dif[1] = 200.0*(x[1]-pow(x[0],2))
         dif[0] = -2.0*(x[0]*(dif[1]-1.0)+1.0)
         return f, dif
-    tests.append ((test1fg, [-2,1], ([-HUGE_VAL, None], [-1.5, None]), [1,1]))
+    tests.append ((test1fg, [-2,1], ([-inf, None], [-1.5, None]), [1,1]))
 
     def test2fg(x):
         f = 100.0*pow((x[1]-pow(x[0],2)),2)+pow(1.0-x[0],2)
@@ -278,7 +273,7 @@
         dif[1] = 200.0*(x[1]-pow(x[0],2))
         dif[0] = -2.0*(x[0]*(dif[1]-1.0)+1.0)
         return f, dif
-    tests.append ((test2fg, [-2,1], ([-HUGE_VAL, None], [1.5,None]), [-1.2210262419616387,1.5]))
+    tests.append ((test2fg, [-2,1], ([-inf, None], [1.5,None]), [-1.2210262419616387,1.5]))
 
     def test3fg(x):
         f = x[1]+pow(x[1]-x[0],2)*1.0e-5
@@ -286,7 +281,7 @@
         dif[0] = -2.0*(x[1]-x[0])*1.0e-5
         dif[1] = 1.0-dif[0]
         return f, dif
-    tests.append ((test3fg, asarray([10,1]), ([-HUGE_VAL, 0.0], None), [0,0]))
+    tests.append ((test3fg, asarray([10,1]), ([-inf, 0.0], None), [0,0]))
 
     def test4fg(x):
         f = pow(x[0]+1.0,3)/3.0+x[1]




More information about the Scipy-svn mailing list