Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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);
        }