Relay or box-constrained AVI problems

Problem statement

Find \((z,w)\) such that:

\[\begin{split}\begin{equation*} \left\lbrace \begin{array}{l} w = M z + q\\ -w \in \mathcal{N}_{K}(z)\\ \end{array}, \right. \end{equation*}\end{split}\]

where M is an ( \(n \times n\) )-matrix, q, z and w are n-dimensional vectors, K is the box defined by \(K=\{x\in\mathbb{R}^n\mid lb_i\leq x_i\leq ub_i,i=1,...,n\}\) and \(\mathcal{N}_K(z)\) is the normal cone to \(K\) at \(z\) .

Implementation in numerics

Structure to define the problem: RelayProblem.

The generic driver for all Relay problems is relay_driver().

Solvers list RELAY_SOLVER

Relay available solvers

Direct solvers

Enumerative solver (SICONOS_RELAY_ENUM)

The relay problem is reformulated as a LCP and solved with enum method, see LCP available solvers.

driver: relay_enum()

parameters: same as SICONOS_LCP_ENUM.

Lemke solver (SICONOS_RELAY_LEMKE)

The relay problem is reformulated as a LCP and solved with Lemke’s method, see LCP available solvers.

driver: relay_lexicolemke()

parameters: same as SICONOS_LCP_ENUM.

PATH (SICONOS_RELAY_PATH)

The relay problem is reformulated as a LCP and solved with the PATH solver

Works only if Siconos has been built with path support (if PathFerris or PathVI has been found, see Build and install )

driver: relay_path()

parameters : none.

AVI reformulation

AVI, Cao/Ferris solver (SICONOS_RELAY_AVI_CAOFERRIS)

Based on an algorithm by Cao and Ferris for AVI with a polytopic set \(K\) .

driver: relay_avi_caoferris()

parameters: same as SICONOS_AVI_CAOFERRIS, see AVI Available solvers.

There also exists a test version SICONOS_RELAY_AVI_CAOFERRIS_TEST with

driver: relay_avi_caoferris_test()

parameters: same as SICONOS_AVI_CAOFERRIS, see AVI Available solvers.

Iterative solvers

Projected Gauss-Seidel (SICONOS_RELAY_PGS)

driver: relay_pgs()

parameters:

  • iparam[SICONOS_IPARAM_MAX_ITER] = 1000

  • dparam[SICONOS_DPARAM_TOL] = 1e-6