The NEOS Server offers PATH for the solution of nonlinear
complementarity problems in AMPL
format. A paper describing the AMPL Complementarity Format is available.
The NEOS Server provides the current version of the
The code is used extensively by economists for solving general
equilibrium problems and is well-known to be robust and efficient on
the majority of the mixed complementarity problems it encounters.
The algorithm successively linearizes the normal map associated with the MCP,
thereby generating a sequence of
linear mixed complementarity problems. These subproblems are solved by
generating a path between the current iterate and the
solution of the linear subproblem; the precise details of the
path generation scheme
A non-monotone backtracking search
is performed on this path to garner sufficient decrease in its merit
function, the norm of the residual of the normal map. It is known
that the solutions of the subproblem will eventually provide descent
for the merit function and that local superlinear or quadratic
convergence will occur under appropriate conditions.
A crash procedure
is used to quickly identify an approximation to the active set at the solution; this is
based on a projected Newton step for the normal map.
PATH was developed by
and Todd Munson.
Using the NEOS Server with PATH
The user must submit a model in AMPL
format to solve a nonlinear complementarity problem.
Examples of complementarity models in AMPL format can be found in the
The complementarity problem must be specified by a model file with the options of
a data file and a commands file.
If the commands file is specified, it must contain
the AMPL solve; command. However, the commands file must not
contain the model or data commands. The model and data
files are renamed internally by NEOS.
The commands file may include AMPL commands and option settings for PATH.
To specify solver options, add
option path ampl_options "OPTIONS";
where OPTIONS is a list of one or more of the PATH options, available
Printing directed to standard output is returned
to the user with the output.