41 _m_initializeWithImmediateReward(false),
42 _m_initializeWithZero(false),
43 _m_bestValue(-DBL_MAX),
44 _m_beliefsInitialized(false),
45 _m_identification(
"Perseus"),
46 _m_storeIntermediateValueFunctions(false),
47 _m_storeTimings(false),
48 _m_computeVectorForEachBelief(false),
73 throw(
E(
"Perseus::GetInitialValueFunction() can only initialize in one way"));
78 for(
int a=0;a<nrA;a++)
80 for(
int s=0;s!=nrS;s++)
94 double minReward=DBL_MAX;
95 for(
int a=0;a<nrA;a++)
96 for(
int s=0;s<nrS;s++)
107 for(
int s=0;s!=nrS;s++)
125 throw(
E(
"Perseus::GetInitialQFunctions() can only initialize in one way"));
131 for(
unsigned int a=0;a!=nrA;++a)
134 for(
unsigned int s=0;s!=nrS;++s)
146 for(
unsigned int i=0;i!=V0.size();++i)
168 throw(
E(
"Perseus::PrintMaxRewardInBeliefSet belief set not initialized"));
172 double maxBeliefValue=-DBL_MAX;
173 for(
unsigned int i=0;i!=beliefValues.size();i++)
175 if(beliefValues[i]>maxBeliefValue)
176 maxBeliefValue=beliefValues[i];
180 << maxBeliefValue << endl;
184 int nrNotImproved)
const
189 beliefI=
static_cast<int>(nrNotImproved*(rand() / (RAND_MAX + 1.0)));
194 for(
unsigned int j=0;j!=stillNeedToBeImproved.size();j++)
196 if(stillNeedToBeImproved[j])
210 cout <<
"nrNotImproved " << nrNotImproved <<
" beliefI "
212 throw(
E(
"Perseus::SampleNotImprovedBeliefIndex did not sample valid k"));
218 const vector<double> &VBnew,
224 for(
unsigned int i=0;i!=VB.size();i++)
225 if(abs(VB[i]-VBnew[i])>maxDiff)
226 maxDiff=abs(VB[i]-VBnew[i]);
233 else if(maxDiff<1e-4 &&
234 (static_cast<size_t>(iter) >
260 <<
" beliefs"; cout.flush();
280 #if 0 // reduce verbosity
295 cout <<
"Saved timing results to " << ss.str() << endl;
329 ss <<
"PerseusBackupType " << params.
backup <<
" is unknown";
367 stringstream valueFunctionFilename;
380 throw(
E(
"Perseus::StoreValueFunction should be implemented by deriving class"));
385 throw(
E(
"Perseus::StoreValueFunction should be implemented by deriving class"));
390 throw(
E(
"Perseus::StoreValueFunction should be implemented by deriving class"));