INTERFACE SkewMinimizer; (* Multivariate function minimization by Hermite interpolation with sideways steps. Created 97/01/13 by J.Stolfi *) IMPORT Minimizer; TYPE T <: Public; (* Yet another gradient-based optimizer. Each new probe point is generated from the current minimum "x" and the last probe "y" other than "x". Let "dfx" and "dfy" be the grafients at those points, and "d" be the distance "|y-x|". First we use Hermite interpolation to estimate a minimum point "z" on the line "x--y", restricted to distance "alpha*s" from the nearest of the two points. Then we estimate the component "dfz" of the gradient at "z" that is orthogonal to "y-x", by linear interpolation. The next probe point will be "z - beta*step*dfz/|g|" where "g = sqrt(|dfx|^2 + |dfy|^2)". *) Public = Minimizer.T OBJECT METHODS setAlphaBeta(alpha, beta: LONGREAL): T; (* Specifies the step adjustment factors "alpha" and "beta". Defaults are "alpha = 2", "beta = 1"*) END; END SkewMinimizer.