30 #include <boost/numeric/ublas/matrix_sparse.hpp>
66 QTable tempTable(nrS,nrJA);
67 for(
unsigned int s=0;s!=nrS;++s)
68 for(
unsigned int ja=0;ja!=nrJA;++ja)
71 for(
Index t=0; t < nrQfunctions; t++)
111 double R_i,R_f,maxQsuc;
114 QTable immReward(nrS,nrJA);
115 for(
Index sI = 0; sI < nrS; sI++)
116 for(
Index jaI = 0; jaI < nrJA; jaI++)
122 for(
size_t t = horizon - 1;
true; t--)
124 for(
Index sI = 0; sI < nrS; sI++)
126 for(
Index jaI = 0; jaI < nrJA; jaI++)
129 R_i = immReward(sI,jaI);
134 for(
Index ssucI = 0; ssucI < nrS; ssucI++)
138 for(
Index jasucI = 0; jasucI < nrJA; jasucI++)
156 double maxDelta=DBL_MAX;
162 typedef boost::numeric::ublas::compressed_matrix<double> CMatrix;
166 for(
unsigned int a=0;a!=nrJA;++a)
168 #if DEBUG_MDPValueIteration
172 Ta=
new CMatrix(nrS,nrS);
174 for(
unsigned int s=0;s!=nrS;++s)
175 for(
unsigned int s1=0;s1!=nrS;++s1)
192 for(
Index jaI = 0; jaI < nrJA; jaI++)
194 for(CMatrix::const_iterator1 ri=T[jaI]->begin1();
195 ri!=T[jaI]->end1(); ++ri)
200 R_i = immReward(sI,jaI);
204 for (CMatrix::const_iterator2 ci = ri.begin();
205 ci != ri.end(); ++ci)
211 for(
Index jasucI = 0; jasucI < nrJA; jasucI++)
212 maxQsuc = max( oldQtable(ssucI,jasucI),
215 R_f += *ci * maxQsuc;
219 maxDelta=max(maxDelta,abs(oldQtable(sI,jaI)-
226 #if DEBUG_MDPValueIteration
227 cout <<
"delta " << maxDelta << endl;
232 for(
unsigned int a=0;a!=nrJA;++a)
237 #if DEBUG_MDPValueIteration