Version:

flds911.gms : Princeton Bilevel Optimization Example 9.1.1

**Description**

Test problem 9.2.2 in Handbook of Test Problems in Local and Global Optimization Test problem 9.1.1 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 Clark, P A, and Westerberg, A W, Bilevel Programming for Steady-State Chemical Process Design-i. Fundamentals and Algorithms. Comput. Chem. Eng. 14 (1990), 87-97. NOTE: The problem 9.1.1 on the web gives the solution (y1=4, y2=2, x=5, z=-13) when started from the default (all-zero) initial point. However, the KKT condition kt2.. 4*lb('2') - 2*lb('2') - 3*lb('3') =e= 0; is incorrect. It does not match equations c1-c3. Instead, it should be kt2.. 4*lb('1') - 2*lb('2') - 3*lb('3') =e= 0; With this change, the model gives the solution (y1=4, y2=6, x=6, z=-6) when started from the default (all-zero) initial point. To get the solution with z=-13 it is enough to set initial values for x, y1, y2, as we verify below. We did NOT verify this by checking the original reference! Contributor: Alex Meeraus and Jan-H. Jagla, December 2009

**Small Model of Type : ** BP

**Category :** GAMS EMP library

**Main file :** flds911.gms

```
$title Princeton Bilevel Optimization Example 9.1.1 (FLDS911,SEQ=27)
$onText
Test problem 9.2.2 in Handbook of Test Problems in Local and Global Optimization
Test problem 9.1.1 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
Clark, P A, and Westerberg, A W, Bilevel Programming for Steady-State Chemical
Process Design-i. Fundamentals and Algorithms. Comput. Chem. Eng. 14 (1990), 87-97.
NOTE:
The problem 9.1.1 on the web gives the solution (y1=4, y2=2, x=5, z=-13)
when started from the default (all-zero) initial point.
However, the KKT condition
kt2.. 4*lb('2') - 2*lb('2') - 3*lb('3') =e= 0;
is incorrect. It does not match equations c1-c3. Instead, it should be
kt2.. 4*lb('1') - 2*lb('2') - 3*lb('3') =e= 0;
With this change, the model gives the solution (y1=4, y2=6, x=6, z=-6)
when started from the default (all-zero) initial point. To get the
solution with z=-13 it is enough to set initial values for x, y1, y2,
as we verify below.
We did NOT verify this by checking the original reference!
Contributor: Alex Meeraus and Jan-H. Jagla, December 2009
$offText
*Solution of problem 9.1.1 on the web
scalar x_l / 5 /
y1_l / 4 /
y2_l / 2 /
z_l / -13 /
tol / 1e-6 /;
variables z, y1, y2; positive variable x;
equations ob, c1, c2, c3, c4, c5;
ob.. - x - 3*y1 + 2*y2 =e= z;
c1.. - 2*x + y1 + 4*y2 =l= 16;
c2.. 8*x + 3*y1 - 2*y2 =l= 48;
c3.. - 2*x + y1 - 3*y2 =l= -12;
c4.. - y1 =l= 0;
c5.. y1 =l= 4;
model bilevel / all /;
$echo bilevel x max y1 y2 c1 c2 c3 c4 c5 > "%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)
or (abs( z.l - z_l) > tol) ) 'Deviation from expected solution';
```