简体   繁体   中英

Matlab least square nonlinear optimization

I am trying to run a system identification problem, my objective is to identify three (finite element) parameters, such that the analysis will make predictions as close to measured ones. Basically a least square nonlinear problem with Matlab's function nonlin. I keep on getting:

Initial point is a local minimum.

Optimization completed because the size of the gradient at the initial point 
is less than the value of the optimality tolerance.
Optimization completed: The final point is the initial point.
The first-order optimality measure, 0.000000e+00, is less than
options.OptimalityTolerance = 1.000000e-10.

My options are

maxfuneval=1.4e7;
maxiter=1e5;
tolfun=1e-10;
tolx=1e-14;
maxPCGiter=40;
tolPCG=1e-14;
TypicalX=[0.01 1000 1000];

options=optimset('Display','iter','Jacobian','off',
'MaxFunEvals',maxfuneval,'Maxiter',maxiter,
'TolFun',tolfun,'TolX',tolx,
'LargeScale','on','TypicalX',typical,
'MAxPCGIter',maxPCGiter,'TolPCG',tolPCG);

Attached image show (top left) target curve (red) and computed curve(black), others three plots are the lsqnonlin variable in terms of iterations; 在此处输入图像描述 Any suggestion how to avoid my error

Based on the output message, your optimization function is starting from a point that is a local minimum , meaning all nearby points has a higher error than (or equal to) that point. As typical optimization algorithm will follow gradients downward, the algorithm is effectively stuck in this location.

The simple fix is to try and test other starting points for your minimization algorithm. So something along the lines of changing / randomizing the initial value (eg x0 ) for your optimization function. Run the optimization function from random starting points enough times, and you might get the global minimum, the settings with the lowest error rate; though this is never guaranteed.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM