SuanShu, a Java numerical and statistical library

com.numericalmethod.suanshu.optimization.unconstrained.conjugatedirection
Class Zangwill

java.lang.Object
  extended by com.numericalmethod.suanshu.optimization.unconstrained.steepestdescent.SteepestDescent
      extended by com.numericalmethod.suanshu.optimization.unconstrained.conjugatedirection.Zangwill
All Implemented Interfaces:
Minimizer, UnconstrainedMinimizer

public class Zangwill
extends SteepestDescent

Zangwill's algorithm is an improved version of Powell's algorithm. It enhances the algorithm to generate a set of conjugate directions that are always linearly independent.

Despite the "improvement", in practice however, Zangwill's algorithm seems to produce results that are less accurate than those of Powell's algorithm.

A conjugate direction optimization method is performed by using sequential search directions that bear a strict mathematical relationship to one another.

See Also:
"Algorithm 6.5. Practical Optimization: Algorithms and Engineering Applications. Andreas Antoniou, Wu-Sheng Lu."

Nested Class Summary
 
Nested classes/interfaces inherited from class com.numericalmethod.suanshu.optimization.unconstrained.steepestdescent.SteepestDescent
SteepestDescent.LineSearch
 
Field Summary
 
Fields inherited from class com.numericalmethod.suanshu.optimization.unconstrained.steepestdescent.SteepestDescent
f, g, tol
 
Constructor Summary
Zangwill()
           
 
Method Summary
protected  SteepestDescent.LineSearch getLineSearch()
           
 void solve(RealScalarFunction f, RealVectorFunction g, double tol)
          Construct an instance of Zangwill to minimize a function.
 void solve(RealScalarFunction f, RealVectorFunction g, double tol, double tol2)
          Solve an instance of Zangwill to minimize a function f.
 
Methods inherited from class com.numericalmethod.suanshu.optimization.unconstrained.steepestdescent.SteepestDescent
minimum, search, solve, solve
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Zangwill

public Zangwill()
Method Detail

solve

public void solve(RealScalarFunction f,
                  RealVectorFunction g,
                  double tol,
                  double tol2)
Solve an instance of Zangwill to minimize a function f.

Parameters:
f - the real valued function to be minimized
g - a function that computes the gradient of f for a given x
tol - the convergence tolerance
tol2 - a tolerance to decide whether there is linear dependence among the conjugate directions

solve

public void solve(RealScalarFunction f,
                  RealVectorFunction g,
                  double tol)
Construct an instance of Zangwill to minimize a function.

Overrides:
solve in class SteepestDescent
Parameters:
f - the real valued function to be minimized
g - a function that computes the gradient of f for a given x
tol - the convergence tolerance

getLineSearch

protected SteepestDescent.LineSearch getLineSearch()
Specified by:
getLineSearch in class SteepestDescent

SuanShu, a Java numerical and statistical library

Copyright © 2011 Numerical Method Inc. Ltd. All Rights Reserved.