private Action GetRevealedDependencyParameterizedAction()
        {
            ParametrizedAction revealDependencyParameterized = new ParametrizedAction("reveal-dependency");
            Parameter          agentParameter      = GetAgentParameter();
            Parameter          dependencyParameter = GetDependencyParameter();

            revealDependencyParameterized.AddParameter(agentParameter);
            revealDependencyParameterized.AddParameter(dependencyParameter);

            CompoundFormula preconditions = new CompoundFormula("and");
            CompoundFormula effects       = new CompoundFormula("and");

            ParametrizedPredicate revealedSomething  = GetParameterizedRevealedSomething();
            ParametrizedPredicate revealedDependency = GetParameterizedRevealed();
            ParametrizedPredicate belongsTo          = GetParameterizedBelongsTo();

            Predicate notRevealedSomething  = revealedSomething.Negate();
            Predicate notRevealedDependency = revealedDependency.Negate();

            preconditions.AddOperand(notRevealedSomething);
            preconditions.AddOperand(notRevealedDependency);
            preconditions.AddOperand(belongsTo);

            effects.AddOperand(revealedSomething);
            effects.AddOperand(revealedDependency);

            revealDependencyParameterized.Preconditions = preconditions;
            revealDependencyParameterized.SetEffects(effects);

            return(revealDependencyParameterized);
        }
        private ParametrizedPredicate GetParameterizedRevealed()
        {
            ParametrizedPredicate parametrizedRevealed = new ParametrizedPredicate("revealed");
            Parameter             dependencyParameter  = GetDependencyParameter();

            parametrizedRevealed.AddParameter(dependencyParameter);
            return(parametrizedRevealed);
        }
        private ParametrizedPredicate GetParameterizedUsedDependency()
        {
            ParametrizedPredicate parametrizedUsedDependency = new ParametrizedPredicate(usedDependencyPredicateName);
            Parameter             dependencyParameter        = GetDependencyParameter();

            parametrizedUsedDependency.AddParameter(dependencyParameter);
            return(parametrizedUsedDependency);
        }
        private ParametrizedPredicate GetParameterizedNext(Parameter num1Parameter, Parameter num2Parameter)
        {
            ParametrizedPredicate parameterizedNext = new ParametrizedPredicate(nextPredicateName);

            parameterizedNext.AddParameter(num1Parameter);
            parameterizedNext.AddParameter(num2Parameter);
            return(parameterizedNext);
        }
        private ParametrizedPredicate GetParameterizedRevealedNumberOfDependencies(Parameter agentParameter, Parameter numParameter)
        {
            ParametrizedPredicate parameterizedRevealedNumberOfDependencies = new ParametrizedPredicate(revealedNumberOfDependenciesPredicateName);

            parameterizedRevealedNumberOfDependencies.AddParameter(agentParameter);
            parameterizedRevealedNumberOfDependencies.AddParameter(numParameter);
            return(parameterizedRevealedNumberOfDependencies);
        }
        private ParametrizedPredicate GetParameterizedRevealedSomething()
        {
            ParametrizedPredicate parametrizedRevealedSomething = new ParametrizedPredicate("revealed-something");
            Parameter             agentParameter = GetAgentParameter();

            parametrizedRevealedSomething.AddParameter(agentParameter);
            return(parametrizedRevealedSomething);
        }
예제 #7
0
        private ParametrizedPredicate GetParameterizedGoingSoloPredicate()
        {
            ParametrizedPredicate parameterizedGoingSolo = new ParametrizedPredicate(goingSoloPredicateName);
            Parameter             agent = GetAgentParameter();

            parameterizedGoingSolo.AddParameter(agent);
            return(parameterizedGoingSolo);
        }
        /*
         * private ParametrizedPredicate GetParameterizedRevealedSomething()
         * {
         * ParametrizedPredicate parametrizedRevealedSomething = new ParametrizedPredicate("revealed-something");
         * Parameter agentParameter = GetAgentParameter();
         * parametrizedRevealedSomething.AddParameter(agentParameter);
         * return parametrizedRevealedSomething;
         * }
         */
        private ParametrizedPredicate GetParameterizedBelongsTo()
        {
            ParametrizedPredicate parametrizedBelongsTo = new ParametrizedPredicate("belongs-to");
            Parameter             dependencyParameter   = GetDependencyParameter();
            Parameter             agentParameter        = GetAgentParameter();

            parametrizedBelongsTo.AddParameter(dependencyParameter);
            parametrizedBelongsTo.AddParameter(agentParameter);
            return(parametrizedBelongsTo);
        }
        /*
         * private List<Action> GetRevealedDummyDependencyActions(List<Agent> m_agents)
         * {
         *  List<Action> actions = new List<Action>();
         *  foreach(Agent agent in m_agents)
         *  {
         *      int amountOfDependencies = amountOfAgentDependencies[agent];
         *      if (amountOfDependencies < maxDependenciesOfAgent) //only do this dummy action for agents which don't have the max dependencies amount, so they will not stuck the other agents who want to reveal a dependency...
         *          actions.Add(GetRevealedDummyDependencyAction(agent));
         *  }
         *
         *  return actions;
         * }
         */
        /*
         * private Action GetRevealedDummyDependencyAction(Agent agent)
         * {
         *  Constant a = mapAgentToConstant[agent];
         *  Action dummyAction = new Action("reveal-dummy-dependency_" + a.Name);
         *
         *  CompoundFormula preconditions = new CompoundFormula("and");
         *
         *  GroundedFunctionPredicate amountOfDepRevGrounded = GetAmountOfDependenciesRevealedGrounded(a);
         *  GroundedFunctionPredicate equalsToMax = GetEqualsToMaxGrounded(amountOfDepRevGrounded);
         *  Predicate notEqualsToMax = equalsToMax.Negate();
         *
         *  GroundedFunctionPredicate increaseAmountOfDepRev = GetIncreaseAmountOfDependenciesRevealedGrounded(amountOfDepRevGrounded);
         *  //GroundedPredicate revealedSomething = new GroundedPredicate("revealed-something");
         *  //revealedSomething.AddConstant(a);
         *
         *  //Predicate notRevealedSomething = revealedSomething.Negate();
         *
         *  preconditions.AddOperand(notEqualsToMax);
         *  PredicateFormula effects = new PredicateFormula(increaseAmountOfDepRev);
         *
         *  foreach (Dependency dependency in agentsDependencies[agent])
         *  {
         *      GroundedPredicate revealedDependency = new GroundedPredicate("revealed");
         *      Constant d = mapDependencyToConstant[dependency];
         *      revealedDependency.AddConstant(d);
         *
         *      preconditions.AddOperand(revealedDependency);
         *  }
         *
         *  dummyAction.Preconditions = preconditions;
         *  dummyAction.SetEffects(effects);
         *
         *  return dummyAction;
         * }
         */
        /*
         * private Action GetResetDependenciesRevealedAction(GroundedFunctionPredicate totalCostFunctionPredicate)
         * {
         *  Action resetDependenciesRevealed = new Action(resetDependenciesActionName);
         *
         *  CompoundFormula preconditions = new CompoundFormula("and");
         *  CompoundFormula effects = new CompoundFormula("and");
         *
         *  foreach(Constant agent in agentsConstants)
         *  {
         *      GroundedPredicate revealedSomething = new GroundedPredicate("revealed-something");
         *      revealedSomething.AddConstant(agent);
         *
         *      Predicate notRevealedSomething = revealedSomething.Negate();
         *
         *      preconditions.AddOperand(revealedSomething);
         *      effects.AddOperand(notRevealedSomething);
         *  }
         *
         *  effects.AddOperand(GetIncreaseTotalCostFunction(totalCostFunctionPredicate, revealedDependencyCost));
         *
         *  resetDependenciesRevealed.Preconditions = preconditions;
         *  resetDependenciesRevealed.SetEffects(effects);
         *
         *  return resetDependenciesRevealed;
         * }
         */
        private Action GetRevealedDependencyParameterizedAction()
        {
            ParametrizedAction revealDependencyParameterized = new ParametrizedAction("reveal-dependency");
            Parameter          agentParameter      = GetAgentParameter();
            Parameter          dependencyParameter = GetDependencyParameter();
            Parameter          num1Parameter       = GetNum1Parameter();
            Parameter          num2Parameter       = GetNum2Parameter();

            revealDependencyParameterized.AddParameter(agentParameter);
            revealDependencyParameterized.AddParameter(dependencyParameter);
            revealDependencyParameterized.AddParameter(num1Parameter);
            revealDependencyParameterized.AddParameter(num2Parameter);

            CompoundFormula preconditions = new CompoundFormula("and");
            CompoundFormula effects       = new CompoundFormula("and");

            ParametrizedPredicate nextN1N2 = GetParameterizedNext(num1Parameter, num2Parameter);
            ParametrizedPredicate revealedNumberOfDependenciesN1 = GetParameterizedRevealedNumberOfDependencies(agentParameter, num1Parameter);
            ParametrizedPredicate revealedNumberOfDependenciesN2 = GetParameterizedRevealedNumberOfDependencies(agentParameter, num2Parameter);

            //ParametrizedPredicate revealedSomething = GetParameterizedRevealedSomething();
            ParametrizedPredicate revealedDependency = GetParameterizedRevealed();
            ParametrizedPredicate belongsTo          = GetParameterizedBelongsTo();

            Predicate NotRevealedNumberOfDependenciesN1 = revealedNumberOfDependenciesN1.Negate();

            //Predicate notRevealedSomething = revealedSomething.Negate();
            //Predicate notRevealedDependency = revealedDependency.Negate();

            preconditions.AddOperand(nextN1N2);
            preconditions.AddOperand(revealedNumberOfDependenciesN1);
            //preconditions.AddOperand(notRevealedSomething);
            //preconditions.AddOperand(notRevealedDependency);
            preconditions.AddOperand(belongsTo);

            //effects.AddOperand(revealedSomething);
            effects.AddOperand(revealedDependency);
            if (limitingTheNumberOfDependenciesToBeRevealed)
            {
                effects.AddOperand(NotRevealedNumberOfDependenciesN1);
                effects.AddOperand(revealedNumberOfDependenciesN2);
            }

            revealDependencyParameterized.Preconditions = preconditions;
            revealDependencyParameterized.SetEffects(effects);

            return(revealDependencyParameterized);
        }
예제 #10
0
        private Action GetStartGoingSoloParameterizedAction()
        {
            ParametrizedAction startGoingSoloParameterized = new ParametrizedAction("start-going-solo");
            Parameter          agentParameter = GetAgentParameter();

            startGoingSoloParameterized.AddParameter(agentParameter);
            ParametrizedPredicate inJoinedStage = GetParameterizedInJoinedStagePredicate();
            ParametrizedPredicate goingSolo     = GetParameterizedGoingSoloPredicate();

            Predicate notInJoinedStage = inJoinedStage.Negate();

            PredicateFormula preconditions = new PredicateFormula(inJoinedStage);
            CompoundFormula  effects       = new CompoundFormula("and");

            effects.AddOperand(goingSolo);
            effects.AddOperand(notInJoinedStage);

            startGoingSoloParameterized.Preconditions = preconditions;
            startGoingSoloParameterized.SetEffects(effects);

            return(startGoingSoloParameterized);
        }
예제 #11
0
        private ParametrizedPredicate GetParameterizedInJoinedStagePredicate()
        {
            ParametrizedPredicate parameterizedInJoinedStage = new ParametrizedPredicate(joinedStagePredicateName);

            return(parameterizedInJoinedStage);
        }