Re: specifying further options to NMinimize method when using NonlinearModelFit
- To: mathgroup at smc.vnet.net
- Subject: [mg117729] Re: specifying further options to NMinimize method when using NonlinearModelFit
- From: Peter Pein <petsie at dordos.net>
- Date: Wed, 30 Mar 2011 04:15:09 -0500 (EST)
- References: <imshd3$5pa$1@smc.vnet.net>
Am 29.03.2011 13:56, schrieb Alex Gittens: > I'm using NonlinearModelFit to fit a model with UnitStep statements in it, so my only option seems to be to use the NMinimize method (judging from the errors I get, all the other options seem to need symbolic gradient information). > > The results are poor, so I'd like to specify that NonlinearModelFit use NMinimize with the Differential Evolution method. How do I go about doing that? > Hi Alex, are you sure that NlMFit uses NMinimize? I constructed a hard-to-fit example and tried to set different methods for NMinimize; to no avail: In[1]:= data=Table[{x,Exp[-x]+.1Sin[Pi x]},{x,0,1,1/50}]//N; In[2]:= model=a+b/(x+c); In[3]:= Table[SetOptions[NMinimize,Method->met];NonlinearModelFit[data,model,{a,b,c},x]//Normal,{met,{Automatic, "DifferentialEvolution", "NelderMead", "RandomSearch", "SimulatedAnnealing"}}] ... some warnings (each the same) ... Out[3]= { -7.50222+108.153/(12.7003 +x), -7.50222+108.153/(12.7003 +x), -7.50222+108.153/(12.7003 +x), -7.50222+108.153/(12.7003 +x), -7.50222+108.153/(12.7003 +x)} I see no difference, do you? Hmm... an Option Method is not documented for NlMFit under "Options". But who will give up as soon? Using Method->"foo" will give the possible valuses for NlMNFit: using In[6]:= Table[ NonlinearModelFit[data, model, {a, b, c}, x, Method -> met] // Normal, {met, {Automatic, "Gradient", "ConjugateGradient", "InteriorPoint", "QuasiNewton", "Newton", "NMinimize", "LevenbergMarquardt"}}] ...some warnings ... Out[6]= { -7.50222 + 108.153/(12.7003 + x), -3.58119 + 29.3825/( 6.38402 + x), -1.13263 + 5.36751/(2.46604 + x), 2.02043 - 172.578/(129.759 + x), -3.16362 + 24.1187/(5.76332 + x), -5.39831 + 59.8129/(9.32438 + x), -15.3664 + 414.781/(25.3272 + x), -7.50222 + 108.153/(12.7003 + x)} gives us a broader range to choose of :-) Whatever fits your needs best... Peter