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