vector<double> BeliefValue::GetValues(const BeliefSet &Beliefs, const QFunctionsDiscrete &Q) { vector<double> values(Beliefs.size()), maxValues(Beliefs.size(),-DBL_MAX); for(QFDcit i=Q.begin();i!=Q.end();++i) { values=GetValues(Beliefs,*i); for(unsigned int j=0;j!=values.size();++j) if(values[j]>maxValues[j]) maxValues[j]=values[j]; } return(maxValues); }
void AlphaVectorPlanning::ExportBeliefSet(const BeliefSet &B, const string &filename) { ofstream fp(filename.c_str()); if(!fp) { cerr << "AlphaVectorPlanning::ExportBeliefSet: failed to open file " << filename << endl; } int nrB=B.size(); for(int b=0;b!=nrB;b++) { for(unsigned int s=0;s!=B[b]->Size();s++) fp << B[b]->Get(s) << " "; fp << endl; } }
/** * Implements equation (3.5) of PhD thesis Matthijs. */ vector<double> BeliefValue::GetValues(const BeliefSet &Beliefs, const ValueFunctionPOMDPDiscrete &V) { int nrInV=V.size(); int nrB=Beliefs.size(); vector<double> values(nrB,-DBL_MAX); double x; for(int b=0;b!=nrB;b++) for(int i=0;i!=nrInV;i++) { // compute inner product of belief with vector x=Beliefs[b]->InnerProduct(V[i].GetValues()); // keep the maximizing value if(x>values[b]) values[b]=x; } return(values); }