From help-octave-request at bevo dot che dot wisc dot edu Thu Jan 11 03:45:16 2001 Subject: Optimization toolbox (re-starting) From: Etienne Grossmann To: help-octave at bevo dot che dot wisc dot edu CC: etienne at isr dot ist dot utl dot pt Date: Thu, 11 Jan 2001 09:53:03 +0000 Hello, I almost completed a general minimization function. The synopsis is as follows : ====================================================================== [x0,v,nev] = powell_min (f,args,ctl) - Minimize f using Powell's method ARGUMENTS f : string : Name of function. Must return a real value args : list : Arguments passed to f. or RxC : f's only argument ctl : 4 : (Optional) Control variables, described below RETURNED VALUES x0 : RxC : Local minimum of f v : 1 : Value of f in x0 nev : 1 : Number of function evaluations CONTROL VARIABLES ctl(1) : 1 or 2 : Select stopping criterion amongst : ctl(1)==1 : Stopping criterion : Stop search when value doesn't improve, as tested by ctl(2) > Deltaf/max(|f(x)|,1) where Deltaf is the decrease in f observed in the last iteration (each iteration consists R*C line searches). ctl(1)==2 : Stopping criterion : Stop search when updates are small, as tested by ctl(2) > max { dx(i)/max(|x(i)|,1) | i in 1..N } where dx is the change in the x that occured in the last iteration. Default=1 ctl(2) : Threshold used in stopping tests. Default=sqrt(eps) ctl(3) : Position of the minimized argument in args Default=1 ctl(4) : Maximum number of function evaluations Default=inf Default values will be used if ctl is not passed. nan's are replaced by default values. ====================================================================== Any comments, suggestions? My intent was to have a function with little overhead (no named options) and still be flexible : extra parameters can be passed to minimized function. I plan to write minimization functions that use 1st (conjugate gradient method) and 2nd (Newton-like method) for minimizing functions. The synopsis would be of the same kind. Also, I will write a fancier front-end function like "minimize (f, args, options)" with named options, mostly for command-line usage. Cheers, Etienne ps : The function "powell_min" evaluates the minimized function exclusively through my function "leval" ([...] = leval (f,list)). "powell_min" would have less overhead if "leval" made it into mainstream octave as a built-in function rather than a m-file. Should I send a patch to the documentation (for 2.1.3[23])? ------------------------------------------------------------- Octave is freely available under the terms of the GNU GPL. Octave's home on the web: http://www.octave.org How to fund new projects: http://www.octave.org/funding.html Subscription information: http://www.octave.org/archive.html -------------------------------------------------------------