void VNode::PrintPolicyTree(int depth, ostream& os) { if (depth != -1 && this->depth() > depth) return; vector<QNode*>& qnodes = children(); if (qnodes.size() == 0) { int astar = this->default_move().action; os << this << "-a=" << astar << endl; } else { QNode* qstar = NULL; for (int a = 0; a < qnodes.size(); a++) { QNode* qnode = qnodes[a]; if (qstar == NULL || qnode->lower_bound() > qstar->lower_bound()) { qstar = qnode; } } os << this << "-a=" << qstar->edge() << endl; vector<OBS_TYPE> labels; map<OBS_TYPE, VNode*>& vnodes = qstar->children(); for (map<OBS_TYPE, VNode*>::iterator it = vnodes.begin(); it != vnodes.end(); it++) { labels.push_back(it->first); } for (int i = 0; i < labels.size(); i++) { if (depth == -1 || this->depth() + 1 <= depth) { os << repeat("| ", this->depth()) << "| o=" << labels[i] << ": "; qstar->Child(labels[i])->PrintPolicyTree(depth, os); } } } }
void VNode::PrintTree(int depth, ostream& os) { if (depth != -1 && this->depth() > depth) return; if (this->depth() == 0) { os << "d - default value" << endl << "l - lower bound" << endl << "u - upper bound" << endl << "r - totol weighted one step reward" << endl << "w - total particle weight" << endl; } os << "(" << "d:" << this->default_move().value << " l:" << this->lower_bound() << ", u:" << this->upper_bound() << ", w:" << this->Weight() << ", weu:" << DESPOT::WEU(this) << ")" << endl; vector<QNode*>& qnodes = children(); for (int a = 0; a < qnodes.size(); a++) { QNode* qnode = qnodes[a]; vector<OBS_TYPE> labels; map<OBS_TYPE, VNode*>& vnodes = qnode->children(); for (map<OBS_TYPE, VNode*>::iterator it = vnodes.begin(); it != vnodes.end(); it++) { labels.push_back(it->first); } os << repeat("| ", this->depth()) << "a=" << qnode->edge() << ": " << "(d:" << qnode->default_value << ", l:" << qnode->lower_bound() << ", u:" << qnode->upper_bound() << ", r:" << qnode->step_reward << ")" << endl; for (int i = 0; i < labels.size(); i++) { if (depth == -1 || this->depth() + 1 <= depth) { os << repeat("| ", this->depth()) << "| o=" << labels[i] << ": "; qnode->Child(labels[i])->PrintTree(depth, os); } } } }