From: Charbel on
Hi all,
I'm trying to fit a function to experimental results.
the solver i'm using is 'lsqcurvefit'....
The question is how can i be sure that the results is converging to a global solution (unique one) and not to a Local Minimum Solution.
i've already checked the lsqcurvefit documentation, and i can say i understand now all the inputs and outputs required, but still, there's not a better way to identify if the answer corresponds to Local Minimum?
my function contains linear and non linear parameters, and i'm using the R2006b
i know with the recent versions of Matlab R2009b the optimisation toolbox is easier than my version, but my license correspond to R2006b.

It's been now several months that i'm using this solver (lsqcurvefit), but now i'm not trusting the solution it's giving me!!!!

Any sugggestion (another solver, minimise Tolerance, change in options, etc....) is appreciated...

Best Regards
From: Alan Weiss on
As explained in the documentation
http://www.mathworks.com/access/helpdesk/help/toolbox/optim/ug/br44i40.html#brhkghv-65
you have no guarantees that your solution is a global minimum.
Optimization Toolbox(TM) solvers attempt to find local minima.

To give yourself some assurance that the solution you get is one you
want, start lsqcurvefit from a number of different initial points. You
should be able to bound the initial points, and then use a starting
point x0 equal to a random point in the initial region. I mean, if L is
your vector of lower bounds on the components of the vector x0, and U is
the vector of upper bounds, take
x0 = L + rand(size(U)).*(U-L);

Alan Weiss
MATLAB mathematical toolbox documentation

Charbel wrote:
> Hi all,
> I'm trying to fit a function to experimental results.
> the solver i'm using is 'lsqcurvefit'....
> The question is how can i be sure that the results is converging to a
> global solution (unique one) and not to a Local Minimum Solution.
> i've already checked the lsqcurvefit documentation, and i can say i
> understand now all the inputs and outputs required, but still, there's
> not a better way to identify if the answer corresponds to Local Minimum?
> my function contains linear and non linear parameters, and i'm using the
> R2006b
> i know with the recent versions of Matlab R2009b the optimisation
> toolbox is easier than my version, but my license correspond to R2006b.
>
> It's been now several months that i'm using this solver (lsqcurvefit),
> but now i'm not trusting the solution it's giving me!!!!
>
> Any sugggestion (another solver, minimise Tolerance, change in options,
> etc....) is appreciated...
>
> Best Regards
From: Charbel on

> you have no guarantees that your solution is a global minimum.
> Optimization Toolbox(TM) solvers attempt to find local minima.
>
> To give yourself some assurance that the solution you get is one you
> want, start lsqcurvefit from a number of different initial points. You
> should be able to bound the initial points, and then use a starting
> point x0 equal to a random point in the initial region. I mean, if L is
> your vector of lower bounds on the components of the vector x0, and U is
> the vector of upper bounds, take
> x0 = L + rand(size(U)).*(U-L);
>
> Alan Weiss
> MATLAB mathematical toolbox documentation
>

Thank U Alan,
i've already started this method, and i'm trying to identify the optimal solution.
i think that's the only way...

i reduced my model to 6 parameters instead of 8, but the fitting result i found is not well accurate as the experiemental curve.
now i'm trying to get back to 8 parameters to see, if it will help by doing so.

anyway, best Regards.
CSA