flds924.gms : Princeton Bilevel Optimization Example 9.2.4

Description

Test problem 9.3.5 in Handbook of Test Problems in Local and Global Optimization
Test problem 9.2.4 on http://titan.princeton.edu/TestProblems/chapter9.html

References:

Floudas, C A, Pardalos, P M, Adjiman, C S, Esposito, W R, Gumus, Z H, Harding,
S T, Klepeis, J L, Meyer, C A, and Schweiger, C A, Handbook of Test Problems in
Local and Global Optimization. Kluwer Academic Publishers, 1999

Yezza, A. (1996). First-order necessary optimality conditions for general bilevel
programming problems. Journal of Optimization Theory and Applications, 89:189
219.

Contributor: Jan-H. Jagla, January 2010


Small Model of Type : BP


Category : GAMS EMP library


Main file : flds924.gms

$title Princeton Bilevel Optimization Example 9.2.4 (FLDS924,SEQ=39)

$ontext

  Test problem 9.3.5 in Handbook of Test Problems in Local and Global Optimization
  Test problem 9.2.4 on http://titan.princeton.edu/TestProblems/chapter9.html

References:

Floudas, C A, Pardalos, P M, Adjiman, C S, Esposito, W R, Gumus, Z H, Harding,
S T, Klepeis, J L, Meyer, C A, and Schweiger, C A, Handbook of Test Problems in
Local and Global Optimization. Kluwer Academic Publishers, 1999

Yezza, A. (1996). First-order necessary optimality conditions for general bilevel
programming problems. Journal of Optimization Theory and Applications, 89:189
219.

Contributor: Jan-H. Jagla, January 2010

$offtext

*Solution of problem 9.2.4 on the web
scalar  x_l  /    3 /
        y1_l /    1 /
        y2_l /    2 /
        tol  / 1e-6 /;

variables z, z_in, y1, y2; positive variable x;
equations ob, c0, c1, c2, c3;

ob..       0.5*(sqr(y1 - 2) + sqr(y2 - 2)) =e=    z;

c0..            0.5*sqr(y1) +          y2  =e= z_in;
c1.. - x +               y1 +          y2  =e=    0;
c2..     -               y1                =l=    0;
c3..     -                             y2  =l=    0;

model bilevel / all /;

$echo bilevel x min z_in * c0 c1 c2 c3 > "%emp.info%"

*Start from reported solution
x.l  =  x_l;
y1.l = y1_l;
y2.l = y2_l;

solve bilevel using EMP minimizing z;

abort$(   (abs( x.l -  x_l) > tol)
       or (abs(y1.l - y1_l) > tol)
       or (abs(y2.l - y2_l) > tol) ) 'Deviated from reported solution';