*==>nash.gms $offsymxref offsymlist offuellist offuelxref $inlinecom /* */ /* ****************************************************** A non-cooperative game example; a Nash equilibrium is sought; References: F.H. Murphy, H.D. Sherali, and A.L. Soyster, "A mathematical programming approach for determining oligopolistic market equilibrium", Mathematical Programming 24 (1986) 92-106 P.T. Harker, "Accelerating the convergence . . .", Mathematical Programming 41 (1988) 29 - 59. ********************************************************** */ set run / run1*run4 /; parameter includerun (run) / run1 01 run2 01 run3 01 run4 01 /; *first 2 are ip's from Harker & Xiao's paper set I / 1 * 10 /; alias (J,I); scalar gamma / 1.2 /; parameter c(I) / 1 5 2 3 3 8 4 5 5 1 6 3 7 7 8 4 9 6 10 3 / L(I) / 1 10 2 10 3 10 4 10 5 10 6 10 7 10 8 10 9 10 10 10 / beta(I) / 1 1.2 2 1 3 .9 4 .6 5 1.5 6 1 7 .7 8 1.1 9 .95 10 .75 /; table ipt(I,run) run1 run2 run3 run4 1 1 10 1.0 7 2 1 10 1.2 4 3 1 10 1.4 3 4 1 10 1.6 1 5 1 10 1.8 18 6 1 10 2.1 4 7 1 10 2.3 1 8 1 10 2.5 6 9 1 10 2.7 3 10 1 10 2.9 2 ; positive variable q(I); /* production vector */ equations feas(I); /* delf - p - q(I)*delp */ feas (I) .. c(I) + (L(I) * q(I))**(1/beta(I)) - (5000 / (sum(J, q(J))))**(1/gamma) - q(I) * (-1/gamma) * ( (5000 / (sum(J, q(J))))**(1/gamma) ) / sum(J, q(J)) =g= 0; model nash / feas.q /; option limrow=0; option limcol=0; option iterlim=2000; option reslim=120; loop (run, if (includerun (run), q.l(I) = ipt(I,run); solve nash using mcp; ));