%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Example to illustrate computation of Nash equilibria of
% finite two player nonzero sum "bimatrix" games. If you run
% the program multiple times, with the J1 and J2 definition lines
% appropriately commented out below, you can see cases where there are
% zero, one, or more than one Nash equilibrium. Now, the program
% provides one example where there are two Nash solutions.
%
% Author: K. Passino
% Version: 2/2/02
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all
% Set the number of different possible values of the decision variables
m=5; % If change will need to modify specific J1, J2 value chosen below
n=3;
% Set the payoff matrices J1(i,j) and J2(i,j):
%J1=round(10*rand(m,n)-5*ones(m,n)) % Make it random integers between -5 and +5
%J2=round(10*rand(m,n)-5*ones(m,n)) % Make it random integers between -5 and +5
% One set of payoff matrices that gives two Nash equilibria:
J1 =[-1 5 -3;
-2 5 1;
4 3 -2;
-5 -1 5;
3 0 2]
J2 =[-1 2 -3;
2 -3 1;
-2 3 1;
-1 1 -1;
4 -4 1]
% Compute the Nash equilibria:
flag=0; % Flag for saying if there is no Nash equilibria
for i=1:m
for j=1:n
if J1(i,j)<=min(J1(:,j)) & J2(i,j)<=min(J2(i,:)), % Conduct two inequality tests
display('Nash equilibrium and outcome:') % If satisfied, then diplay solution
i
j
J1(i,j)
J2(i,j)
flag=1; % Indicates that there was one Nash equilibrium (or more)
end
end
end
if flag==0
display('There were no Nash equilibria')
end
%-------------------------------------
% End of program
%-------------------------------------