MultiAgentDecisionProcess
Release 0.2.1
Main Page
Namespaces
Classes
Files
File List
File Members
TOIFactoredRewardDecPOMDPDiscrete.cpp
Go to the documentation of this file.
1
28
#include "
TOIFactoredRewardDecPOMDPDiscrete.h
"
29
30
using namespace
std;
31
32
#define DEBUG_TOIFactoredRewardDecPOMDPDiscrete 0
33
34
TOIFactoredRewardDecPOMDPDiscrete::
35
TOIFactoredRewardDecPOMDPDiscrete
(
36
string
name,
string
descr,
string
pf) :
37
TOIDecPOMDPDiscrete
(name, descr, pf)
38
{
39
_m_initialized
=
false
;
40
}
41
42
TOIFactoredRewardDecPOMDPDiscrete::
43
TOIFactoredRewardDecPOMDPDiscrete
(
const
TOIFactoredRewardDecPOMDPDiscrete
& o)
44
{
45
throw
(
E
(
"TOIFactoredRewardDecPOMDPDiscrete: copy ctor not yet implemented"
));
46
}
47
48
TOIFactoredRewardDecPOMDPDiscrete::~TOIFactoredRewardDecPOMDPDiscrete
()
49
{
50
for
(
unsigned
int
i=0;i!=
_m_p_rModels
.size();++i)
51
delete
(
_m_p_rModels
[i]);
52
}
53
54
//Copy assignment operator
55
TOIFactoredRewardDecPOMDPDiscrete
&
56
TOIFactoredRewardDecPOMDPDiscrete::operator=
57
(
const
TOIFactoredRewardDecPOMDPDiscrete
& o)
58
{
59
if
(
this
== &o)
return
*
this
;
// Gracefully handle self assignment
60
// Put the normal assignment duties here...
61
62
throw
(
E
(
"TOIFactoredRewardDecPOMDPDiscrete: assignment not yet implemented"
));
63
64
return
*
this
;
65
}
66
67
bool
TOIFactoredRewardDecPOMDPDiscrete::SetInitialized
(
bool
b)
68
{
69
if
(b ==
false
)
70
{
71
_m_initialized
=
false
;
72
return
(
true
);
73
}
74
75
if
(
TOIDecPOMDPDiscrete::SetInitialized
(
true
))
76
{
77
if
( b ==
true
)
78
{
79
if
(
_m_p_rModels
.size()!=
GetNrAgents
())
80
throw
E
(
"TOIFactoredRewardDecPOMDPDiscrete::SetInitialized(true) : no reward models specified yet!"
);
81
82
for
(
unsigned
int
i=0;i!=
GetNrAgents
();++i)
83
if
(
_m_p_rModels
[i] == 0)
84
throw
E
(
"TOIFactoredRewardDecPOMDPDiscrete::SetInitialized(true) : no reward model specified yet! ( _m_p_rModels[i] == 0 )"
);
85
86
//\todo TODO: do we need to check the reward model? any further?
87
}
88
_m_initialized
= b;
89
return
(
true
);
90
}
91
else
92
return
(
false
);
93
}
94
95
double
TOIFactoredRewardDecPOMDPDiscrete::GetReward
(
Index
sI,
Index
jaI)
const
96
{
97
double
reward=0;
98
vector<Index> indSIs=
JointToIndividualStateIndices
(sI),
99
indAIs=
JointToIndividualActionIndices
(jaI);
100
101
for
(
unsigned
int
i=0;i!=
GetNrAgents
();++i)
102
reward+=
GetIndividualReward
(indSIs[i],indAIs[i],i);
103
104
reward+=
_m_p_rModel
->
Get
(indSIs,indAIs);
105
// reward+=_m_p_rModel->Get(sI,jaI);
106
107
#if DEBUG_TOIFactoredRewardDecPOMDPDiscrete
108
cout <<
"GetReward("
<< sI <<
","
<< jaI <<
") = "
<< reward << endl;
109
#endif
110
return
(reward);
111
}
112
113
double
114
TOIFactoredRewardDecPOMDPDiscrete::GetReward
(
const
std::vector<Index> &sIs,
115
const
std::vector<Index> &aIs)
const
116
{
117
double
reward=0;
118
119
for
(
unsigned
int
i=0;i!=
GetNrAgents
();++i)
120
reward+=
GetIndividualReward
(sIs[i],aIs[i],i);
121
122
reward+=
_m_p_rModel
->
Get
(sIs,aIs);
123
124
#if DEBUG_TOIFactoredRewardDecPOMDPDiscrete
125
cout <<
"GetReward("
<< sI <<
","
<< jaI <<
") = "
<< reward << endl;
126
#endif
127
128
return
(reward);
129
}
130
131
void
TOIFactoredRewardDecPOMDPDiscrete::
132
SetIndividualRewardModel
(
RewardModel
* rewardModel,
133
Index
agentID)
134
{
135
if
(
_m_p_rModels
.size()<=agentID)
136
_m_p_rModels
.resize(agentID+1);
137
138
_m_p_rModels
[agentID]=rewardModel;
139
}
140
141
double
TOIFactoredRewardDecPOMDPDiscrete::
142
GetIndividualReward
(
Index
indSI,
Index
indAI,
Index
agentID)
const
143
{
144
double
reward=
_m_p_rModels
[agentID]->Get(indSI,indAI);
145
#if DEBUG_TOIFactoredRewardDecPOMDPDiscrete
146
cout <<
"GetIndividualReward["
<< agentID <<
"]("
<< indSI <<
","
<< indAI
147
<<
") = "
<< reward << endl;
148
#endif
149
return
(reward);
150
}
151
152
string
TOIFactoredRewardDecPOMDPDiscrete::SoftPrint
()
const
153
{
154
stringstream ss;
155
ss <<
TOIDecPOMDPDiscrete::SoftPrint
();
156
157
if
(
_m_initialized
)
158
{
159
ss <<
"Reward models: "
<< endl;
160
for
(
unsigned
int
i=0;i!=
GetNrAgents
();++i)
161
{
162
ss <<
"Individual rewards for agent "
<< i << endl;
163
ss <<
_m_p_rModels
[i]->SoftPrint();
164
}
165
}
166
else
167
throw
E
(
"TOIFactoredRewardDecPOMDPDiscrete components (reward model) not initialized"
);
168
169
return
(ss.str());
170
}
src
base
TOIFactoredRewardDecPOMDPDiscrete.cpp
Generated on Mon Sep 23 2013 14:50:05 for MultiAgentDecisionProcess by
1.8.1.2