Added action costs support for SAS translator output.
This commit is contained in:
parent
c90d5b1d72
commit
a5fd698888
@ -1,5 +1,8 @@
|
|||||||
#include <incmode>.
|
#include <incmode>.
|
||||||
|
|
||||||
|
% Check feature requirements
|
||||||
|
:- requiresFeature(actionCosts, true).
|
||||||
|
|
||||||
#program base.
|
#program base.
|
||||||
|
|
||||||
% Establish initial state
|
% Establish initial state
|
||||||
|
@ -23,9 +23,6 @@ TranslatorASP::TranslatorASP(const Description &description)
|
|||||||
|
|
||||||
void TranslatorASP::checkSupport() const
|
void TranslatorASP::checkSupport() const
|
||||||
{
|
{
|
||||||
if (m_description.usesActionCosts())
|
|
||||||
throw TranslatorException("Action costs are currently unsupported");
|
|
||||||
|
|
||||||
const auto &variables = m_description.variables();
|
const auto &variables = m_description.variables();
|
||||||
|
|
||||||
std::for_each(variables.cbegin(), variables.cend(),
|
std::for_each(variables.cbegin(), variables.cend(),
|
||||||
@ -48,9 +45,6 @@ void TranslatorASP::checkSupport() const
|
|||||||
if (!effect.conditions().empty())
|
if (!effect.conditions().empty())
|
||||||
throw TranslatorException("Conditional effects are currently unsupported");
|
throw TranslatorException("Conditional effects are currently unsupported");
|
||||||
});
|
});
|
||||||
|
|
||||||
if (operator_.costs() != 1)
|
|
||||||
throw TranslatorException("Action costs are currently unsupported");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!m_description.axiomRules().empty())
|
if (!m_description.axiomRules().empty())
|
||||||
@ -63,6 +57,12 @@ void TranslatorASP::translate(std::ostream &ostream) const
|
|||||||
{
|
{
|
||||||
checkSupport();
|
checkSupport();
|
||||||
|
|
||||||
|
ostream << "% feature requirements" << std::endl;
|
||||||
|
|
||||||
|
if (m_description.usesActionCosts())
|
||||||
|
ostream << "requiresFeature(actionCosts)." << std::endl;
|
||||||
|
|
||||||
|
ostream << std::endl;
|
||||||
ostream << "% initial state" << std::endl;
|
ostream << "% initial state" << std::endl;
|
||||||
|
|
||||||
const auto &initialStateFacts = m_description.initialState().facts();
|
const auto &initialStateFacts = m_description.initialState().facts();
|
||||||
@ -175,6 +175,10 @@ void TranslatorASP::translate(std::ostream &ostream) const
|
|||||||
effect.postcondition().value().printAsASPPredicate(ostream);
|
effect.postcondition().value().printAsASPPredicate(ostream);
|
||||||
ostream << ")." << std::endl;
|
ostream << ")." << std::endl;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ostream << "costs(";
|
||||||
|
operator_.printPredicateAsASP(ostream);
|
||||||
|
ostream << ", " << operator_.costs() << ")." << std::endl;
|
||||||
});
|
});
|
||||||
|
|
||||||
ostream << std::endl;
|
ostream << std::endl;
|
||||||
|
Reference in New Issue
Block a user