bard851.gms : Practical Bilevel Optimization Example 8.5.1

Description

Example from Chapter 8, example 8.5.1, page 336

John F. Bard, Practical Bilevel Optimization: Algorithms and Applications,
Kluwer Academic Publishers, Dordrecht, 1998.

Contributor: Jan-H. Jagla, January 2009


Small Model of Type : BP


Category : GAMS EMP library


Main file : bard851.gms

$title Practical Bilevel Optimization Example 8.5.1 (BARD851,SEQ=7)

$onText

Example from Chapter 8, example 8.5.1, page 336

John F. Bard, Practical Bilevel Optimization: Algorithms and Applications,
Kluwer Academic Publishers, Dordrecht, 1998.

Contributor: Jan-H. Jagla, January 2009

$offText

*The reported solution is
scalar x_l
       y1_l
       y2_l
       tol / 1e-6/;
x_l   = 17/9;
y1_l  = 8/9;
y2_l  = 0;

positive variables x,y1,y2; variables objout,objin;
equations defout,defin,e1,e2,e3,e4;

defout.. objout =e= sqr(x-1) + 2*sqr(y1) - 2*x;
defin..  objin  =e= sqr(2*y1-4) + sqr(2*y2-1) + x*y1;

e1..   4*x + 5*y1 + 4*y2 =l= 12;
e2.. - 4*x - 5*y1 + 4*y2 =l= -4;
e3..   4*x - 4*y1 + 5*y2 =l=  4;
e4.. - 4*x + 4*y1 + 5*y2 =l=  4;

model bard / all /;

$echo bilevel x min objin y1 y2 defin e1 e2 e3 e4 > "%emp.info%"

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

solve bard us emp min objout;

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