# outrata4-PCa.mod # Original AMPL coding by Sven Leyffer, Argonne National Laboratory, 2004. # # Alternative Price-Consistent formulation of ... # # Multi-Leader-Follower Game (MLF)) derived from outrata31-outrata34, # see J. Outrata, SIAM J. Optim. 4(2), pp.340ff, 1994. All Stackelberg # players have the same constraints, but different objectives. # ######################################################################### option presolve 0; #option solver pathampl; #option solver mpec; # ... parameters to give number of leaders param nl integer, default 4; # number of leaders set L := 1..nl; # set of leaders set I := 1..4; # ... useful index set # ... Stackelberg leaders' variables var x{L}; var xa = sum{l in L} x[l] / card(L); # ... Followers' variables var y{I}; var s{I}; # ... multipliers (price consistent) var mu{I}; # multipliers of s = F(x,y) constraints var xi{I}; # multipliers of Y s <= 0 var sigma{I}; # multipliers of s >= 0 var psi{I}; # multipliers of y >= 0 subject to # ... FO conditions of leaders wrt x KKT1x: 0 <= x[1] <= 10 complements 2*(x[1]-1) - mu[1]*( 0.2*y[1] - 1.333 )/card(L) - mu[2]*( 0.1*y[2] - 1 )/card(L) - mu[3]*(-0.1 )/card(L) - mu[4]*0.1/card(L); KKT2x: 0 <= x[2] <= 10 complements 3*x[2] - mu[1]*( 0.2*y[1] - 1.333 )/card(L) - mu[2]*( 0.1*y[2] - 1 )/card(L) - mu[3]*(-0.1 )/card(L) - mu[4]*0.1/card(L); KKT3x: 0 <= x[3] <= 10 complements 2*x[3] - mu[1]*( 0.2*y[1] - 1.333 )/card(L) - mu[2]*( 0.1*y[2] - 1 )/card(L) - mu[3]*(-0.1 )/card(L) - mu[4]*0.1/card(L); KKT4x: 0 <= x[4] <= 10 complements 2*x[4] - mu[1]*( 0.2*y[1] - 1.333 )/card(L) - mu[2]*( 0.1*y[2] - 1 )/card(L) - mu[3]*(-0.1 )/card(L) - mu[4]*0.1/card(L); # ... FO conditions wrt follower variables KKT1y1: psi[1] = 2*(y[1]-3) - mu[1]*( 1 + 0.2*xa + 2*y[4] ) - mu[3]*( 0.333 ) - mu[4]*(-2*y[1] ) + xi[1]*s[1] ;# complements psi[1]; KKT1y2: psi[2] = 2*(y[2]-4) - mu[2]*( 1 + 0.1*xa + 2*y[4] ) - mu[3]*(-1 ) - mu[4]*(-2*y[2] ) + xi[2]*s[2] ;# complements psi[2]; KKT1y3: psi[3] = 2*(y[3]-1) - mu[1]*( -0.333 ) - mu[2] + xi[3]*s[3] ;# complements psi[3]; KKT1y4: psi[4] = 20*y[4] - mu[1]*( 2*y[1] ) - mu[2]*( 2*y[2] ) + xi[4]*s[4] ;# complements psi[4]; KKTs{i in I}: sigma[i] = mu[i] + xi[i]*y[i] ;# complements sigma[i]; # ... followers reponse to average of leaders (xa) nlcs1: mu[1] complements s[1] = (1 + 0.2*xa)*y[1] - (3 + 1.333*xa) - 0.333*y[3] + 2*y[1]*y[4]; nlcs2: mu[2] complements s[2] = (1 + 0.1*xa)*y[2] - xa + y[3] + 2*y[2]*y[4]; nlcs3: mu[3] complements s[3] = 0.333*y[1] - y[2] + 1 - 0.1*xa; nlcs4: mu[4] complements s[4] = 9 + 0.1*xa - y[1]^2 - y[2]^2; # ... complementarity constraints comply{i in I}: 0 <= y[i] + sigma[i] complements psi[i] >= 0; compls{i in I}: 0 <= s[i] + psi[i] complements sigma[i] >= 0; complC{i in I}: 0 <= sigma[i] + psi[i] complements xi[i] >= 0; #solve; #display _varname, _var;