From octave-sources-request at bevo dot che dot wisc dot edu Fri Apr 19 13:15:47 2002 Subject: Optimization : bfgs and cg_min From: Etienne Grossmann To: octave-sources at bevo dot che dot wisc dot edu CC: etienne at isr dot ist dot utl dot pt Date: Fri, 19 Apr 2002 19:18:11 +0100 Hello, this is to ask the opinion of Octave-Forge developers and users on what to do about the optimization functions : My opinion is to replace the bfgs.m and nrm.m files so that the new bfgs() function takes the same parameters as the actual cg_min(), and remove this last function. I have verified on various quadratic programming cases and initial positions that my modified bfgs2() executes the same algorithm, in the same time (no extra overhead) as the original bfgs(). In terms of speed, it is thus much quicker than cg_min(). In terms of flexibility, it is better than bfgs(), since it can optimize wrt to any (not just the 1st) argument, and the termination criterion can be tweaked. Another difference with the original bfgs(), which may be either an advantage or a pain, is that it requires the derivatives of the function to be provided by the user. This is an advantage because, if a hand-made derivative is available, it can be used instead of the numerical differentiation. This has the slight disadvantage that, if you want to use numerical differentiation, you should provide the function yourself, e.g. with cdiff(). So, if people who use bfgs() right now do not mind changing the way this function is called, I think it would be a good idea to substitute it and remove cg_min.m, which would then be redundant. Opinions? Cheers, Etienne -- Etienne Grossmann ------ http://www.isr.ist.utl.pt/~etienne