File numerics/src/VI/VariationalInequality_Solvers.h

Go to the source code of this file

Subroutines for the resolution of Variational Inequalites (VI) problems.

Functions

int checkTrivialCase_vi(VariationalInequality *problem, double *x, double *fx, SolverOptions *options)

Check for trivial solution in the variational inequality problem.

Return
info =0 if a trivial solution has been found, else = -1
Parameters
  • problem: VariationalInequality* the problem
  • x: global vector (n), in-out parameter
  • fx: global vector (n), in-out parameters
  • options: the pointer to the array of options to set

void variationalInequality_box_newton_QiLSA(VariationalInequality *problem, double *x, double *F, int *info, SolverOptions *options)

VI Solver based on a merit function minimization with a line-search type algorithm.

Parameters
  • problem: the variational inequality problem to solve
  • x: as input, the initial guess; as output the solution if the algorithm is successful
  • F: value of the function
  • info: 0 if a solution is found
  • options: the solver options

int variationalInequality_common_setDefaultSolverOptions(SolverOptions *options, int solverId)

set the default solver parameters and perform memory allocation for a VI solver

Parameters
  • options: the SolverOptions to set
  • solverId: the id of the solver

void variationalInequality_ExtraGradient(VariationalInequality *problem, double *x, double *w, int *info, SolverOptions *options)

Extra Gradient solver forvariational inequality problem based on the De Saxce Formulation.

dparam[3] : rho parameter. If rho >0, then self-adaptive (Armijo like) procedure. If rho <0, then constant rho parameter (rho <

-rho) Adaptive step-size parameters: Adaptive step-size parameters: dparam[4] = 2/3.0; tau dparam[5] = 3.0/2.0; tauinv dparam[6] = 0.9; L dparam[7] = 0.3; Lmin
Parameters
  • problem: the variational inequality problem to solve
  • x: global vector (n), in-out parameter
  • w: global vector (n), in-out parameters
  • info: return 0 if the solution is found
  • options: the solver options : iparam[0] : Maximum iteration number iparam[1] : Choice of the line search 0 : Armijo rule with Khotbotov ratio (default) 1 : Armijo rule with Solodov.Tseng ratio iparam[2] : bool activate the update in the loop (0:false default choice) iparam[3] : use rho_k * tau * min(1.0,a2/(rho_k*a1)) to decrease rho; commented in the code

int variationalInequality_ExtraGradient_setDefaultSolverOptions(SolverOptions *options)

set the default solver parameters and perform memory allocation for EG

Parameters
  • options: the pointer to the array of options to set

void variationalInequality_FixedPointProjection(VariationalInequality *problem, double *x, double *w, int *info, SolverOptions *options)

Fixed Point Projection solver for variational inequality problem based on the De Saxce Formulation.

Parameters
  • problem: the variational inequality problem to solve
  • x: global vector (n), in-out parameter
  • w: global vector (n), in-out parameters
  • info: return 0 if the solution is found
  • options: the solver options : iparam[0] : Maximum iteration number iparam[1] : Choice of the line search 0 : Armijo rule with Khotbotov ratio (default) 1 : Armijo rule with Solodov.Tseng ratio 2 : Armijo rule with Han.Sun ratio iparam[2] : bool activate the update in the loop (0:false default choice) iparam[3] : use rho_k * tau * min(1.0,a2/(rho_k*a1)) to decrease rho; commented in the code dparam[3] : rho parameter. If rho >0, then self-adaptive (Armijo like) procedure. If rho <0, then constant rho parameter (rho < -rho) Adaptive step-size parameters: dparam[4] = 2/3.0; tau dparam[5] = 3.0/2.0; tauinv dparam[6] = 0.9; L dparam[7] = 0.3; Lmin

int variationalInequality_FixedPointProjection_setDefaultSolverOptions(SolverOptions *options)

set the default solver parameters and perform memory allocation for EG

Parameters
  • options: the pointer to the array of options to set

void variationalInequality_HyperplaneProjection(VariationalInequality *problem, double *x, double *w, int *info, SolverOptions *options)

Hyperplane Projection solver for variational inequality problem based on the De Saxce Formulation.

Parameters
  • problem: the variational inequality problem to solve
  • x: global vector (n), in-out parameter
  • w: global vector (n), in-out parameters
  • info: return 0 if the solution is found
  • options: the solver options : iparam[0] : Maximum iteration number dparam[3] : rho >0

int variationalInequality_HyperplaneProjection_setDefaultSolverOptions(SolverOptions *options)

set the default solver parameters and perform memory allocation for EG

Parameters
  • options: the pointer to the array of options to set

int variationalInequality_setDefaultSolverOptions(SolverOptions *options, int solverId)

set the default solver parameters and perform memory allocation for VariationalInequality

Parameters
  • options: the pointer to the options to set
  • solverId: the identifier of the solver

void vi_box_AVI_extra_SolverOptions(SolverOptions *options)

Extra SolverOptions settings.

Parameters
  • options: the struct to modify

void vi_box_AVI_free_solverData(SolverOptions *options)

free the specific solverData

Parameters
  • options: the struct to modify

void vi_box_AVI_LSA(VariationalInequality *problem, double *x, double *F, int *info, SolverOptions *options)

VI Solver based on the Newton-Josephy method globalized with a line-search type algorithm using the Qi merit function.

Parameters
  • problem: the variational inequality problem to solve
  • x: as input, the initial guess; as output the solution if the algorithm is successful
  • F: value of the function
  • info: 0 if a solution is found
  • options: the solver options

void vi_box_path(VariationalInequality *problem, double *z, double *F, int *info, SolverOptions *options)

Solver for box constrainted VI using PATH.

Parameters
  • problem: the variational inequality problem to solve
  • z: as input, the initial guess; as output the solution if the algorithm is successful
  • F: value of the function
  • info: 0 if a solution is found
  • options: the solver options

void *vi_get_set(void *problem)

Get the set from the VariationalInequality.

Parameters
  • problem: the VI