matlab - fminunc is not converging -


im using fminunc minimize function 450 variables, here lines

 opts = optimset('display','iter','maxiter', 10000000,'maxfunevals', 100000000,'tolx', 1e-12,'tolfun', 1e-12);  [x,fval,exitflag] = fminunc(@function,x0,opts); 

note dont provide gradient, fminunc uses quasi-newton algorithm. after iterations endes final message

fminunc stopped because cannot decrease objective function along current search direction. 

but if restart code new point obtained, continued decreasing, im not in minimum. seems me algorithm looking minimum along 1 direccion , when finds it, stops instead start searching among other direccions.

any clue how modify problem doesnt happen , find minimum? or other programm should use in order faster?

edit: function convex

this type of problem can occur if have numerical noise in objective function. gradient/hessian become noisy , step off, , line searching ends precisely error.

try plotting criterion in interval around starting values change 1 of parameters x0(i) linspace(x0(i)(1-1e07, x(i)(1+1e07), 100), 1 number @ time.

if function looks jittery, may problem.

alternatively, maybe starting in region function not convex? in case try fminsearch begin with.

otherwise, consider using analytic gradients.

also, perhaps tolerance set fine. try reducing tolfun , tolx 1e-08. problem high dimensional.


Comments

Popular posts from this blog

javascript - Google App Script ContentService downloadAsFile not working -

javascript - Function overwritting -

c# - Exception when attempting to modify Dictionary -