UFO is an interactive system for universal functional optimization that serves for solving both dense medium-size and sparse large-scale optimization problems. The UFO system can be used for the following applications:

- Formulation and solution of particular optimization problems.
- Preparation of specialized optimization routines (or subroutines).
- Designing and testing new optimization methods. The UFO system is a very useful tool for optimization algorithms development.

The UFO system is an open software system for solving a broad class of optimization problems. An optimization problem solution is processed in four phases. In the first phase the optimization problem is specified and an optimization method is selected. This can be made in three different ways:

- Full dialogue mode. The problem specification and the method selection are realized by using a conversation between the user and the UFO system.
- Batch mode. The problem specification and the method selection are realized by using the UFO control language. An input file written in the UFO control language has to be prepared.
- Combined mode. Only a part of the specification is written in the input file. The rest of the specification is obtained as in the dialogue mode. This possibility is usually the best one since the problem functions can be defined beforehand by using a convenient text editor.

The second phase is realized by using the UFO preprocessor. This preprocessor is written in the Fortran 77 language and its output is a Fortran 77 control program. In the third phase, the control program is translated by using a Fortran 77 compiler and a final program is linked by using library modules. In the fourth phase, the final program is executed and thus results which can be viewed by using extensive output means are obtained. A detailed description of the UFO system is contained in research report V1218-14.pdf.

The UFO system can be used for solving various dense or sparse optimization problems:

- Unconstrained or box constrained optimization.
- Optimization with general linear constraints.
- Optimization with general nonlinear constraints.
- Nonsmooth optimization.
- Global optimization.
- Solution to systems of nonlinear functional equations.
- Solution to systems of ordinary differential equations.

Moreover, the objective function can assume various forms:

- General objective function.
- Linear or quadratic objective function.
- Sum of squares (or powers) criterion.
- Minimax criterion.
- Integral criterion containing solution to ordinary differential equations.

The UFO system contains optimization methods that can be divided into the following classes:

- Heuristic methods for small-size problems. This class contains the pattern search method and the simplex method.
- Conjugate direction methods which use no matrices. This class contains conjugate direction methods and variable metric methods with limited storage based on the Strang recursions.
- Variable metric methods which use an approximation of the Hessian matrix which is updated in each iteration.
- Variable metric methods with limited storage based on compact representations of variable metric updates.
- Variable metric methods with limited storage based on reduced Hessians.
- Modified Newton methods which use the Hessian matrix computed either analytically or numerically.
- Truncated Newton methods based on the difference approximation of directional derivatives.
- Modified Gauss-Newton methods for nonlinear least squares problems which use the normal equation matrix as an approximation of the Hessian matrix. These methods are also realized by using the Jacobian matrix representation.
- Quasi-Newton methods for nonlinear least square problems and nonlinear equations.
- Quasi-Newton methods with limited storage for nonlinear least square problems and nonlinear equations.
- Quasi-Newton and Brent methods for nonlinear equations.
- Simplex type methods for linear programming problems.
- Interior point methods for linear programming problems.
- Simplex type methods for quadratic programming problems.
- Interior point methods for quadratic programming problems.
- Proximal bundle methods for nonsmooth optimization.
- Bundle-Newton methods for nonsmooth optimization.
- Variable metric bundle methods for nonsmooth optimization.
- Recursive quadratic programming methods for dense minimax problems.
- Recursive quadratic programming methods for dense nonlinear programming problems.
- Inexact recursive quadratic programming methods for sparse equality constrained problems.
- Inexact interior point methods for sparse equality and inequality constrained problems.
- Random search methods for global optimization.
- Continuation methods for global optimization. This class contains tunneling function methods and filled function methods.
- Clustering methods for global optimization. This class contains a density clustering method and a single linkage clustering method.
- Multi-level methods for global optimization. Thiss class contains a multi-level single linkage clustering method and a multi-level mode analysis method.

These methods can be realized in various forms depending on the stepsize selection:

- Line search methods.
- General trust region methods.
- Special trust region methods for nonlinear least squares problems.
- Modified Marquardt methods for nonlinear least squares problems.
- SQP filter methods for nonlinear programing problems.

Moreover, various preconditioned iterative methods can be chosen for the direction determination.

The UFO system contains useful input and output possibilities:

- The UFO control language for batch inputs.
- Text dialogue for UNIX workstations.
- Graphic dialogue for PC computers.
- Basic and extended screen output.
- Graphic screen output for PC computers.
- Text file output.

The following figure shows an example of graphic screen output: