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
:
16
SGRandomGame
(
int
numPlayers
,
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
src
hpp
sgrandom.hpp
Generated by
1.8.18