In [1]:
import numpy as np

In [2]:
from game_tools import Player, NormalFormGame

In [3]:
U = np.array([[[(3, 3, 3), (6, 4, 1)],
               [(4, 1, 6), (2, 5, 0)]],
              [[(1, 6, 4), (0, 2, 5)],
               [(5, 0, 2), (7, 7, 7)]]])

In [4]:
g0 = NormalFormGame(U)

In [5]:
for i in range(3):
    print 'player {0}'.format(i)
    print g0.players[i].payoff_array


player 0
[[[3 6]
  [4 2]]

 [[1 0]
  [5 7]]]
player 1
[[[3 6]
  [4 2]]

 [[1 0]
  [5 7]]]
player 2
[[[3 6]
  [4 2]]

 [[1 0]
  [5 7]]]

In [6]:
g0.players[i].payoff_array


Out[6]:
array([[[3, 6],
        [4, 2]],

       [[1, 0],
        [5, 7]]])

In [7]:
g0[0, 0, 0]


Out[7]:
[3, 3, 3]

In [8]:
g0[0, 0, 1]


Out[8]:
[6, 4, 1]

In [9]:
import itertools
actions_list = [range(player.num_actions) for player in g0.players]
for action_profile in itertools.product(*actions_list):
    print 'payoff_profile{0} ='.format(action_profile), g0[action_profile]


payoff_profile(0, 0, 0) = [3, 3, 3]
payoff_profile(0, 0, 1) = [6, 4, 1]
payoff_profile(0, 1, 0) = [4, 1, 6]
payoff_profile(0, 1, 1) = [2, 5, 0]
payoff_profile(1, 0, 0) = [1, 6, 4]
payoff_profile(1, 0, 1) = [0, 2, 5]
payoff_profile(1, 1, 0) = [5, 0, 2]
payoff_profile(1, 1, 1) = [7, 7, 7]

In [10]:
p0 = Player(np.zeros((2*3*4)).reshape((2, 3, 4)))
p1 = Player(np.zeros((2*3*4)).reshape((3, 4, 2)))
p2 = Player(np.zeros((2*3*4)).reshape((4, 2, 3)))

In [11]:
g1 = NormalFormGame((p0, p1, p2))

In [12]:
for i in range(3):
    print 'player {0}'.format(i)
    print g1.players[i].payoff_array


player 0
[[[ 0.  0.  0.  0.]
  [ 0.  0.  0.  0.]
  [ 0.  0.  0.  0.]]

 [[ 0.  0.  0.  0.]
  [ 0.  0.  0.  0.]
  [ 0.  0.  0.  0.]]]
player 1
[[[ 0.  0.]
  [ 0.  0.]
  [ 0.  0.]
  [ 0.  0.]]

 [[ 0.  0.]
  [ 0.  0.]
  [ 0.  0.]
  [ 0.  0.]]

 [[ 0.  0.]
  [ 0.  0.]
  [ 0.  0.]
  [ 0.  0.]]]
player 2
[[[ 0.  0.  0.]
  [ 0.  0.  0.]]

 [[ 0.  0.  0.]
  [ 0.  0.  0.]]

 [[ 0.  0.  0.]
  [ 0.  0.  0.]]

 [[ 0.  0.  0.]
  [ 0.  0.  0.]]]

In [13]:
import itertools
actions_list = [range(player.num_actions) for player in g1.players]
for action_profile in itertools.product(*actions_list):
    print 'payoff_profile{0} ='.format(action_profile), g1[action_profile]


payoff_profile(0, 0, 0) = [0.0, 0.0, 0.0]
payoff_profile(0, 0, 1) = [0.0, 0.0, 0.0]
payoff_profile(0, 0, 2) = [0.0, 0.0, 0.0]
payoff_profile(0, 0, 3) = [0.0, 0.0, 0.0]
payoff_profile(0, 1, 0) = [0.0, 0.0, 0.0]
payoff_profile(0, 1, 1) = [0.0, 0.0, 0.0]
payoff_profile(0, 1, 2) = [0.0, 0.0, 0.0]
payoff_profile(0, 1, 3) = [0.0, 0.0, 0.0]
payoff_profile(0, 2, 0) = [0.0, 0.0, 0.0]
payoff_profile(0, 2, 1) = [0.0, 0.0, 0.0]
payoff_profile(0, 2, 2) = [0.0, 0.0, 0.0]
payoff_profile(0, 2, 3) = [0.0, 0.0, 0.0]
payoff_profile(1, 0, 0) = [0.0, 0.0, 0.0]
payoff_profile(1, 0, 1) = [0.0, 0.0, 0.0]
payoff_profile(1, 0, 2) = [0.0, 0.0, 0.0]
payoff_profile(1, 0, 3) = [0.0, 0.0, 0.0]
payoff_profile(1, 1, 0) = [0.0, 0.0, 0.0]
payoff_profile(1, 1, 1) = [0.0, 0.0, 0.0]
payoff_profile(1, 1, 2) = [0.0, 0.0, 0.0]
payoff_profile(1, 1, 3) = [0.0, 0.0, 0.0]
payoff_profile(1, 2, 0) = [0.0, 0.0, 0.0]
payoff_profile(1, 2, 1) = [0.0, 0.0, 0.0]
payoff_profile(1, 2, 2) = [0.0, 0.0, 0.0]
payoff_profile(1, 2, 3) = [0.0, 0.0, 0.0]

In [14]:
g2 = NormalFormGame((2, 3, 4))

In [15]:
for i in range(3):
    print 'player {0}'.format(i)
    print g2.players[i].payoff_array


player 0
[[[ 0.  0.  0.  0.]
  [ 0.  0.  0.  0.]
  [ 0.  0.  0.  0.]]

 [[ 0.  0.  0.  0.]
  [ 0.  0.  0.  0.]
  [ 0.  0.  0.  0.]]]
player 1
[[[ 0.  0.]
  [ 0.  0.]
  [ 0.  0.]
  [ 0.  0.]]

 [[ 0.  0.]
  [ 0.  0.]
  [ 0.  0.]
  [ 0.  0.]]

 [[ 0.  0.]
  [ 0.  0.]
  [ 0.  0.]
  [ 0.  0.]]]
player 2
[[[ 0.  0.  0.]
  [ 0.  0.  0.]]

 [[ 0.  0.  0.]
  [ 0.  0.  0.]]

 [[ 0.  0.  0.]
  [ 0.  0.  0.]]

 [[ 0.  0.  0.]
  [ 0.  0.  0.]]]

In [16]:
g3 = NormalFormGame(3)

In [17]:
g3.N


Out[17]:
1

In [18]:
g3.players[0].payoff_array


Out[18]:
array([ 0.,  0.,  0.])

In [ ]: