flds918.gms : Princeton Bilevel Optimization Example 9.1.8

Description

Test problem 9.2.9 in Handbook of Test Problems in Local and Global Optimization
Test problem 9.1.8 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.

Jonathan F. Bard, James E. Falk: An explicit solution to the multi-level
programming problem. Computers & OR 9(1): 77-100 (1982)

Contributor: Alex Meeraus and Jan-H. Jagla, December 2009


Small Model of Type : BP


Category : GAMS EMP library


Main file : flds918.gms

$title Princeton Bilevel Optimization Example 9.1.8 (FLDS918,SEQ=34)

$onText

  Test problem 9.2.9 in Handbook of Test Problems in Local and Global Optimization
  Test problem 9.1.8 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.

Jonathan F. Bard, James E. Falk: An explicit solution to the multi-level
programming problem. Computers & OR 9(1): 77-100 (1982)

Contributor: Alex Meeraus and Jan-H. Jagla, December 2009

$offText

*Solution of problem 9.1.8 on the web
scalar x1_l /  2   /
       x2_l /  0   /
       y1_l /  1.5 /
       y2_l /  0   /
       tol  / 1e-6 /;

Variables z, z_in; Positive Variables x1, x2, y1, y2;
equations ob, c0, ob_in, c1, c2, c3, c4;

ob..     - 2*x1 +   x2 + 0.5*y1      =e= z;
c0..         x1 +   x2               =l= 2;

ob_in..                -   4*y1 + y2 =e= z_in;
c1..     - 2*x1        +     y1 - y2 =l= -2.5;
c2..         x1 - 3*x2          + y2 =l= 2;
c3..                   -     y1      =l= 0;
c4..                            - y2 =l= 0;

Model bilevel / all /;

$echo bilevel x1 x2 min z_in y1 y2 ob_in c1 c2 c3 c4 > "%emp.info%"

*Start from reported solution
x1.l = x1_l;
x2.l = x2_l;
y1.l = y1_l;
y2.l = y2_l;

solve bilevel using emp minimizing z;

abort$(   (abs(x1.l - x1_l) > tol)
       or (abs(x2.l - x2_l) > tol)
       or (abs(y1.l - y1_l) > tol)
       or (abs(y2.l - y2_l) > tol) ) 'Deviated from reported solution';