MultiAgentDecisionProcess  Release 0.2.1
AlphaVectorPlanning.h
Go to the documentation of this file.
1 
28 /* Only include this header file once. */
29 #ifndef _ALPHAVECTORPLANNING_H_
30 #define _ALPHAVECTORPLANNING_H_ 1
31 
32 /* the include directives */
33 #include <iostream>
34 #include "Globals.h"
35 
36 #include <boost/multi_array.hpp>
37 
38 #include "VectorSet.h"
39 #include "BeliefSet.h"
40 #include "TimedAlgorithm.h"
42 
43 // for their matrix classes
44 #include "TransitionModelMapping.h"
48 
50 class AlphaVector;
51 namespace ArgumentHandlers {
52  class Arguments;
53 };
54 
56 typedef boost::multi_array<VectorSet*,2> GaoVectorSet;
58 typedef GaoVectorSet::index GaoVectorSetIndex;
59 
63 {
64 private:
65 
69 
70  std::vector<const TransitionModelMapping::Matrix* > _m_T;
71  std::vector<const ObservationModelMapping::Matrix* > _m_O;
72 
73  std::vector<const TransitionModelMappingSparse::SparseMatrix* > _m_Ts;
74  std::vector<const ObservationModelMappingSparse::SparseMatrix* > _m_Os;
75 
76  typedef boost::numeric::ublas::compressed_vector<double> SparseVector;
77  std::vector<std::vector<SparseVector* > > _m_TsForBackup;
78  std::vector<std::vector<SparseVector* > > _m_OsForBackup;
79  std::vector<std::vector<std::vector<SparseVector* > > > _m_TsOsForBackup;
80 
82 
83  GaoVectorSet BackProjectFull(const VectorSet &v) const;
85 
87 
88  void DeInitialize();
89 
90 protected:
91 
92 public:
93  // Constructor, destructor and copy assignment.
97  virtual ~AlphaVectorPlanning();
98 
99  void Initialize();
100 
103  { return(_m_pu); }
104 
107 
109  GaoVectorSet BackProject(const VectorSet &v) const;
110 
113  ArgumentHandlers::Arguments args) const;
114 
116  VectorSet CrossSum(const VectorSet &A, const VectorSet &B) const;
117 
118  void MonahanCrossSum(const GaoVectorSet &G,
120  Index a,
121  bool doIncPrune) const;
122 
123  GaoVectorSet
124  BackProjectMonahan(const QFunctionsDiscrete &Qs) const;
125 
127 
130  Prune(const ValueFunctionPOMDPDiscrete &V) const;
131 
133  VectorSet Prune(const VectorSet &V) const;
134 
136  static void ExportValueFunction(const std::string & filename,
137  const ValueFunctionPOMDPDiscrete &V);
138 
140  static void ExportValueFunction(const std::string & filename,
141  const QFunctionsDiscrete &Q);
142 
144  static void ExportValueFunction(const std::string & filename,
146 
149  ImportValueFunction(const std::string & filename);
150 
152  ImportValueFunction(const std::string & filename, size_t nr,
153  size_t nrA, size_t nrS);
154 
157 
161 
164 
166  static void ExportPOMDPFile(const std::string & filename,
167  const PlanningUnitDecPOMDPDiscrete *pu);
168 
170  void ExportPOMDPFile(const std::string & filename) const;
171 
173  static void ExportBeliefSet(const BeliefSet &B,
174  const std::string & filename);
175 
178 
179  static QFunctionsDiscrete
181  size_t nrA, size_t nrS);
182 
183  static std::vector<int> GetDuplicateIndices(const VectorSet &V);
184 
185  static bool VectorIsInValueFunction(const AlphaVector &alpha,
186  const ValueFunctionPOMDPDiscrete &V);
187 };
188 
189 #endif /* !_ALPHAVECTORPLANNING_H_ */
190 
191 // Local Variables: ***
192 // mode:c++ ***
193 // End: ***