diff options
author | dmack <dmack@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2009-01-09 21:45:56 +0000 |
---|---|---|
committer | dmack <dmack@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2009-01-09 21:45:56 +0000 |
commit | b02a9ccbcc574190341d245d69464c46f36f57da (patch) | |
tree | f236e70be0ab471087a9b9010127df83340d812d | |
parent | 242474893f2a2e17eaa986de29e35b1a6507aac0 (diff) | |
download | ATCD-b02a9ccbcc574190341d245d69464c46f36f57da.tar.gz |
Fri Jan 9 21:39:55 UTC 2009 Daniel L.C. Mack <daniel.l.mack@vanderbilt.edu>
-rw-r--r-- | SA_POP/C2W/C2W_Demo.cpp | 50 | ||||
-rw-r--r-- | SA_POP/C2W/LogGraphOut.cpp | 44 | ||||
-rw-r--r-- | SA_POP/ChangeLog | 29 | ||||
-rw-r--r-- | SA_POP/Planner.cpp | 14 | ||||
-rw-r--r-- | SA_POP/Planner.h | 22 | ||||
-rw-r--r-- | SA_POP/SANet/SANet.cpp | 54 | ||||
-rw-r--r-- | SA_POP/SANet/SANet.h | 22 | ||||
-rw-r--r-- | SA_POP/SANet/SANode.cpp | 73 | ||||
-rw-r--r-- | SA_POP/SANet/SANode.h | 33 | ||||
-rw-r--r-- | SA_POP/SA_WorkingPlan.cpp | 2 |
10 files changed, 311 insertions, 32 deletions
diff --git a/SA_POP/C2W/C2W_Demo.cpp b/SA_POP/C2W/C2W_Demo.cpp index 155bc74ff21..8c8946e04bc 100644 --- a/SA_POP/C2W/C2W_Demo.cpp +++ b/SA_POP/C2W/C2W_Demo.cpp @@ -25,6 +25,7 @@ #include "LogGraphOut.h" #include <vector> +#include <map> //Commands to run in the thread unsigned long WINAPI ThirdThread(PVOID pvParam) @@ -35,7 +36,7 @@ unsigned long WINAPI ThirdThread(PVOID pvParam) } //for displaying conditions -void displayConds(SA_POP::Planner *plans, std::vector<SANet::CondID> checks) +void displayConds(SA_POP::Planner *plans, std::vector<SANet::CondID> checks, std::map<SANet::CondID, double> *cMap) { std::ofstream cfile; @@ -49,10 +50,20 @@ void displayConds(SA_POP::Planner *plans, std::vector<SANet::CondID> checks) if(plans->get_cond_val(checks[node]) == 1) { + std::map<SANet::CondID, double>::iterator cmp = cMap->find(checks[node]); + if(cmp != cMap->end()) + { + (*cmp).second = 1; + } cfile << "\t" << "\"" << plans->get_cond_name(checks[node]) << " " << checks[node] << "\" [shape = box, color = green];\n"; } else - { + { + std::map<SANet::CondID, double>::iterator cmp = cMap->find(checks[node]); + if(cmp != cMap->end()) + { + (*cmp).second = 0; + } cfile << "\t" << "\"" << plans->get_cond_name(checks[node]) << " " << checks[node] << "\" [shape = box, color = red];\n"; } std::cout << "Ready for Next Cond" << std::endl; @@ -80,6 +91,7 @@ int main (int argc, char* argv[]) std::string tm_filename = ""; std::vector<SA_POP::CondID> * kconds = new std::vector<SA_POP::CondID>; std::vector<SANet::CondID> toCheck; + std::map<SANet::CondID, double> condMap; // Get filenames from user. std::cout << "Task Network file: "; @@ -165,6 +177,7 @@ int main (int argc, char* argv[]) std::cout << "Enter the Condition ID to track:"; std::cin >> cid; SA_POP::CondID ccid = SA_POP::CondID(cid); + condMap.insert(std::make_pair(ccid, 1)); toCheck.push_back(ccid); } @@ -193,7 +206,7 @@ int main (int argc, char* argv[]) std::string step; std::cout << "Would you like to advance to the next time step? (Y or N): "; - displayConds(planner, toCheck); + displayConds(planner, toCheck, &condMap); std::cin >> step; if(step == "Y" || step == "y") { @@ -213,8 +226,17 @@ int main (int argc, char* argv[]) std::cin >> curTask; std::cout << "Enter the Condition ID: "; std::cin >> curEff; - //planner->(curTask, curEff, -1); - planner->replan(100); + SA_POP::SA_Builder rebuilder; + sanet_in.build_net (sanet_filename, &rebuilder); + tm_in.build_task_map (tm_filename, &rebuilder); + planner = rebuilder.get_planner (); + planner->add_out_adapter (&graph_out); + for(std::map<SANet::CondID, double>::iterator cIter = condMap.begin(); cIter != condMap.end(); cIter++) + { + planner->update_cond_val((*cIter).first, (*cIter).second); + } + planner->update_effect(curTask, curEff, -1); + planner->plan(100, goal); } else if(eff == "C" || eff == "c") @@ -225,8 +247,22 @@ int main (int argc, char* argv[]) std::cin >> envi; std::cout << "Enter the Probability: "; std::cin >> newprob; - planner->update_cond_val(envi, newprob); - planner->replan (100, goal); + std::map<SANet::CondID, double>::iterator cmp = condMap.find(envi); + if(cmp != condMap.end()) + { + (*cmp).second = newprob; + } + SA_POP::SA_Builder rebuilder; + sanet_in.build_net (sanet_filename, &rebuilder); + tm_in.build_task_map (tm_filename, &rebuilder); + planner = rebuilder.get_planner (); + planner->add_out_adapter (&graph_out); + for(std::map<SANet::CondID, double>::iterator cIter = condMap.begin(); cIter != condMap.end(); cIter++) + { + planner->update_cond_val((*cIter).first, (*cIter).second); + } + planner->plan (100, goal); + } else { diff --git a/SA_POP/C2W/LogGraphOut.cpp b/SA_POP/C2W/LogGraphOut.cpp index 7c6eaafe4b4..3cbbb0c0005 100644 --- a/SA_POP/C2W/LogGraphOut.cpp +++ b/SA_POP/C2W/LogGraphOut.cpp @@ -65,7 +65,7 @@ void LogGraphOut::notify_eu (SA_POP::Planner *planner) unsigned long WINAPI SecondThread(PVOID pvParam) { system("dot -Tgif GViz.dot -o step.gif"); - //system("step.gif"); + system("step.gif"); return 0; } @@ -130,8 +130,10 @@ void LogGraphOut::notify_plan (SA_POP::Planner *planner) ofstream gfile; gfile.open("GViz.dot"); + gfile << "strict digraph graph" << graphn << " {\n"; + planner->print_graph(gfile); if(graphn == 0) { for (CLSet::iterator cl_iter = plan.causal_links.begin (); @@ -160,15 +162,39 @@ void LogGraphOut::notify_plan (SA_POP::Planner *planner) if(planner->get_start_window (clink.first).first <= lastime) { - gfile << "\t" << "\"" << planner->get_task_name (planner->get_task_from_inst (clink.first)) << " " << planner->get_task_from_inst (clink.first) << "\" " << "[shape=box];\n"; - gfile << "\t" << "\"" << planner->get_task_name (planner->get_task_from_inst (clink.first)) << " " << planner->get_task_from_inst (clink.first) << "\" " << " -> "; - gfile << "\"" << planner->get_cond_name (clink.cond.id) << " " << clink.cond.id << "\" " << ";\n"; - if(planner->get_start_window (clink.second).first <= lastime) + if(planner->get_start_window (clink.first).first == lastime) + { + gfile << "\t" << "\"" << planner->get_task_name (planner->get_task_from_inst (clink.first)) << " " << planner->get_task_from_inst (clink.first) << "\" " << "[shape=box, color= green];\n"; + gfile << "\t\"" << planner->get_cond_name (clink.cond.id) << " " << clink.cond.id << "\" " << "[color = green];\n"; + gfile << "\t" << "\"" << planner->get_task_name (planner->get_task_from_inst (clink.first)) << " " << planner->get_task_from_inst (clink.first) << "\" " << " -> "; + gfile << "\"" << planner->get_cond_name (clink.cond.id) << " " << clink.cond.id << "\" " << ";\n"; + } + else + { + gfile << "\t" << "\"" << planner->get_task_name (planner->get_task_from_inst (clink.first)) << " " << planner->get_task_from_inst (clink.first) << "\" " << "[shape=box, color= blue];\n"; + gfile << "\t\"" << planner->get_cond_name (clink.cond.id) << " " << clink.cond.id << "\" " << "[color = blue];\n"; + gfile << "\t" << "\"" << planner->get_task_name (planner->get_task_from_inst (clink.first)) << " " << planner->get_task_from_inst (clink.first) << "\" " << " -> "; + gfile << "\"" << planner->get_cond_name (clink.cond.id) << " " << clink.cond.id << "\" " << ";\n"; + } + + if(planner->get_start_window (clink.second).first <= lastime) { - gfile << "\t" << "\"" << planner->get_task_name (planner->get_task_from_inst (clink.second)) << " " << planner->get_task_from_inst (clink.second) << "\" " << "[shape=box];\n"; - gfile << "\t" << "\"" << planner->get_cond_name (clink.cond.id) << " " << clink.cond.id << "\" " << " -> "; - gfile << "\"" << planner->get_task_name (planner->get_task_from_inst (clink.second)) << " " << planner->get_task_from_inst (clink.second) << "\" " << "\n"; - } + if(planner->get_start_window (clink.second).first == lastime) + { + gfile << "\t" << "\"" << planner->get_task_name (planner->get_task_from_inst (clink.second)) << " " << planner->get_task_from_inst (clink.second) << "\" " << "[shape=box, color = green];\n"; + //gfile << "\t\"" << planner->get_cond_name (clink.cond.id) << " " << clink.cond.id << "\" " << "[color = green];\n"; + gfile << "\t" << "\"" << planner->get_cond_name (clink.cond.id) << " " << clink.cond.id << "\" " << " -> "; + gfile << "\"" << planner->get_task_name (planner->get_task_from_inst (clink.second)) << " " << planner->get_task_from_inst (clink.second) << "\" " << ";\n"; + } + else + { + gfile << "\t" << "\"" << planner->get_task_name (planner->get_task_from_inst (clink.second)) << " " << planner->get_task_from_inst (clink.second) << "\" " << "[shape=box, color = blue];\n"; + gfile << "\t\"" << planner->get_cond_name (clink.cond.id) << " " << clink.cond.id << "\" " << "[color = blue];\n"; + gfile << "\t" << "\"" << planner->get_cond_name (clink.cond.id) << " " << clink.cond.id << "\" " << " -> "; + gfile << "\"" << planner->get_task_name (planner->get_task_from_inst (clink.second)) << " " << planner->get_task_from_inst (clink.second) << "\" " << ";\n"; + + } + } } } diff --git a/SA_POP/ChangeLog b/SA_POP/ChangeLog index b5c8484b449..228e1a0741d 100644 --- a/SA_POP/ChangeLog +++ b/SA_POP/ChangeLog @@ -1,13 +1,36 @@ +Fri Jan 9 21:39:55 UTC 2009 Daniel L.C. Mack <daniel.l.mack@vanderbilt.edu> + + * C2W/C2W_Demo.cpp: + Utilize update_effect function + + * C2W/LogGraphOut.cpp: + Utilizes Complete Graphviz Visualization + + * Planner.h: + * Planner.cpp: + Uses SANET::update_effect + + * SANet/SANet.h: + * SANet/SANet.cpp: + Implements SANET::update_effect, which updates an effect link in a SANet, calls TaskNode::update_effect_link + + * SANet/SANode.h: + * SANet/SANode.cpp: + Implements TaskNode::update_effect_link and CondNode::update_pre_link + + * SA_WorkingPlan.cpp: + Clears causal links in reset_plan. + Wed Dec 17 23:21:30 UTC 2008 Daniel L.C. Mack <daniel.l.mack@vanderbilt.edu> * C2W/C2W_Demo.cpp: - Minor update to setting effect + Minor update to setting effect * Planner.cpp: - Fixed typo + Fixed typo * SANet/SANode.cpp: - Check for changed condition value in CondNode::update() + Check for changed condition value in CondNode::update() Wed Dec 17 22:55:40 UTC 2008 Daniel L.C. Mack <daniel.l.mack@vanderbilt.edu> diff --git a/SA_POP/Planner.cpp b/SA_POP/Planner.cpp index 46af16a0cea..56552fbe0e6 100644 --- a/SA_POP/Planner.cpp +++ b/SA_POP/Planner.cpp @@ -528,14 +528,18 @@ TaskImplID Planner::get_impl_id (TaskInstID task_inst) return this->working_plan_->get_impl_id(task_inst); } - //****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP**** - // update effect throws excepetion - //TODO: Add Update fucntions in SANet and SANode for updating the effect link. - //****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP****TEMP**** + +void Planner::print_graph (std::basic_ostream<char, std::char_traits<char> >& strm) +{ + this->sanet_->print_graphviz(strm); + +} + +//Allows the planner to update an effect link void Planner::update_effect (SANet::TaskID tsk, SANet::CondID cnd, SANet::LinkWeight weight) { - this->sanet_->add_effect_link(tsk, cnd, weight); + this->sanet_->update_effect_link(tsk, cnd, weight); } diff --git a/SA_POP/Planner.h b/SA_POP/Planner.h index d38795e73f3..ef85438a7d3 100644 --- a/SA_POP/Planner.h +++ b/SA_POP/Planner.h @@ -489,16 +489,24 @@ namespace SA_POP { virtual TaskImplID get_impl_id (TaskInstID task_inst); - /// (re) Set Effect Link - /** - * @param task_inst The task id + /// (re) Set Effect Link + /** + * @param task_inst The task id * @param task_inst The Cond ID * @param task_inst The LinkWeight - * @param task_inst The PortID(default is blank) - * - * @return nothing - */ + * + * + * @return nothing + */ virtual void update_effect (SANet::TaskID tsk, SANet::CondID cnd, SANet::LinkWeight weight); + + /// print the graphviz network of the SANet + /** + * @param strm Output stream on which to print network representation. + * + * @return nothing + */ + virtual void print_graph (std::basic_ostream<char, std::char_traits<char> >& strm); protected: diff --git a/SA_POP/SANet/SANet.cpp b/SA_POP/SANet/SANet.cpp index e9bcb511394..a12798318f4 100644 --- a/SA_POP/SANet/SANet.cpp +++ b/SA_POP/SANet/SANet.cpp @@ -150,6 +150,60 @@ void SANet::Network::add_effect_link (TaskID task_ID, CondID cond_ID, cond_ID), port_ID)); }; +void SANet::Network::update_effect_link(TaskID task_ID, CondID cond_ID, + LinkWeight weight, PortID port_ID) +{ + // Find task node pointer, throwing exception if not found. + TaskNodeMap::iterator task_iter = task_nodes_.find (task_ID); + if (task_iter == task_nodes_.end ()) { + throw UnknownNode (); + } + TaskNode *task_node = task_iter->second; + + // Find condition node pointer, throwing exception if not found. + CondNodeMap::iterator cond_iter = cond_nodes_.find (cond_ID); + if (cond_iter == cond_nodes_.end ()) { + throw UnknownNode (); + } + CondNode *cond_node = cond_iter->second; + + // update link.************** + task_node->update_effect (cond_ID, cond_node, weight); + + // Update link to port map. + + EffectLinkPortMap::iterator eliter = this->effect_links_.find((std::make_pair (task_ID, + cond_ID))); + if(eliter != effect_links_.end()) + { + (*eliter).second = port_ID; + } + +}; + +void SANet::Network::print_graphviz(std::basic_ostream<char, std::char_traits<char> >& strm) +{ + for (TaskNodeMap::iterator node_iter = task_nodes_.begin (); + node_iter != task_nodes_.end (); node_iter++) + { + strm << "\t" << "\"" << node_iter->second->get_name() << " " << node_iter->first << "\" " << "[shape=box, color = grey];\n"; + } + + for (CondNodeMap::iterator node_iter = cond_nodes_.begin (); + node_iter != cond_nodes_.end (); node_iter++) + { + strm << "\t" << "\"" << node_iter->second->get_name() << " " << node_iter->first << "\" " << "[color = grey];\n"; + } + + for (TaskNodeMap::iterator node_iter = task_nodes_.begin (); + node_iter != task_nodes_.end (); node_iter++) + { + node_iter->second->print_effects_graphviz(strm); + node_iter->second->print_preconds_graphviz(strm); + } + +} + void SANet::Network::print_xml (std::basic_ostream<char, std::char_traits<char> >& strm) { strm << "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" << std::endl; diff --git a/SA_POP/SANet/SANet.h b/SA_POP/SANet/SANet.h index fc14337dfc1..35d48c6bb59 100644 --- a/SA_POP/SANet/SANet.h +++ b/SA_POP/SANet/SANet.h @@ -120,6 +120,20 @@ namespace SANet { virtual void add_effect_link (TaskID task_ID, CondID cond_ID, LinkWeight weight, PortID port_ID = ""); + /// Update the task to condition link. + /** + * @param cond_ID Condition node ID. + * + * @param task_ID Task node ID. + * + * @param weight Link weight (probability task sets condition to + * true, or negative of the probability task sets condition to false). + * + * @param port_ID ID of port (on task) associated with this condition + * (used for data nodes). + */ + void update_effect_link(TaskID task_ID, CondID cond_ID, + LinkWeight weight, PortID port_ID= ""); // ************************************************************************ @@ -134,6 +148,14 @@ namespace SANet { */ virtual void print (std::basic_ostream<char, std::char_traits<char> >& strm = std::cout, bool verbose = false); + + /// Print Graphviz network representation to stream. + /** + * @param strm Output stream on which to print network representation. + */ + virtual void print_graphviz (std::basic_ostream<char, std::char_traits<char> >& strm); + + /// Print XML network representation to stream. /** diff --git a/SA_POP/SANet/SANode.cpp b/SA_POP/SANet/SANode.cpp index 76c346b0f95..e19fb50b36e 100644 --- a/SA_POP/SANet/SANode.cpp +++ b/SA_POP/SANet/SANode.cpp @@ -480,6 +480,36 @@ void TaskNode::print_precond_links_xml (std::basic_ostream<char, std::char_trait } }; +//print Graphviz DOT format of precondition links +void TaskNode::print_preconds_graphviz(std::basic_ostream<char, std::char_traits<char> >& + strm) +{ + for (NodeMap::iterator node_iter = pre_nodes_.begin (); + node_iter != pre_nodes_.end (); node_iter++) + { + //format for a pre-cond in graphviz with condition then task + strm << "\t" << "\"" << node_iter->second->get_name() << " " << node_iter->first << "\" " << " -> "; + strm << "\"" << this->name_ << " " << this->ID_ << "\" " << ";\n"; + } + + +} + +//print Graphviz DOT format of effect links +void TaskNode::print_effects_graphviz(std::basic_ostream<char, std::char_traits<char> >& + strm) +{ + for (NodeMap::iterator node_iter = post_nodes_.begin (); + node_iter != post_nodes_.end (); node_iter++) + { + //format for the effect link in graphviz with task then condition + strm << "\t" << "\"" << this->name_ << " " << this->ID_ << "\" " << " -> "; + strm << "\"" << node_iter->second->get_name() << " " << node_iter->first << "\" " << ";\n"; + } + + +} + // Print XML representation of node's effect links to stream. void TaskNode::print_effect_links_xml (std::basic_ostream<char, std::char_traits<char> >& strm) @@ -661,6 +691,30 @@ void TaskNode::add_effect (CondID ID, CondNode *node, LinkWeight weight) node->add_pre_link (ID_, this, weight); }; +void TaskNode::update_effect (CondID ID, CondNode *node, LinkWeight weight) +{ + // update node to post-nodes. + + NodeMap::iterator pnodesiter = post_nodes_.find(ID); + if(pnodesiter != post_nodes_.end()) + { + (*pnodesiter).second = node; + } + + + // update link weight + + LinkMap::iterator pliter = post_links_.find(ID); + if(pliter != post_links_.end()) + { + (*pliter).second = weight; + } + + // update link for precondition node. + node->update_pre_link (ID_, this, weight); +}; + + CondNode::CondNode (CondID ID, std::string name, MultFactor atten_factor, Probability true_prob, Probability false_prob, Utility goal_util, CondKind condkind) : Node (ID, name, atten_factor), @@ -1310,6 +1364,25 @@ void CondNode::add_pre_link (TaskID ID, TaskNode *node, LinkWeight weight) pre_links_.insert (std::make_pair (ID, weight)); }; +void CondNode::update_pre_link (TaskID ID, TaskNode *node, LinkWeight weight) +{ + // update node to pre-nodes. + + NodeMap::iterator nmiter = pre_nodes_.find(ID); + if(nmiter != pre_nodes_.end()) + { + (*nmiter).second = node; + } + + // update link weight. + + LinkMap::iterator lmiter = pre_links_.find(ID); + if(lmiter != pre_links_.end()) + { + (*lmiter).second = weight; + } +}; + void CondNode::add_post_link (TaskID ID, TaskNode *node, LinkWeight weight) { // Add node to post-nodes. diff --git a/SA_POP/SANet/SANode.h b/SA_POP/SANet/SANode.h index a83a9436c13..75e12221948 100644 --- a/SA_POP/SANet/SANode.h +++ b/SA_POP/SANet/SANode.h @@ -255,6 +255,18 @@ namespace SANet { */ virtual void print_effect_links_xml (std::basic_ostream<char, std::char_traits<char> >& strm); + /// Print Graphviz representation of node's pre-condition links to stream. + /** + * @param strm Output stream on which to print links into Graphviz representation. + */ + virtual void print_preconds_graphviz(std::basic_ostream<char, std::char_traits<char> >& strm); + + /// Print Graphviz representation of node's effect links to stream. + /** + * @param strm Output stream on which to print links into Graphviz representation. + */ + virtual void print_effects_graphviz(std::basic_ostream<char, std::char_traits<char> >& strm); + /// Update node to next step. /** * @return True if node changed probability or utility, false otherwise. @@ -295,6 +307,17 @@ namespace SANet { */ virtual void add_effect (CondID ID, CondNode *node, LinkWeight weight); + /// Update effect link. + /** + * @param ID Node ID. + * + * @param node Node pointer. + * + * @param weight Link weight (probability task sets condition to + * true, or negative of the probability task sets condition to false). + */ + virtual void update_effect (CondID ID, CondNode *node, LinkWeight weight); + protected: /// Unconditional prior probability of success. Probability prior_prob_; @@ -390,6 +413,16 @@ namespace SANet { */ virtual void add_pre_link (TaskID ID, TaskNode *node, LinkWeight weight); + /// update pre-link. + /** + * @param ID Node ID. + * + * @param node Node pointer. + * + * @param weight Link weight. + */ + virtual void update_pre_link (TaskID ID, TaskNode *node, LinkWeight weight); + /// Add post-link. /** * @param ID Node ID. diff --git a/SA_POP/SA_WorkingPlan.cpp b/SA_POP/SA_WorkingPlan.cpp index b2f3c11ecee..2182d67f9f3 100644 --- a/SA_POP/SA_WorkingPlan.cpp +++ b/SA_POP/SA_WorkingPlan.cpp @@ -252,7 +252,7 @@ void SA_WorkingPlan::reset_plan () next_inst_id_ =1; this->task_insts_.clear (); this->task_impls_.clear (); - this->causal_links_.clear (); + this->causal_links_.clear (); // Clear goal. this->goal_.goal_id = "NULL"; |