$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';