simpleqvi1.gms : Simple Quasi-Variational Inequality

Description

This model shows how to solve a simple QVI using EMP

QVI is to find y in K(x):
F(y)(z - y) >= 0, for all z in K(x)
K(x) is a set-valued mapping, and for a given x K(x) is a closed convex set.

Contributor: Youngdae Kim (03.20.2018)


Small Model of Type : QVI


Category : GAMS EMP library


Main file : simpleqvi1.gms

$title Simple Quasi-Variational Inequality (SIMPLEQVI1,SEQ=101)

$onText
This model shows how to solve a simple QVI using EMP

QVI is to find y in K(x):
F(y)(z - y) >= 0, for all z in K(x)
K(x) is a set-valued mapping, and for a given x K(x) is a closed convex set.

Contributor: Youngdae Kim (03.20.2018)
$offText

set i / 1*2 /;
alias(i,j);

positive variables y(i), x(i);
equations F(i), g(i);

F(i)..
    y(i) - 10 =N= 0;

g(i)..
    (y('1') + x('2'))$(i.val eq 1) + (y('2') + x('1'))$(i.val eq 2) =L= 10;


model qvi / F, g /;

file empinfo / '%emp.info%' /;
putclose empinfo 'qvi F y x g';

solve qvi using emp;

$onText
This could be reformulated as an MCP:
$offText

negative variable u(i)  'auxiliary vars, perp to g_aux(i)';

equation F_aux(i), g_aux;

F_aux(i)..
    y(i) - 10 - u(i) =N= 0;

g_aux(i)..
    sum(j, y(j)) =L= 10;

u.l(i) = g.m(i);

model reform / F_aux.y, g_aux.u /;

reform.iterlim = 0;
solve reform using mcp;
abort$(reform.objval > 1e-6) 'Solutions differ';