/* * RuntimeCondition - (Name): NewRuntimeCondition * (ConditionString): * Static Variables: [NavMasterVar] * Domain Variables: */ void Constraint1475692986360::getConstraint(shared_ptr<ProblemDescriptor> c, shared_ptr<RunningPlan> rp) { /*PROTECTED REGION ID(cc1475692986360) ENABLED START*/ ttb::TTBWorldModel* wm = ttb::TTBWorldModel::get(); auto constraint = make_shared<alica::reasoner::ASPTerm>(-1); //The query id has to be added to any predicate which is added to the program, naming ruleheads and facts! auto queryId = ((alica::reasoner::ASPSolverWrapper*)wm->getEngine()->getSolver(SolverType::ASPSOLVER))->getQueryCounter(); constraint->setQueryId(queryId); stringstream ss; ss << "goalReachable(X) :- reachable(X, Y), goal(X), start(Y), room(X), room(Y)."; constraint->setQueryRule(ss.str()); ss.str(""); // ss << "multiRuleWorks(X, " << queryId << ") :- goal(r1405B, " << queryId << "), room(X)."; // constraint->addRule(ss.str()); // ss.str(""); ss << "goal(r1405B)."; constraint->addFact(ss.str()); ss.str(""); ss << "start(r1411)."; constraint->addFact(ss.str()); constraint->setProgramSection("distributedSystemsRoomsExternal"); constraint->setType(::reasoner::ASPQueryType::Variable); constraint->setId(1475692986360); constraint->setExternals(wm->doors.getDoors()); c->setConstraint(dynamic_pointer_cast < alica::SolverTerm > (constraint)); /*PROTECTED REGION END*/ }
TEST_F(AspAlicaEngineWithDomain, ReusePlanFromPlantypeWithoutCycle_PlanBase) { ae = new alica::AlicaEngine(new supplementary::AgentIDManager(new supplementary::AgentIDFactory()), "ReusePlanWithoutCycle", "ReusePlanFromPlantypeWithoutCycle", ".", false); ae->setIAlicaClock(new alica_dummy_proxy::AlicaSystemClock()); ae->setCommunicator(new alica_dummy_proxy::AlicaDummyCommunication(ae)); // "1" stands for the ASPSolver in this test suite only! std::vector<char const *> args{"clingo", "-W", "no-atom-undefined", nullptr}; auto solver = new ::reasoner::ASPSolver(args); auto solverWrapper = new alica::reasoner::ASPSolverWrapper(ae, args); solverWrapper->init(solver); solverWrapper->getSolver()->loadFileFromConfig("assistanceBackgroundKnowledgeFile"); ae->addSolver(1, solverWrapper); EXPECT_TRUE(ae->init(bc, cc, uc, crc)) << "Unable to initialise the ALICA Engine!"; alica::reasoner::ASPSolverWrapper *aspSolver = dynamic_cast<alica::reasoner::ASPSolverWrapper *>(ae->getSolver(1)); // "1" for ASPSolver alica::Plan *plan = ae->getPlanBase()->getMasterPlan(); string queryString1 = "brokenPlanBase(donatello)"; auto constraint = make_shared<::reasoner::ASPCommonsTerm>(); constraint->addRule(queryString1); constraint->setType(::reasoner::ASPQueryType::Facts); constraint->setProgramSection("assistanceTestFacts"); ((::reasoner::ASPSolver *)(aspSolver->getSolver()))->ground({{"assistanceBackground", {}}}, nullptr); shared_ptr<::reasoner::ASPFactsQuery> queryObject1 = make_shared<::reasoner::ASPFactsQuery>(((::reasoner::ASPSolver *)(aspSolver->getSolver())), constraint); ((alica::reasoner::ASPSolverWrapper *)(aspSolver->getSolver()))->registerQuery(queryObject1); // start time measurement for grounding std::chrono::_V2::system_clock::time_point groundingStart = std::chrono::high_resolution_clock::now(); if (!((alica::reasoner::ASPSolverWrapper *)(aspSolver->getSolver()))->validatePlan(plan)) { cout << "ASPAlicaTest: No Model found!" << endl; } else { ((alica::reasoner::ASPSolverWrapper *)(aspSolver->getSolver()))->printStats(); } std::chrono::_V2::system_clock::time_point end = std::chrono::high_resolution_clock::now(); cout << "Measured Grounding Time: " << std::chrono::duration_cast<chrono::milliseconds>(end - groundingStart).count() << " ms" << endl; EXPECT_FALSE(queryObject1->factsExistForAllModels()) << "The plan base of agent donatello should not be broken."; cout << queryObject1->toString() << endl; }
/* * RuntimeCondition - (Name): NewRuntimeCondition * (ConditionString): * Static Variables: [PlanVar] * Domain Variables: */ void Constraint1480766551805::getConstraint(shared_ptr<ProblemDescriptor> c, shared_ptr<RunningPlan> rp) { /*PROTECTED REGION ID(cc1480766551805) ENABLED START*/ ttb::TTBWorldModel* wm = ttb::TTBWorldModel::get(); auto constraint = make_shared<alica::reasoner::ASPTerm>(); //The query id has to be added to any predicate which is added to the program, naming ruleheads and facts! auto queryId = ((alica::reasoner::ASPSolverWrapper*)wm->getEngine()->getSolver(SolverType::ASPSOLVER))->getQueryCounter(); constraint->setQueryId(queryId); stringstream ss; ss << "goalReachable(X) :- reachable(X, Y), goal(X), start(Y), room(X), room(Y)."; constraint->setQueryRule(ss.str()); ss.str(""); ss << "goal(100)."; constraint->addFact(ss.str()); ss.str(""); ss << "start(0)."; constraint->addFact(ss.str()); constraint->setProgramSection("asprccgen"); constraint->setType(::reasoner::ASPQueryType::Variable); constraint->setId(1480766551805); c->setConstraint(dynamic_pointer_cast < alica::SolverTerm > (constraint)); /*PROTECTED REGION END*/ }