MultiAgentDecisionProcess  Release 0.2.1
JointPolicyDiscrete.cpp
Go to the documentation of this file.
1 
28 #include "JointPolicyDiscrete.h"
29 #include "PolicyDiscrete.h"
30 using namespace std;
31 
32 //Default constructor
36  :
37  JointPolicy(iptpd.GetNrAgents())
38  ,_m_indexDomCat( idc )
39  ,_m_PTPD(&iptpd)
40 {
42 }
43 //Copy constructor.
45  :
46  JointPolicy(o)
47  ,_m_indexDomCat(o._m_indexDomCat)
48  ,_m_PTPD(o._m_PTPD)
49 {
50 }
51 
54 {
55  if (this == &o) return *this; // Gracefully handle self assignment
56  JointPolicy::operator= ( o ); //call parent
58  _m_PTPD = o._m_PTPD;
59  return *this;
60 }
61 
62 void
64  const vector<Index>& indivDomIndices ,
65  vector<Index>& sampled_aIs ) const
66 {
67  sampled_aIs.resize(_m_nrAgents);
68  for(Index agI=0; agI < _m_nrAgents; agI++)
69  {
71  Index agI_domI = indivDomIndices.at(agI);
72  sampled_aIs.at(agI) = p->SampleAction(agI_domI);
73  }
74  return;
75 }
76 
78  const vector<Index>& indivDomIndices ) const
79 {
80  vector<Index> sampled_aIs;
81  SampleJointActionVector(indivDomIndices, sampled_aIs);
82  Index ja = _m_PTPD->IndividualToJointActionIndices(sampled_aIs);
83  return ja;
84 
85 }
86 void
88  vector<Index>& sampled_aIs ) const
89 {
90 
92  {
93  const vector<Index>& indivDomIndices = _m_PTPD->
94  JointToIndividualPolicyDomainIndicesRef (i, _m_indexDomCat);
95  return( SampleJointActionVector( indivDomIndices, sampled_aIs) );
96  }
97  else
98  {
99  vector<Index> indivDomIndices = _m_PTPD->
100  JointToIndividualPolicyDomainIndices(i, _m_indexDomCat);
101  return( SampleJointActionVector( indivDomIndices, sampled_aIs) );
102  }
103 
104 }
106 {
108  {
109  const vector<Index>& indivDomIndices = _m_PTPD->
110  JointToIndividualPolicyDomainIndicesRef (i, _m_indexDomCat);
111  return( SampleJointAction( indivDomIndices) );
112  }
113  else
114  {
115  vector<Index> indivDomIndices = _m_PTPD->
116  JointToIndividualPolicyDomainIndices(i, _m_indexDomCat);
117  return( SampleJointAction( indivDomIndices) );
118  }
119 
120 }