### Weird error in fmin_l_bfgs_b

Jose Gomez-Dans <jgomezdans <at> gmail.com>

2011-07-01 10:36:48 GMT

Hi,

I'm getting an error in scipy.optimize.fmin_l_bfgs_b, apparently related to the fortran wrapper. This is strange, because exactly the same problem works well with the TNC solver. I have a function that returns both a scalar value (that will be minimised) and the derivative of the function at that point. The error in the L-BFG-S solver is

File "/usr/lib/python2.7/dist-packages/scipy/optimize/lbfgsb.py", line 181, in fmin_l_bfgs_b

isave, dsave)

ValueError: failed to initialize intent(inout) array -- input not fortran contiguous

My code looks like this:

# x0 is the starting point, a 1d array

>>> solution, x, info = scipy.optimize.fmin_tnc( cost_function, x0, args=([operators]), bounds=bounds )

# Using fmin_tnc works well, solution is what I expect it to be

>> solution, cost, information = scipy.optimize.fmin_l_bfgs_b ( cost_function, solution, bounds=bounds, args=[ operators ], iprint=101 )

2011-07-01 11:34:24,703 - eoldas.Model - INFO - 46 days, 46 quantised days

tnc: Version 1.3, (c) 2002-2003, Jean-Sebastien Roy (js <at> jeannot.org)

tnc: RCS ID: <at> (#) $Jeannot: tnc.c,v 1.205 2005/01/28 18:27:31 js Exp $

NIT NF F GTG

0 1 1.988301629303336E+02 8.17118991E+06

tnc: fscale = 0.000249879

1 5 1.338514420154698E+01 1.82689516E+04

tnc: fscale = 0.00528464

2 9 9.476573219561992E+00 2.21390020E+04

3 19 6.684083971679802E+00 3.88897225E+03

4 69 6.274247682836059E+00 2.43671753E+03

tnc: |fn-fn-1] = 4.5037e-13 -> convergence

5 120 6.274247682835608E+00 2.43671753E+03

tnc: Converged (|f_n-f_(n-1)| ~= 0)

RUNNING THE L-BFGS-B CODE

* * *

Machine precision = 1.084D-19

N = 46 M = 10

L = -2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01

-2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01

-2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01

-2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01

-2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01

-2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01

-2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01

-2.0000D-01 -2.0000D-01 -2.0000D-01 -2.0000D-01

X0 = 5.6013D-02 1.1717D-01 1.9201D-01 2.7557D-01 3.7013D-01 4.5702D-01

5.3491D-01 6.0661D-01 6.7624D-01 7.4649D-01 8.0318D-01 8.5203D-01

8.8633D-01 9.0102D-01 8.9914D-01 8.7521D-01 8.2816D-01 7.6529D-01

7.0559D-01 6.5371D-01 6.0520D-01 5.5814D-01 5.0991D-01 4.4783D-01

3.7790D-01 3.0041D-01 2.1894D-01 1.5147D-01 1.0832D-01 8.3926D-02

6.6473D-02 4.8621D-02 3.2567D-02 2.0086D-02 1.0881D-02 2.4890D-03

8.8000D-04 -4.2729D-03 -4.6658D-03 -5.5940D-03 -4.1690D-03 -1.2577D-02

-2.2529D-02 -2.9114D-02 -1.5938D-02 1.9755D-02

U = 1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00

1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00

1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00

1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00

1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00

1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00

1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00

1.2000D+00 1.2000D+00 1.2000D+00 1.2000D+00

At X0 0 variables are exactly at the bounds

Traceback (most recent call last):

File "example_identity.py", line 199, in <module>

main ( sys.argv )

File "example_identity.py", line 166, in main

solution, cost, information = scipy.optimize.fmin_l_bfgs_b ( cost_function, solution, bounds=bounds, args=[ operators ], iprint=101 )

File "/usr/lib/python2.7/dist-packages/scipy/optimize/lbfgsb.py", line 181, in fmin_l_bfgs_b

isave, dsave)

ValueError: failed to initialize intent(inout) array -- input not fortran contiguous

Any clues of where to look for issues?

Thanks!

jose

_______________________________________________
SciPy-User mailing list
SciPy-User <at> scipy.org
http://mail.scipy.org/mailman/listinfo/scipy-user