private List <string> DeriveVariables(HSPOperator _op) { List <string> list = new List <string>(); for (var j = 0; j < _op._params.Count; j++) { list.Add(_op._params[j].GetName()); } return(list); }
private HSPAction ConvertOperatorIntoAction(HSPOperator _operator, Dictionary <string, string> _subst) { List <string> args = new List <string>(); List <HSPPredicate> preconditions = new List <HSPPredicate>(); List <HSPPredicate> posEffects = new List <HSPPredicate>(); List <HSPPredicate> negEffects = new List <HSPPredicate>(); foreach (HSPTerm param in _operator._params) { string arg = _subst[param.GetName()]; args.Add(arg); } foreach (HSPLiteral _precondition in _operator._preconditions) { bool positive = _precondition.isPositive(); if (positive) { HSPPredicate ground = _precondition._predicate.GroundToConstant(_subst); preconditions.Add(ground); } } foreach (HSPLiteral effect in _operator._effects) { //Ground converts variable to constant for each operation effect HSPPredicate ground = effect._predicate.GroundToConstant(_subst); if (effect.isPositive()) { //posEffects.Add(ground.GetString()); posEffects.Add(ground); } else if (effect.isNegative()) { //negEffects.Add(ground.GetString()); negEffects.Add(ground); } } return(new HSPAction(_operator._name, args, preconditions, posEffects, negEffects)); }
private List <HashSet <string> > DeriveObjects(HSPOperator _op, List <HSPPredicate> _objects) { List <HashSet <string> > list = new List <HashSet <string> >(); for (var i = 0; i < _op._params.Count; i++) { string type = _op._params[i].GetTermType(); HashSet <string> group = new HashSet <string>(); for (var j = 0; j < _objects.Count; j++) { if (_objects[j].GetName() == type) { List <HSPTerm> _args = _objects[j].GetArgs(); group.Add(_args[0].GetName()); } } list.Add(group); } return(list); }