コード例 #1
0
ファイル: BeliefValue.cpp プロジェクト: heckj/MADP
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);
}
コード例 #2
0
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;
    }
}
コード例 #3
0
ファイル: BeliefValue.cpp プロジェクト: heckj/MADP
/**
 * 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);
}