99#include < iostream>
1010#include < cassert>
1111
12+ set<int > get_relevant_basic_variables (vector<int > target_axioms);
13+
1214PR2State & PR2State::operator =(const PR2State &other) {
1315 if (this != &other) {
1416 vars = other.vars ;
@@ -81,9 +83,7 @@ PR2State * PR2State::progress(const PR2OperatorProxy &op) {
8183 (*next)[eff.get_fact ().get_variable ().get_id ()] = eff.get_fact ().get_value ();
8284 }
8385
84- // PR2 TODO : This is disabled since we cannot handle domains with axioms,
85- // leaving it in slows us down.
86- // g_axiom_evaluator->evaluate(*this);
86+ PR2.axioms .axiom_evaluator ->evaluate (this ->vars );
8787
8888 return next;
8989
@@ -94,8 +94,7 @@ PR2State * PR2State::regress(const PR2OperatorProxy &op, PR2State *context) {
9494 assert (!op.is_axiom ());
9595 assert (NULL != context);
9696
97- // vector<int> relevant_axioms = {};
98- // set<int> added = {};
97+ vector<int > relevant_axioms;
9998
10099 PR2State * prev = new PR2State (*this );
101100
@@ -126,14 +125,14 @@ PR2State * PR2State::regress(const PR2OperatorProxy &op, PR2State *context) {
126125 }
127126 }
128127
129- // Remove all of the prevail effects
130- for (auto pre : op.get_preconditions ()) {
131- int var = pre .get_variable ().get_id ();
132- int val = pre .get_value ();
133- if (0 == seen.count (var) && context->triggers (pre )) {
134- (*prev)[var] = -1 ;
135- }
136- }
128+ // // Remove all of the prevail effects
129+ // for (auto pre : op.get_preconditions()) {
130+ // int var = pre.get_variable().get_id();
131+ // int val = pre.get_value();
132+ // if (0 == seen.count(var) && context->triggers(pre)) {
133+ // (*prev)[var] = -1;
134+ // }
135+ // }
137136
138137 // Assign the values from the context that are mentioned in conditions
139138 for (auto var : *(PR2.general .conditional_mask [op.nondet_index ]))
@@ -143,47 +142,20 @@ PR2State * PR2State::regress(const PR2OperatorProxy &op, PR2State *context) {
143142 for (FactProxy pre : op.get_preconditions ()) {
144143 // if the precondition is an derived predicate, find relevant variables and undefine
145144 if (pre .get_variable ().is_derived ()) {
146- // relevant_axioms.push_back(pre.get_pair().var);
145+ relevant_axioms.push_back (pre .get_pair ().var );
147146 // else set to context value
148147 } else {
149148 (*prev)[pre .get_pair ().var ] = pre .get_pair ().value ;
150149 }
151150 }
152151
153- // cout << prev->get_unpacked_values() << endl;
154-
155- // set<int> potential_untouchables = get_relevant_basic_variables(relevant_axioms);
156-
157- // set<int> intermediate;
152+ // set<int> required_basics = get_relevant_basic_variables(relevant_axioms);
158153
159- // std::set_difference(
160- // potential_untouchables.begin(), potential_untouchables.end(),
161- // (*prev).untouchables.begin(), (*prev).untouchables.end(),
162- // inserter(intermediate, intermediate.begin()));
163-
164- // (*prev).untouchables = intermediate;
165-
166- // cout << prev->get_unpacked_values() << endl;
167-
168- // for (int index : (*prev).untouchables)
154+ // for (int index : required_basics)
169155 // {
170156 // int new_index = PR2.proxy->get_variables()[index].get_id();
171157 // (*prev)[new_index] = (*context)[new_index];
172158 // }
173-
174- // set<int> step1 = {};
175- // set<int> step2 = {};
176-
177- // std::set_union(potential_untouchables.begin(), potential_untouchables.end(),
178- // (*context).untouchables.begin(), (*context).untouchables.end(),
179- // inserter(step1,step1.begin()));
180-
181- // std::set_difference(
182- // step1.begin(), step1.end(),
183- // added.begin(), added.end(),
184- // inserter(step2, step2.begin()));
185-
186- // (*prev).untouchables = step2;
187159
188160 // //Undefine all axioms
189161 // for (int i = 0; i < vars.size(); i++) {
@@ -214,7 +186,7 @@ set<int> get_relevant_basic_variables(vector<int> target_axioms) {
214186 if (op.get_effects ()[0 ].get_fact ().get_pair ().var == target) {
215187 for (FactProxy pre : op.get_effects ()[0 ].get_conditions ()) {
216188 int index = pre .get_variable ().get_id ();
217- if (pre .get_variable ().get_axiom_layer () != - 1 ) {
189+ if (pre .get_variable ().is_derived () ) {
218190 if (find (seen.begin (), seen.end (), index) == seen.end ()) {
219191 target_axioms.push_back (index);
220192 seen.push_back (index);
0 commit comments