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.
for (i = 1; i <= n; i++)rather than
for (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).
Sorry about that.
The code is available in
compressed tar,
Windows 95 zip, and
Windows 98 and later zip
forms.
Alternatively, the code comes in sixteen files:
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.FminTestAlternatively, 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.