[Scipy-svn] r3187 - in trunk/Lib/optimize: . tests

scipy-svn@scip... scipy-svn@scip...
Tue Jul 24 09:14:13 CDT 2007


Author: dmitrey.kroshko
Date: 2007-07-24 09:13:43 -0500 (Tue, 24 Jul 2007)
New Revision: 3187

Modified:
   trunk/Lib/optimize/tests/test_optimize.py
   trunk/Lib/optimize/tnc.py
Log:
correct order of tnc return values + bugfix for tnc tests 


Modified: trunk/Lib/optimize/tests/test_optimize.py
===================================================================
--- trunk/Lib/optimize/tests/test_optimize.py	2007-07-24 10:37:50 UTC (rev 3186)
+++ trunk/Lib/optimize/tests/test_optimize.py	2007-07-24 14:13:43 UTC (rev 3187)
@@ -199,7 +199,7 @@
             dif[3] = (180.0*(x[3]-pow(x[2],2))+20.2\
                       *(x[3]-1.0)+19.8*(x[1]-1.0))*1.0e-5
             return f, dif
-        self.tests.append((test38fg, [-3,-1,-3,-1], [(-10,10)]*4, [1]*4))
+        self.tests.append((test38fg, array([-3,-1,-3,-1]), [(-10,10)]*4, [1]*4))
 
         def test45fg(x):
             f = 2.0-x[0]*x[1]*x[2]*x[3]*x[4]/120.0
@@ -220,10 +220,11 @@
             err = "Failed optimization of %s.\n" \
                   "After %d function evaluations, TNC returned: %s.""" % \
                   (fg.__name__, nf, RCSTRINGS[rc])
+        
+        ef = abs(fg(xopt)[0] - fg(x)[0])
+        print "F Error =", ef
+        if ef > 1e-8:
+            raise err
 
-            assert_array_almost_equal(array(x,dtype=float),
-                                      array(xopt,dtype=float),
-                                      err_msg=err)
-
 if __name__ == "__main__":
     NumpyTest().run()

Modified: trunk/Lib/optimize/tnc.py
===================================================================
--- trunk/Lib/optimize/tnc.py	2007-07-24 10:37:50 UTC (rev 3186)
+++ trunk/Lib/optimize/tnc.py	2007-07-24 14:13:43 UTC (rev 3187)
@@ -229,9 +229,10 @@
     if maxfun == None:
         maxfun = max(100, 10*len(x0))
 
-    return moduleTNC.minimize(func_and_grad, x0, low, up, scale, offset,
+    rc, nf, x = moduleTNC.minimize(func_and_grad, x0, low, up, scale, offset,
             messages, maxCGit, maxfun, eta, stepmx, accuracy,
             fmin, ftol, xtol, pgtol, rescale)
+    return x, nf, rc
 
 if __name__ == '__main__':
     # Examples for TNC
@@ -249,7 +250,7 @@
             return f, g
 
         # Optimizer call
-        rc, nf, x = fmin_tnc(function, [-7, 3], bounds=([-10, 1], [10, 10]))
+        x, nf, rc = fmin_tnc(function, [-7, 3], bounds=([-10, 1], [10, 10]))
 
         print "After", nf, "function evaluations, TNC returned:", RCSTRINGS[rc]
         print "x =", x
@@ -333,7 +334,7 @@
 
     def test(fg, x, bounds, xopt):
         print "** Test", fg.__name__
-        rc, nf, x = fmin_tnc(fg, x, bounds=bounds, messages = MSG_NONE, maxfun = 200)
+        x, nf, rc = fmin_tnc(fg, x, bounds=bounds, messages = MSG_NONE, maxfun = 200)
         print "After", nf, "function evaluations, TNC returned:", RCSTRINGS[rc]
         print "x =", x
         print "exact value =", xopt



More information about the Scipy-svn mailing list