Browse Source

pPOMDP support

tempestpy_adaptions
Sebastian Junges 4 years ago
parent
commit
d76bcc4d10
  1. 18
      src/storm-pomdp/transformer/ApplyFiniteSchedulerToPomdp.cpp

18
src/storm-pomdp/transformer/ApplyFiniteSchedulerToPomdp.cpp

@ -19,7 +19,7 @@ namespace storm {
} }
struct RationalFunctionConstructor { struct RationalFunctionConstructor {
RationalFunctionConstructor() : cache(std::make_shared<RawPolynomialCache>()) {
RationalFunctionConstructor(std::shared_ptr<RawPolynomialCache> const& cache) : cache(cache) {
} }
@ -31,11 +31,25 @@ namespace storm {
std::shared_ptr<RawPolynomialCache> cache; std::shared_ptr<RawPolynomialCache> cache;
}; };
template<typename ValueType>
std::shared_ptr<RawPolynomialCache> getCache(storm::models::sparse::Pomdp<ValueType> const& model) {
return std::make_shared<RawPolynomialCache>();
}
template<>
std::shared_ptr<RawPolynomialCache> getCache(storm::models::sparse::Pomdp<storm::RationalFunction> const& model) {
for (auto const& entry : model.getTransitionMatrix()) {
if(!entry.getValue().isConstant()) {
return entry.getValue().nominatorAsPolynomial().pCache();
}
}
return std::make_shared<RawPolynomialCache>();
}
template<typename ValueType> template<typename ValueType>
std::unordered_map<uint32_t, std::vector<storm::RationalFunction>> ApplyFiniteSchedulerToPomdp<ValueType>::getObservationChoiceWeights(PomdpFscApplicationMode applicationMode ) const { std::unordered_map<uint32_t, std::vector<storm::RationalFunction>> ApplyFiniteSchedulerToPomdp<ValueType>::getObservationChoiceWeights(PomdpFscApplicationMode applicationMode ) const {
std::unordered_map<uint32_t, std::vector<storm::RationalFunction>> res; std::unordered_map<uint32_t, std::vector<storm::RationalFunction>> res;
RationalFunctionConstructor ratFuncConstructor;
RationalFunctionConstructor ratFuncConstructor(getCache(pomdp));
for (uint64_t state = 0; state < pomdp.getNumberOfStates(); ++state) { for (uint64_t state = 0; state < pomdp.getNumberOfStates(); ++state) {
auto observation = pomdp.getObservation(state); auto observation = pomdp.getObservation(state);

Loading…
Cancel
Save