[SciPy-dev] Trouble with optimize.fmin_ncg
dmitrey
openopt at ukr.net
Tue Jul 24 16:23:26 EDT 2007
I still have no idea...
I checked small example (below), it works ok
I don't know, maybe I did something wrong, but I removed
/site-packages/scipy, re-installed the package from
http://packages.ubuntu.com/feisty/python/python-scipy (ver 0.5.2), and
your problem still makes my CPU hanging on.
can anyone who didn't update scipy from svn during last 10-11 days run
Nils example?
Regards, D.
>>> f = lambda x: ((x-arange(len(x)))**2).sum()
>>> fprime = lambda x: 2*(x-arange(len(x)))
>>> r = optimize.fmin_ncg(f, [10]*50, fprime)
Optimization terminated successfully.
Current function value: 0.000000
Iterations: 2
Function evaluations: 3
Gradient evaluations: 4
Hessian evaluations: 0
>>> r
array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.,
11., 12., 13., 14., 15., 16., 17., 18., 19., 20., 21.,
22., 23., 24., 25., 26., 27., 28., 29., 30., 31., 32.,
33., 34., 35., 36., 37., 38., 39., 40., 41., 42., 43.,
44., 45., 46., 47., 48., 49.])
Nils Wagner wrote:
> On Tue, 24 Jul 2007 18:33:51 +0300
> dmitrey <openopt at ukr.net> wrote:
>
>> Nils, are you sure that troubles raised after last svn
>> changes?
>>
>
> Well, I believe it is less than 3 month ago that
> ncg worked as expected.
>
>
>> All my changes are in func _cubicmin from optimize.py
>> but when I placed a breakpoint there, the hanging cycle
>> didn't reached
>> the one.
>> Can't you do the same trick?
>> scipy/optimize/optimize.py
>> line 309,
>> d1 = empty((2,2))
>>
>> I have found the hanging cycle (optimize.py, line 1030,
>> while numpy.add.reduce(abs(ri)) > termcond: )
>> but numpy.add.reduce(abs(ri)) is constantly growing
>> here.
>>
>> maybe you had changed x0 and now it's too far from
>> x_opt?
>>
>>
> Even if I start with a vector near x_opt ncg hangs.
>
> Nils
>
>
>> btw if 2nd derivatives are not supplied, then other
>> cycle is hanging:
>> line 1013:
>> while (numpy.add.reduce(abs(update)) > xtol) and (k <
>> maxiter):
>> I don't know howto fix the problem.
>> Please inform me about the breakpoint.
>>
>> BTW your func seems to be very suspicious to me
>> def R(v):
>> rq = dot(v.T,A*v)/dot(v.T,B*v)
>> res = (A*v-rq*B*v)/linalg.norm(B*v)
>> data.append(linalg.norm(res))
>> return rq
>>
>> are you sure that the func(v)=dot(v.T,A*v)/dot(v.T,B*v)
>> is convex?
>> I'm not.
>> So using 2nd derivatives (or their approximating by
>> fmin_ncg (if user
>> didn't provide that ones) , in line 1033:
>> Ap =
>> approx_fhess_p(xk,psupi,fprime,epsilon)
>> )
>> will handle non-convex funcs much more bad than 1-st
>> order do.
>>
>> HTH, D.
>>
>>
>>
>
> _______________________________________________
> Scipy-dev mailing list
> Scipy-dev at scipy.org
> http://projects.scipy.org/mailman/listinfo/scipy-dev
>
>
>
>
More information about the SciPy-Dev
mailing list