From: Samuel Edwards on
I am running a least squares minimization with fmincon to solve a least squares problem. Essentially, a 5-tuple of parameters maps to an 8-tuple of percentages. The parameters are of the form (mean, 1/variance1, 1/variance2, 1/variance3, constant scaled to mean). Unfortunately, it seems that the sum of squares function is very flat around the minimum over a pretty big range of variance1,2,3 and constant.

I have rescaled the problem so fmincon inputs (mean, s.d.1, s.d.2, s.d.3, constant) with a neutral starting guess of [0,1,1,1,0]. I run fmincon, and then rescale by the last guess so that fmincon starts at [1,1,1,1,1] and minimizes new_guess.*(mean, s.d.1, s.d.2, s.d.3, constant). Is this an good way to deal with flat functions? Is there a better way? I'm fairly new to modeling, so I apologize if this is trivial.
From: Alan Weiss on
Your procedure seems OK.

However, I wonder why you don't use one of the least squares solvers,
such as lsqnonlin, which can do a better job of overcoming the
well-known problem of flatness near the solution. Perhaps you need some
nonlinear constraints. But if you only need bounds, try lsqnonlin.
http://www.mathworks.com/access/helpdesk/help/toolbox/optim/ug/brhkghv-18.html#brhkghv-19

Alan Weiss
MATLAB mathematical toolbox documentation

On 7/27/2010 3:10 PM, Samuel Edwards wrote:
> I am running a least squares minimization with fmincon to solve a least
> squares problem. Essentially, a 5-tuple of parameters maps to an 8-tuple
> of percentages. The parameters are of the form (mean, 1/variance1,
> 1/variance2, 1/variance3, constant scaled to mean). Unfortunately, it
> seems that the sum of squares function is very flat around the minimum
> over a pretty big range of variance1,2,3 and constant.
>
> I have rescaled the problem so fmincon inputs (mean, s.d.1, s.d.2,
> s.d.3, constant) with a neutral starting guess of [0,1,1,1,0]. I run
> fmincon, and then rescale by the last guess so that fmincon starts at
> [1,1,1,1,1] and minimizes new_guess.*(mean, s.d.1, s.d.2, s.d.3,
> constant). Is this an good way to deal with flat functions? Is there a
> better way? I'm fairly new to modeling, so I apologize if this is trivial.