[SciPy-User] scipy.optimize.leastsq question

Bruce Southey bsouthey at gmail.com
Mon Jun 28 12:03:08 EDT 2010


On 06/28/2010 09:52 AM, Ralph Kube wrote:
>
> Den 28.06.10 15.44, skrev Bruce Southey:
>    
>> You probably have a scaling issue because your 'r_i' parameter is huge
>> compared to your 'ppw' parameter (300 vs 0.000001). This is really
>> really important if you model is nonlinear. So please try to standardize
>> your values so that the parameters have similar magnitude - even just
>> division/multiplication by some power of 10 can make a huge difference.
>> If these parameters are so different or you need 'leastsq' then you
>> probably should try either grid searching or fixing one or two
>> parameters at a time. This will at least give you an idea on the
>> possible values.
>>
>> Bruce
>>      
> I have little experience with non-linear optimization so using least
> squares was a first guess approach.
> The model is much more sensitive to the r_i and r_s parameters than it
> is to the ppw parameter. In the approach I use, all quantities are
> physical units which serve as input parameters to existing routines.
> They demand the given order of magnitude for r_i, r_s and ppw.
> I rewrote them, so that the input variable have the same order of
> magnitude and rescale them when I pass them to these routines.
> Then I tried to let leastsq now only vary r_i while keeping r_s and ppw
> fixed. Still, the problem pertains:
>
>
> Optimizing albedo
> Albedo for r_ice = 4.200000, r_soot = 1.000000, ppw = 1.000000e+00 	
> Residual squared: 0.235837
> Albedo for r_ice = 4.200000, r_soot = 1.000000, ppw = 1.000000e+00 	
> Residual squared: 0.235837
> Albedo for r_ice = 4.200000, r_soot = 1.000000, ppw = 1.000000e+00 	
> Residual squared: 0.235837
> Albedo for r_ice = 4.200000, r_soot = 1.000000, ppw = 1.000000e+00 	
> Residual squared: 0.235837
> ... done. Found r_snow =  4.2
>
>
> Is this still the scaling problem?
>
>
>    
We do expect that your data is correct, your 'compute_albedo' is 
correct, your have suitable starting values etc.

As Sebastian says, take a very careful look Jacobian as my guess is that 
the search space surface is flat. You probably can see that by ploting 
the data across a grid of parameter values for r_i and r_s - there 
should be some sort of curvature. for optimization functions to work.

Bruce







More information about the SciPy-User mailing list