SGSolve
sgrandom.hpp
1 #ifndef _SGRANDOM_HPP
2 #define _SGRANDOM_HPP
3 
4 #include "sg.hpp"
5 #include "sggame.hpp"
6 
8 SGGame generateRandomGame(int numPlayers, int numStates, int numactions);
9 
11 class SGRandomGame : public SGGame
12 {
13 private:
14  int numactions;
15 public:
17  int numStates,
18  int numactions):
19  SGGame(generateRandomGame(numPlayers, numStates, numactions)),
20  numactions(numactions) {}
21 };
22 /*
24 class SGRandomGame : public SGGame
25 {
26 private:
27  int numactions;
28 public:
29  SGRandomGame(int numplayers,
30  int numstates,
31  int numactions)
32  {
33  SGGame();
34 
35  numPlayers = numplayers;
36  numStates = numstates;
37 
38  unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
39  std::default_random_engine generator (seed);
40 
41  std::uniform_real_distribution<double> distribution(.1,.9);
42  delta = distribution(generator);
43 
44  unsigned int c;
45  unconstrained.resize(numPlayers);
46  for(c=0;c<numPlayers;c++)
47  {
48  unconstrained[c] = false;
49  }
50 
51  numActions.resize(numStates);
52  unsigned int s,p;
53  for(s=0;s<numStates;s++)
54  {
55  numActions[s].resize(numPlayers);
56  for(p=0;p<numPlayers;p++)
57  {
58  numActions[s][p]=numactions;
59  }
60  }
61 
62  numActions_total.resize(numStates);
63  for(s=0;s<numStates;s++)
64  {
65  numActions_total[s]=pow(numactions, numPlayers);
66  }
67 
68  // Payoffs
69  unsigned int i,j,k,l;
70  SGPoint sgpoint(numPlayers);
71  payoffs.resize(numStates);
72  for(i=0;i<numStates;i++)
73  {
74  payoffs[i].resize(numActions_total[i]);
75  for(j=0;j<numActions_total[i];j++)
76  {
77  payoffs[i][j] = sgpoint;
78  for(k=0;k<numPlayers;k++)
79  {
80  std::uniform_real_distribution<double> distribution(0,10); payoffs[i][j][k] = distribution(generator);
81  }
82  }
83  }
84 
85  // Transition probabilities
86  double prob_sum;
87  probabilities.resize(numStates);
88  for(i=0;i<numStates;i++)
89  {
90  probabilities[i].resize(pow(numactions,numPlayers));
91  for(j=0;j<numActions_total[i];j++)
92  {
93  probabilities[i][j].resize(numStates);
94  prob_sum = 0.0;
95  for(k=0;k<numStates;k++)
96  {
97  std::uniform_real_distribution<double> distribution(0,1.0);
98  probabilities[i][j][k] = distribution(generator);
99  // normalize probabilities
100  prob_sum += probabilities[i][j][k];
101  }
102  for(k=0;k<numStates;k++)
103  {
104  probabilities[i][j][k] = probabilities[i][j][k]/prob_sum;
105  }
106  }
107  }
108  }
109 
110 };
111 */
112 #endif
SGGame
Describes a stochastic game.
Definition: sggame.hpp:40
SGGame::SGGame
SGGame()
Default constructor.
Definition: sggame.hpp:111
SGRandomGame
Class to generate random games.
Definition: sgrandom.hpp:12
SGGame::numStates
int numStates
Definition: sggame.hpp:44
SGGame::numPlayers
int numPlayers
Definition: sggame.hpp:43