Browse Source
made jit-builder ready to deal with compositions that do not mention all automata, more work on rewards
made jit-builder ready to deal with compositions that do not mention all automata, more work on rewards
Former-commit-id:main2faeed82fa
[formerly60157bbec4
] Former-commit-id:ea62a094f1
23 changed files with 393 additions and 175 deletions
-
1src/adapters/Z3ExpressionAdapter.cpp
-
6src/builder/DdJaniModelBuilder.cpp
-
61src/builder/ExplicitModelBuilder.cpp
-
66src/builder/RewardModelBuilder.cpp
-
51src/builder/RewardModelBuilder.h
-
39src/builder/RewardModelInformation.cpp
-
29src/builder/RewardModelInformation.h
-
15src/builder/jit/Choice.cpp
-
22src/builder/jit/Choice.h
-
48src/builder/jit/ExplicitJitJaniModelBuilder.cpp
-
1src/builder/jit/ExplicitJitJaniModelBuilder.h
-
52src/builder/jit/ModelComponentsBuilder.cpp
-
8src/builder/jit/ModelComponentsBuilder.h
-
29src/builder/jit/StateBehaviour.cpp
-
21src/builder/jit/StateBehaviour.h
-
10src/generator/JaniNextStateGenerator.cpp
-
4src/generator/JaniNextStateGenerator.h
-
32src/generator/NextStateGenerator.cpp
-
22src/generator/NextStateGenerator.h
-
4src/generator/PrismNextStateGenerator.cpp
-
2src/generator/PrismNextStateGenerator.h
-
30src/storage/jani/Model.cpp
-
9src/storage/jani/Model.h
@ -0,0 +1,66 @@ |
|||
#include "src/builder/RewardModelBuilder.h"
|
|||
|
|||
#include "src/adapters/CarlAdapter.h"
|
|||
|
|||
#include "src/models/sparse/StandardRewardModel.h"
|
|||
|
|||
#include "src/utility/macros.h"
|
|||
#include "src/exceptions/InvalidArgumentException.h"
|
|||
|
|||
namespace storm { |
|||
namespace builder { |
|||
|
|||
template <typename ValueType> |
|||
RewardModelBuilder<ValueType>::RewardModelBuilder(RewardModelInformation const& rewardModelInformation) : rewardModelName(rewardModelInformation.getName()), stateRewards(rewardModelInformation.hasStateRewards()), stateActionRewards(rewardModelInformation.hasStateActionRewards()), stateRewardVector(), stateActionRewardVector() { |
|||
STORM_LOG_THROW(!rewardModelInformation.hasTransitionRewards(), storm::exceptions::InvalidArgumentException, "Unable to treat transition rewards."); |
|||
} |
|||
|
|||
template <typename ValueType> |
|||
storm::models::sparse::StandardRewardModel<ValueType> RewardModelBuilder<ValueType>::build(uint_fast64_t rowCount, uint_fast64_t columnCount, uint_fast64_t rowGroupCount) { |
|||
boost::optional<std::vector<ValueType>> optionalStateRewardVector; |
|||
if (hasStateRewards()) { |
|||
stateRewardVector.resize(rowGroupCount); |
|||
optionalStateRewardVector = std::move(stateRewardVector); |
|||
} |
|||
|
|||
boost::optional<std::vector<ValueType>> optionalStateActionRewardVector; |
|||
if (hasStateActionRewards()) { |
|||
stateActionRewardVector.resize(rowCount); |
|||
optionalStateActionRewardVector = std::move(stateActionRewardVector); |
|||
} |
|||
|
|||
return storm::models::sparse::StandardRewardModel<ValueType>(std::move(optionalStateRewardVector), std::move(optionalStateActionRewardVector)); |
|||
} |
|||
|
|||
template <typename ValueType> |
|||
std::string const& RewardModelBuilder<ValueType>::getName() const { |
|||
return rewardModelName; |
|||
} |
|||
|
|||
template <typename ValueType> |
|||
void RewardModelBuilder<ValueType>::addStateReward(ValueType const& value) { |
|||
stateRewardVector.push_back(value); |
|||
} |
|||
|
|||
template <typename ValueType> |
|||
void RewardModelBuilder<ValueType>::addStateActionReward(ValueType const& value) { |
|||
stateActionRewardVector.push_back(value); |
|||
} |
|||
|
|||
template <typename ValueType> |
|||
bool RewardModelBuilder<ValueType>::hasStateRewards() const { |
|||
return stateRewards; |
|||
} |
|||
|
|||
template <typename ValueType> |
|||
bool RewardModelBuilder<ValueType>::hasStateActionRewards() const { |
|||
return stateActionRewards; |
|||
} |
|||
|
|||
template class RewardModelBuilder<double>; |
|||
template class RewardModelBuilder<storm::RationalNumber>; |
|||
template class RewardModelBuilder<storm::RationalFunction>; |
|||
template class RewardModelBuilder<storm::Interval>; |
|||
|
|||
} |
|||
} |
@ -0,0 +1,51 @@ |
|||
#pragma once |
|||
|
|||
#include <vector> |
|||
#include <cstdint> |
|||
|
|||
#include "src/builder/RewardModelInformation.h" |
|||
|
|||
namespace storm { |
|||
namespace models { |
|||
namespace sparse { |
|||
template <typename ValueType> |
|||
class StandardRewardModel; |
|||
} |
|||
} |
|||
namespace builder { |
|||
|
|||
/*! |
|||
* A structure that is used to keep track of a reward model currently being built. |
|||
*/ |
|||
template <typename ValueType> |
|||
class RewardModelBuilder { |
|||
public: |
|||
RewardModelBuilder(RewardModelInformation const& rewardModelInformation); |
|||
|
|||
storm::models::sparse::StandardRewardModel<ValueType> build(uint_fast64_t rowCount, uint_fast64_t columnCount, uint_fast64_t rowGroupCount); |
|||
|
|||
std::string const& getName() const; |
|||
|
|||
void addStateReward(ValueType const& value); |
|||
|
|||
void addStateActionReward(ValueType const& value); |
|||
|
|||
bool hasStateRewards() const; |
|||
|
|||
bool hasStateActionRewards() const; |
|||
|
|||
private: |
|||
std::string rewardModelName; |
|||
|
|||
bool stateRewards; |
|||
bool stateActionRewards; |
|||
|
|||
// The state reward vector. |
|||
std::vector<ValueType> stateRewardVector; |
|||
|
|||
// The state-action reward vector. |
|||
std::vector<ValueType> stateActionRewardVector; |
|||
}; |
|||
|
|||
} |
|||
} |
@ -0,0 +1,39 @@ |
|||
#include "src/builder/RewardModelInformation.h"
|
|||
|
|||
namespace storm { |
|||
namespace builder { |
|||
|
|||
RewardModelInformation::RewardModelInformation(std::string const& name, bool stateRewards, bool stateActionRewards, bool transitionRewards) : name(name), stateRewards(stateRewards), stateActionRewards(stateActionRewards), transitionRewards(transitionRewards) { |
|||
// Intentionally left empty.
|
|||
} |
|||
|
|||
std::string const& RewardModelInformation::getName() const { |
|||
return name; |
|||
} |
|||
|
|||
bool RewardModelInformation::hasStateRewards() const { |
|||
return stateRewards; |
|||
} |
|||
|
|||
bool RewardModelInformation::hasStateActionRewards() const { |
|||
return stateActionRewards; |
|||
} |
|||
|
|||
bool RewardModelInformation::hasTransitionRewards() const { |
|||
return transitionRewards; |
|||
} |
|||
|
|||
void RewardModelInformation::setHasStateRewards() { |
|||
stateRewards = true; |
|||
} |
|||
|
|||
void RewardModelInformation::setHasStateActionRewards() { |
|||
stateActionRewards = true; |
|||
} |
|||
|
|||
void RewardModelInformation::setHasTransitionRewards() { |
|||
transitionRewards = true; |
|||
} |
|||
|
|||
} |
|||
} |
@ -0,0 +1,29 @@ |
|||
#pragma once |
|||
|
|||
#include <string> |
|||
|
|||
namespace storm { |
|||
namespace builder { |
|||
|
|||
class RewardModelInformation { |
|||
public: |
|||
RewardModelInformation(std::string const& name, bool stateRewards, bool stateActionRewards, bool transitionRewards); |
|||
|
|||
std::string const& getName() const; |
|||
bool hasStateRewards() const; |
|||
bool hasStateActionRewards() const; |
|||
bool hasTransitionRewards() const; |
|||
|
|||
void setHasStateRewards(); |
|||
void setHasStateActionRewards(); |
|||
void setHasTransitionRewards(); |
|||
|
|||
private: |
|||
std::string name; |
|||
bool stateRewards; |
|||
bool stateActionRewards; |
|||
bool transitionRewards; |
|||
}; |
|||
|
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue