lmmcp solves a mixed complementarity problem.
lmmcp uses a semismooth least squares formulation. The method applies a
Levenberg-Marquardt/Gauss-Newton algorithm to a least-squares formulation.
X = lmmcp(FUN,X0) tries to solve the system of nonlinear equations F(X)=0 and
starts at the vector X0. FUN accepts a vector X and return a vector F of equation
values F evaluated at X and, as second output if required, a matrix J, the
Jacobian evaluated at X.
X = lmmcp(FUN,X0,LB,UB) solves the mixed complementarity problem of the form:
LB =X => F(X)>0,
LB<=X<=UB => F(X)=0,
X =UB => F(X)<0.
X = lmmcp(FUN,X0,LB,UB,OPTIONS) solves the MCP problem using the options
defined in the structure OPTIONS. Main fields are
Display : control the display of iterations, 'none' (default),
'iter-detailed' or 'final-detailed'
Switch from phase I to phase II
preprocess : activate preprocessor for phase I (default = 1)
presteps : number of iterations in phase I (default = 20)
Termination parameters
MaxIter : Maximum number of iterations (default = 500)
tmin : safeguard stepsize (default = 1E-12)
TolFun : Termination tolerance on the function value, a positive
scalar (default = sqrt(eps))
Stepsize parameters
m : number of previous function values to use in the nonmonotone
line search rule (default = 10)
kwatch : maximum number of steps (default = 20 and should not be
smaller than m)
watchdog : activate the watchdog strategy (default = 1)
Ther are other minor parameters. Please see the code for their default values
and interpretation.
[X,FVAL] = lmmcp(FUN,X0,...) returns the value of the equations FUN at X.
[X,FVAL,EXITFLAG] = lmmcp(FUN,X0,...) returns EXITFLAG that describes the exit
conditions. Possible values are
1 : lmmcp converged to a root
0 : Too many iterations
-1 :
[X,FVAL,EXITFLAG,OUTPUT] = lmmcp(FUN,X0,...) returns the structure OUTPUT that
contains the number of iterations (OUTPUT.iterations), the value of the merit
function (OUTPUT.Psix), and the norm of the derivative of the merit function
(OUTPUT.normDPsix).
[X,FVAL,EXITFLAG,OUTPUT,JACOB] = lmmcp(FUN,X0,...) returns JACOB the Jacobian
of FUN evaluated at X.
More details of the main program may be found in the following paper:
Christian Kanzow and Stefania Petra: On a semismooth least squares formulation of
complementarity problems with gap reduction. Optimization Methods and Software
19, 2004, pp. 507-525.
In addition, the current implementation uses a preprocessor which is the
projected Levenberg-Marquardt step from the following preprint:
Christian Kanzow and Stefania Petra: Projected filter trust region methods for a
semismooth least squares formulation of mixed complementarity
problems. Optimization Methods and Software
22, 2007, pp. 713-735.
A user's guide is also available:
Christian Kanzow and Stefania Petra (2005).
lmmcp --- A Levenberg-Marquardt-type MATLAB Solver for Mixed Complementarity Problems.
University of Wuerzburg.
http://www.mathematik.uni-wuerzburg.de/~kanzow/software/UserGuide.pdf
This is a modification by Christophe Gouel of the original files, which can be
downloaded from:
http://www.mathematik.uni-wuerzburg.de/~kanzow/software/LMMCP.zip
copyright: Christian Kanzow and Stefania Petra
Institute of Applied Mathematics and Statistics
University of Wuerzburg
Am Hubland
97074 Wuerzburg
GERMANY
e-mail: kanzow@mathematik.uni-wuerzburg.de
petra@mathematik.uni-wuerzburg.de