File numerics/src/tools/FischerBurmeister.h¶
Go to the source code of this file
Fischer Burmeister functions.
A set of routines to compute the Fischer-Burmeister function and its jacobian.
The Fischer-Burmeister function is defined as :
This function is used to solve MLCP, MCP and NCP. The inequalities are rewritten using Fischer function with \( w = F(z) \) and solved with a semi-smooth Newton algorithm.
For “mixed” problems (i.e. including equality constraints), the Fischer function is defined as :
where index “e” stands for equalities part in F and “i” for inequalities.
For details see the paper of Kanzow and Kleinmichel, “A New Class of Semismooth Newton-type Methods for Nonlinear
Complementarity Problems”, Computational Optimization and Applications 11, 227-251 (1998).
The notations below are more or less those of this paper.
Functions
- void phi_FB (int size, double *restrict z, double *restrict F, double *restrict phi)
Fischer Burmeister function, \( \phi(z,F(z)) \).
- Parameters
size – [in] of vector z
z – [in] vector \( z \)
F – [in] vector \( F(z) \)
phi – [inout] vector \( \phi(z,F(z)) \)
-
void jacobianPhi_FB(int size, double *z, double *F, double *jacobianF, double *jacobianPhi)¶
Jacobian of the Fischer Burmeister function, \( \nabla_z \phi(z,F(z)) \).
Warning
this function looks broken !
- Parameters
size – [in] of vector \( z \)
z – [in] vector \( z \)
F – [in] vector \( F(z) \)
jacobianF – [in] \( \nabla_z F(z) \)
jacobianPhi – [inout] \( \nabla_z \phi(z,F(z)) \).
- void phi_Mixed_FB (int sizeEq, int sizeIneq, double *restrict z, double *restrict F, double *restrict phi)
Mixed Fischer Burmeister function,.
\[\begin{split} \phi(z,F(z)) = \left\lbrace \begin{array}{c} F(z) \\ \sqrt( z^2 + F(z)^2) - z - F(z) \end{array}\right. \end{split}\], the upper for equalities and the rest for inequalities.- Parameters
sizeEq – [in] number of equality constraints.
sizeIneq – [in] number of complementarity constraints.
z – [in] vector z (size = sizeEq + sizeIneq)
F – [in] vector F(z)
phi – [inout] \( \phi(z,F(z)) \).
-
void jacobianPhi_Mixed_FB(int sizeEq, int sizeIneq, double *z, double *F, double *jacobianF, double *jacobianPhi)¶
Jacobian of the mixed Fischer Burmeister function, \( \nabla_z \phi(z,F(z)) \).
Warning
this function looks broken !
- Parameters
sizeEq – [in] number of equality constraints.
sizeIneq – [in] number of complementarity constraints.
z – [in] vector \(z\)
F – [in] vector \(F(z)\)
jacobianF – [in] \( \nabla_z F(z) \)
jacobianPhi – [inout] \( \nabla_z \phi(z,F(z)) \) .
- void Jac_F_FB (int n1, int n2, double *restrict z, double *restrict F, double *restrict workV1, double *restrict workV2, NumericsMatrix *restrict nabla_F, NumericsMatrix *restrict H)
Computes an element of \(Jac \mathbf{F}_{\mathrm{FB}}\) (possibly mixed) Fischer-Burmeister function, see Facchinei—Pang (2003) p.
808
- Parameters
n1 – [in] number of equality constraints.
n2 – [in] number of complementarity constraints.
z – [in] vector \(z\)
F – [in] vector \(F(z)\)
workV1 – [in] work vector (value gets overwritten)
workV2 – [in] work vector (value gets overwritten)
nabla_F – [in] \( \nabla_z F(z) \)
H – [inout] element of Jac_F_merit