X-Git-Url: https://ruin.nu/git/?p=popboot.git;a=blobdiff_plain;f=planner.cpp;h=10f5e57f2970f1cd7a111d497de7d75c81dc848b;hp=884567dea5c4329e43b6d0020bd05bd5c12af1fc;hb=fdcf46671ca1dab0dadb490bb4375dc3dd2fc9a4;hpb=85cd90baef74b1af28f9f287bf0dee583d10546d diff --git a/planner.cpp b/planner.cpp index 884567d..10f5e57 100644 --- a/planner.cpp +++ b/planner.cpp @@ -19,14 +19,14 @@ Planner::Planner(std::vector actions, Literals init, Literals goal){ _actions[*effect] = *action; } } - cout << "Number of actions: " << _actions.size() << endl; + cerr << "Number of actions: " << _actions.size() << endl; makePlan(_finish); } Planner::~Planner(){ - for (hash_map::iterator node = _addedNodes.begin(); node != _addedNodes.end(); ++node){ - cerr << "Deleting node " << node->second->action().name() << endl; - delete node->second; + for (vector::iterator node = _addedNodes.begin(); node != _addedNodes.end(); ++node){ + cerr << "Deleting node " << (*node)->action().name() << endl; + delete *node; } } @@ -45,8 +45,8 @@ void Planner::makePlan(Node* node){ }else{ for (Preconditions::const_iterator precond = preconds.begin(); precond != preconds.end(); ++precond){ cerr << "Looking for: '" << precond->first << "'" << endl; - hash_map::iterator addedNode = _addedNodes.find(precond->first); - if(addedNode != _addedNodes.end()){ + hash_map::iterator addedNode = _addedEffects.find(precond->first); + if(addedNode != _addedEffects.end()){ cerr << "Using already added node" << endl; addedNode->second->addChild(node); }else { @@ -73,18 +73,19 @@ void Planner::addNode(Node* node){ cerr << "Adding node for action: " << node->action().name() << endl; const Literals& effects = node->action().effects(0); cerr << "Number of effects: " << effects.size() << endl; + _addedNodes.push_back(node); for (Literals::const_iterator effect = effects.begin(); effect != effects.end(); ++effect){ - cout << "Adding node for effect: " << *effect << endl; - _addedNodes[*effect] = node; + cerr << "Adding node for effect: " << *effect << endl; + _addedEffects[*effect] = node; } } void Planner::execute(){ - _start->execute(true,Literals()); + _start->execute(Literals()); /*for (hash_map::iterator node = _addedNodes.begin(); node != _addedNodes.end(); ++node){ if (node->second->executed()){ }*/ - _start->execute(false,Literals()); + _start->execute(Literals()); }