00001 00002 #ifndef bwi_krexec_RemoteReasoner_h__guard 00003 #define bwi_krexec_RemoteReasoner_h__guard 00004 00005 #include "actasp/AspAtom.h" 00006 #include "actasp/AspKR.h" 00007 #include "actasp/reasoners/Clingo.h" 00008 00009 namespace bwi_krexec { 00010 00011 class RemoteReasoner : public actasp::AspKR { 00012 public: 00013 00014 RemoteReasoner(unsigned int max_n, 00015 const std::string& queryDir, 00016 const std::string& domainDir, 00017 const actasp::ActionSet& actions, 00018 unsigned int max_time = 0); 00019 00020 actasp::ActionSet availableActions() const throw(); 00021 00022 actasp::AnswerSet currentStateQuery(const std::vector<actasp::AspRule>& query) const throw(); 00023 00024 bool updateFluents(const std::vector<actasp::AspFluent> &observations) throw(); 00025 00026 bool isPlanValid(const actasp::AnswerSet& plan, const std::vector<actasp::AspRule>& goal) const throw(); 00027 00028 std::vector< actasp::AnswerSet > computeAllPlans(const std::vector<actasp::AspRule>& goal, double suboptimality) const throw (std::logic_error); 00029 00030 void reset() throw(); 00031 00032 actasp::MultiPolicy computePolicy(const std::vector<actasp::AspRule>& goal, double suboptimality) const throw (std::logic_error); 00033 00034 actasp::AnswerSet computePlan(const std::vector<actasp::AspRule>& goal) const throw (std::logic_error); 00035 00036 std::list< std::list<actasp::AspAtom> > query(const std::string &queryString, unsigned int initialTimeStep, 00037 unsigned int finalTimeStep) const throw(); 00038 00039 private: 00040 actasp::Clingo local; 00041 00042 }; 00043 } 00044 00045 #endif