File: soclcp.rst

package info (click to toggle)
siconos 4.3.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 82,496 kB
  • sloc: cpp: 159,693; ansic: 108,665; fortran: 33,248; python: 20,709; xml: 1,244; sh: 385; makefile: 226
file content (135 lines) | stat: -rw-r--r-- 4,082 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
.. index::
   single: Second Order Cone Linear Complementarity Problem (SOCLCP)
   
.. contents::

.. _soclcp_problem:

Second Order Cone Linear Complementarity Problem (SOCLCP)
*********************************************************

Problem statement
=================

Given

* a symmetric positive semi definite matrix :math:`{M} \in {{\mathrm{I\!R}}}^{n \times n}`

* a vector :math:`{q} \in {{\mathrm{I\!R}}}^n`

* a vector of coefficients :math:`\mu \in{{\mathrm{I\!R}}}^{n_c}`

the second order cone linear complementarity problem (SOCLCP) is to find two vectors :math:`u\in{{\mathrm{I\!R}}}^n` , and :math:`r\in {{\mathrm{I\!R}}}^n` , denoted by :math:`\mathrm{SOCCLP}(M,q,\mu)` such that

.. math::

    \begin{eqnarray*} \begin{cases}
    u = M r + q \\
    \ C^\star_{\mu} \ni {u} \perp r \in C_{\mu}
    \end{cases} \end{eqnarray*}

and the set :math:`C^{\alpha,\star}_{\mu^\alpha}` is its dual.

The set C is the second order cone given by

.. math::

    \begin{eqnarray}
    C_{\mu} = \{ r \} = \prod_{\alpha =1}^{n_c} C^\alpha_{\mu}
    \end{eqnarray}

with

.. math::

    \begin{eqnarray}
    C^\alpha_{\mu} = \{ r \mid \|[r_1, \ldots, r_{n^\alpha}]\| \leq \mu^\alpha * r_0 \} \subset {\mathrm{I\!R}}^{n^\alpha}
    \end{eqnarray}

Implementation in numerics
==========================

Structure to define the problem: :class:`SecondOrderConeLinearComplementarityProblem`.

The generic driver for all SOCLCP problems is :func:`soclcp_driver()`.

Solvers list  :enum:`SOCLCP_SOLVER`

.. _soclcp_solvers:

SOCLCP available solvers
========================

Gauss-Seidel (:enumerator:`SICONOS_SOCLCP_NSGS`)
""""""""""""""""""""""""""""""""""""""""""""""""

PSOR (Gauss-Seidel with overrelaxation) solver.

driver: :func:`soclcp_nsgs()`

parameters:

* iparam[SICONOS_IPARAM_MAX_ITER] = 1000;
* iparam[SICONOS_IPARAM_ERROR_EVALUATION] : error computation method,
  
    * SICONOS_ERROR_FULL_EVALUATION Complete error computation with v computation (Default)
    * SICONOS_ERROR_LIGHT_EVALUATION for Light error computation with incremental values on r verification of absolute error at the end 
    * SICONOS_ERROR_LIGHT_EVALUATION_NO_UPDATE for light error computation, without update for v

* iparam[SICONOS_IPARAM_SOCLCP_NSGS_WITH_RELAXATION] = 0;
* iparam[SICONOS_IPARAM_SOCLCP_NSGS_WITH_RELAXATION] : method uses overrelaxation
* iparam[SICONOS_IPARAM_NSGS_SHUFFLE] : if 1, shuffle the contact indices in the loop
* dparam[SICONOS_DPARAM_TOL] = 1e-4;
* dparam[SICONOS_DPARAM_SOCLCP_NSGS_RELAXATION] = 1., relaxation parameter value
  
internal solver: :enumerator:`SICONOS_SOCLCP_ProjectionOnConeWithLocalIteration`.


VI, fixed-point (:enumerator:`SICONOS_SOCLCP_VI_FPP`)
"""""""""""""""""""""""""""""""""""""""""""""""""""""

VI formulation and fixed point projection.

driver: :func:`soclcp_VI_FixedPointProjection()`

parameters: same as :enumerator:`SICONO_VI_FPP`, see :ref:`vi_solvers`.


VI, Extra-gradient (:enumerator:`SICONOS_SOCLCP_VI_EG`)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""

VI formulation and extra-gradient solver.

driver: :func:`soclcp_VI_ExtraGradient()`

parameters: same as :enumerator:`SICONO_VI_EG`, see :ref:`vi_solvers`.

VI, Extra-gradient (:enumerator:`SICONOS_SOCLCP_VI_EG`)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""

VI formulation and extra-gradient solver.

driver: :func:`soclcp_VI_ExtraGradient()`

parameters: same as :enumerator:`SICONO_VI_EG`, see :ref:`vi_solvers`.

Projections
"""""""""""

Used as internal solver for :enumerator:`SICONOS_SOCLCP_NSGS`.

ids: :enumerator:`SICONOS_SOCLCP_ProjectionOnConeWithLocalIteration`,
:enumerator:`SICONOS_SOCLCP_ProjectionOnCone`,
   :enumerator:`SICONOS_SOCLCP_ProjectionOnConeWithRegularization`.

drivers:

* :func:`soclcp_projectionOnCone_solve` for ProjectionOnCone and ProjectionOnConeWithRegularization,
* :func:`soclcp_projectionOnConeWithLocalIteration` for ProjectionOnConeWithLocalIteration.


parameters:

* iparam[SICONOS_IPARAM_SOCLCP_PROJECTION_CONE_INDEX] (set by soclcp_nsgs)
* dparam[SICONOS_DPARAM_SOCLCP_PROJECTION_RHO] = 0.