New as of 5/10/10 --- Dr.-Ing. Andreas Maier reports that he has created a version of the fmin and Uncmin codes that permits "the parallel evaluation of functions, gradients, and Hessians (for computationally expensive functions)." The package can be obtained at www5.informatik.uni-erlangen.de/research/software/java-parallel-optimization-package/

Currently (as of 8/8/05) this package contains Java translations of the 1-dimensional minimization routine, fmin, the multi-dimensional minimization routine Uncmin, the MINPACK nonlinear least squares routines (lmder1, lmder, lmdif1, and lmdif), and the SLATEC 1-dimensional zero-finding routine, dfzero. Eventually, the package will also contain Java translations of some of the MINPACK nonlinear equation solvers.

The 1-dimensional minimization routine is an **unofficial**
Java translation of the
FORTRAN version of the public domain fmin routine that can be found
at www.netlib.org/go/fmin.f.

The multi-dimensional minimization routine is an **unofficial**
Java translation of the public domain FORTRAN Uncmin package
(umdpn.f). For documentation see
Dennis and Schnabel, *Numerical Methods for Unconstrained
Optimization and Nonlinear Equations*, Prentice-Hall, 1983, and
Schnabel, Koontz, and Weiss, "A Modular System of Algorithms for
Unconstrained Minimization," *ACM Transactions of Mathematical
Software*, 1985, pages 419 -- 440.

Uncmin can perform *unconstrained* nonlinear optimizations.
Here is information about
constrained nonlinear optimizations.

The nonlinear least squares routines are **unofficial**
Java translations of the
FORTRAN versions of the public domain MINPACK nonlinear least squares
routines that can be found
at www.netlib.org/minpack.

The 1-dimensional zero-finding routine is an **unofficial**
Java translation of the
FORTRAN version of the public domain SLATEC dfzero routine that can be found
at netlib. Either go to
www.netlib.org and do a search for
dfzero.f, or go to
www.netlib.org/slatec and
download the entire SLATEC library.

- These routines were translated by a user of numerical analysis routines rather than a developer. When Java optimization routines written by professional numerical analysts become available, they should be used.
- I have tried to be careful with the coding and have done some
simple testing (see the FminTest, UncminTest_f77,
LmderTest_f77, LmdifTest_f77, and FzeroTest applications).
However, it is quite possible that I have introduced
errors into the routines in the course of the translations. If you
detect bugs in fmin, Uncmin, MINPACK, or fzero, PLEASE contact me
(Steve Verrill at
`sverrill@fs.fed.us`or 608-231-9375). - Uncmin_f77.java, UncminTest_f77.java, Minpack_f77.java,
LmderTest_f77.java, and LmdifTest_f77.java make use of FORTRAN style
indexing.
In these you will tend to see
for (i = 1; i <= n; i++)

rather thanfor (i = 0; i < n; i++)

To use the "_f77" routines you will have to declare your vectors and matrices to be one element larger (e.g., v[101] rather than v[100], and a[101][101] rather than a[100][100]), and you will have to fill elements 1 through n rather than elements 0 through n - 1. See UncminTest_f77.java.Eventually, classes that make use of Java/C style indexing might become available (actually, this is unlikely).

# DISCLAIMER OF WARRANTIES

THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. THE AUTHOR/TRANSLATOR DOES NOT WARRANT, GUARANTEE OR MAKE ANY REPRESENTATIONS REGARDING THE SOFTWARE OR DOCUMENTATION IN TERMS OF THEIR CORRECTNESS, RELIABILITY, CURRENTNESS, OR OTHERWISE. THE ENTIRE RISK AS TO THE RESULTS AND PERFORMANCE OF THE SOFTWARE IS ASSUMED BY YOU. IN NO CASE WILL ANY PARTY INVOLVED WITH THE CREATION OR DISTRIBUTION OF THE SOFTWARE BE LIABLE FOR ANY DAMAGE THAT MAY RESULT FROM THE USE OF THIS SOFTWARE.Sorry about that.

# Documentation

Here is the documentation generated by javadoc. Also see- the source code of Minpack_f77.java
- For Uncmin:
- the source code of Uncmin_f77.java
- R.B. Schnabel, J.E. Koontz, and B.E. Weiss,
*An Unconstrained Nonlinear Optimization Solver: A User's Guide* - R.B. Schnabel, J.E. Koontz, and B.E. Weiss,
*A Modular System of Algorithms for Unconstrained Minimization*, Report CU-CS-240-82, Comp. Sci. Dept., University of Colorado at Boulder, 1982 - J.E. Dennis and R.B. Schnabel,
*Numerical Methods for Unconstrained Optimization and Nonlinear Equations*, 1983, Prentice-Hall - R.B. Schnabel, J.E. Koontz, and B.E. Weiss, "A Modular System of Algorithms for
Unconstrained Minimization,"
*ACM Transactions of Mathematical Software*, 1985, pages 419 -- 440.

# Installation

The code is available in compressed tar, Windows 95 zip, and Windows 98 and later zip forms. Alternatively, the code comes in sixteen files:

- Fmin_methods.java
- Fmin.java
- FminTest.java
- Uncmin_methods.java
- Uncmin_f77.java
- UncminTest_f77.java
- Lmder_fcn.java
- LmderTest_f77.java
- Lmdif_fcn.java
- LmdifTest_f77.java
- Minpack_f77.java
- Fzero_methods.java
- Fzero.java
- FzeroTest.java
- Blas_f77.java
- Console.java

*Given the manner in which the routines are currently written,*you will need to import them (see the beginning of UncminTest_f77.java). All of the classes will have to be placed in subdirectories of a directory in your CLASSPATH. For the optimization classes, this subdirectory will have to be called optimization. For the Blas_f77 class, this subdirectory will have to be called linear_algebra. Console.class will have to be placed in a subdirectory called corejava.Note that if you install the software in this manner, then to run, for example, FminTest you will have to issue the command:

java optimization.FminTest

*Alternatively,*you could remove the package and import statements (other than import java.lang.*) in the source code, and compile all of the necessary files in the same directory.To run Fmin you will need to write a driver class such as FminTest that implements the Fmin_methods interface. This class will have to include an f_to_minimize method.

To run Uncmin_f77 you will need to write a driver class such as UncminTest_f77 that implements the Uncmin_methods interface. This class will have to include an f_to_minimize method and, at the least, dummy gradient and hessian methods.

To run Minpack_f77 you will need to write a driver class such as LmderTest_f77 or LmdifTest_f77 that implements the Lmder_fcn or Lmdif_fcn interface. This class will have to include an fcn method.

To run Fzero you will need to write a driver class such as FzeroTest that implements the Fzero_methods interface. This class will have to include an f_to_zero method.

# Console.java

Console.java is software described in Cornell and Horstmann's*Core Java*(SunSoft Press/Prentice-Hall). (I like this book.) It may be used for non-commerical purposes. I only make use of it in the testing routines.# Support

If you have questions about this software, or suggestions for improvement, please contact Steve Verrill at`sverrill@fs.fed.us`or 608-231-9375.

[Forest Service] [Forest Products Lab] [FPL Statistics Group]

Last modified on 5/10/10.

As of last midnight, this page had been accessed times.