Skip to content

Variational inequalities #2463

Open
Open
@odow

Description

@odow

An upcoming release of PATH will support polyhedral variational inequalities. I don't have anything actionable to do yet, but I had a chat with Michael Ferris yesterday, so this issue is to record my notes.

The new release solves the problem of finding $x$ such that $0 \in F(x) + N_C(x)$, where $F(x)$ is a $R^n \rightarrow R^n$ nonlinear function and $N_C$ is the normal cone of $C$ where $x\in C$.

Currently, we use the Complements set $F(x) \perp x$ to be interpreted as a rectangular variational inequality, where the set $C$ is the variable bounds on x.

The new version will support $C = \{x: Ax <= b\}$.

Note that this is not the same as a rectangular variational inequality plus some inequality constraints, so this is not sufficient:

model = Model()
@variable(model, x[1:n] >= 0)
@constraint(model, A * x <= b)
@constraint(model, F(x)  x)

We either need some way of saying that the linear constraints are actually part of the VI:

model = Model()
@variable(model, x[1:n] >= 0)
@constraint(model, A * x <= b, VariationalInequality())
@constraint(model, F(x)  x)

or we need some entirely new syntax.

Still TBD, but I think PATH + GAMS will use this "tagging" approach of annotating the constraints that are really the VI and not constraints. We could do this with constraint attributes, or by lowering to the constraint to Ax * x - b in VariationalInequality(Nonnegatives()).

The key thing is that we need three pieces of information

  1. a vector $F(x)$
  2. an ordering $x$ to align with $F(x)$
  3. a cone $x \in C$

MOI.Complements achieves 1 and 2, and 3 is left implicit. We chose the current design because it matches exactly the information that PATH expected at the time.

This has been discussed before: #771 (comment)

cc @xhub

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions