Mixed (Non Linear) Complementarity problem (MCP)#
Problem statement#
Given a sufficiently smooth function \({F} \colon {{\mathrm{I\!R}}}^{n+m} \to {{\mathrm{I\!R}}}^{n+m}\) , the Mixed Complementarity problem (MCP) is to find two vectors \((z,w \in {{\mathrm{I\!R}}}^{n+m})\) such that:
where “i” (resp. “e”) stands for inequalities (resp. equalities). The vector \(z\) is splitted like \(w\) :
The vectors \(z_i,w_i\) are of size sizeEqualities
, the vectors \(z_e,w_e\) are of size sizeInequalities
and \(F\) is a non linear function that must be user-defined.
A Mixed Complementarity problem (MCP) is a Nonlinear Complementarity Problems (NCP) “augmented” with equality constraints.
Implementation in numerics#
Structure to define the problem: MixedLinearComplementarityProblem
.
The generic driver for all MCP is mcp_driver()
.
Solvers list MCP_SOLVER
MCP available solvers#
Newton, Fisher-Burmeister (SICONOS_MCP_NEWTON_FB_FBLSA
)#
Solver based on Fischer-Burmeister reformulation and line search (VFBLSA in Facchinei–Pang 2003 p. 834)
driver: mcp_newton_FB_FBLSA()
parameters:
iparam[SICONOS_IPARAM_MAX_ITER] = 1000
iparam[SICONOS_IPARAM_LSA_NONMONOTONE_LS] = 0;
iparam[SICONOS_IPARAM_LSA_NONMONOTONE_LS_M] = 0;
iparam[SICONOS_IPARAM_STOPPING_CRITERION] = SICONOS_STOPPING_CRITERION_USER_ROUTINE;
dparam[SICONOS_DPARAM_TOL] = 1e-10
dparam[SICONOS_DPARAM_LSA_ALPHA_MIN] = 1e-16;
Newton (min), Fisher-Burmeister (SICONOS_MCP_NEWTON_MIN_FB_FBLSA
)#
Solver based on Fischer-Burmeister reformulation and line search. The descent direction is found using a min reformulation (minFBLSA in Facchinei–Pang 2003 p. 855)
driver: mcp_newton_min_FB_FBLSA()
parameters:
iparam[SICONOS_IPARAM_MAX_ITER] = 1000
iparam[SICONOS_IPARAM_LSA_NONMONOTONE_LS] = 0;
iparam[SICONOS_IPARAM_LSA_NONMONOTONE_LS_M] = 0;
iparam[SICONOS_IPARAM_STOPPING_CRITERION] = SICONOS_STOPPING_CRITERION_USER_ROUTINE;
dparam[SICONOS_DPARAM_TOL] = 1e-10
dparam[SICONOS_DPARAM_LSA_ALPHA_MIN] = 1e-16;
Newton, Fisher-Burmeister (SICONOS_MCP_OLD_FB
)#
Solver based on Fischer-Burmeister reformulation, old (outdated) version, for the records.
driver: mcp_old_FischerBurmeister()
parameters:
iparam[SICONOS_IPARAM_MAX_ITER] = 10
iparam[SICONOS_IPARAM_STOPPING_CRITERION] = SICONOS_STOPPING_CRITERION_USER_ROUTINE;
dparam[SICONOS_DPARAM_TOL] = 1e-7