|
|
@ -1508,7 +1508,7 @@ namespace storm { |
|
|
|
static std::pair<std::shared_ptr<storm::models::sparse::Model<T>>, std::vector<storm::storage::FlatSet<uint_fast64_t>>> restrictModelToLabelSet(storm::models::sparse::Model<T> const& model, storm::storage::FlatSet<uint_fast64_t> const& filterLabelSet, boost::optional<uint64_t> absorbState = boost::none) { |
|
|
|
bool customRowGrouping = model.isOfType(storm::models::ModelType::Mdp); |
|
|
|
STORM_LOG_TRACE("Restrict model to label set " << storm::storage::toString(filterLabelSet)); |
|
|
|
|
|
|
|
STORM_LOG_TRACE("Absorb state = " << (absorbState == boost::none ? "none" : std::to_string(absorbState.get()))); |
|
|
|
std::vector<storm::storage::FlatSet<uint_fast64_t>> resultLabelSet; |
|
|
|
storm::storage::SparseMatrixBuilder<T> transitionMatrixBuilder(0, model.getTransitionMatrix().getColumnCount(), 0, true, customRowGrouping, model.getTransitionMatrix().getRowGroupCount()); |
|
|
|
|
|
|
@ -1541,7 +1541,7 @@ namespace storm { |
|
|
|
if (customRowGrouping) { |
|
|
|
transitionMatrixBuilder.newRowGroup(currentRow); |
|
|
|
} |
|
|
|
uint64_t targetState = absorbState == boost::none ? state : absorbState.get(); |
|
|
|
uint64_t targetState = (absorbState == boost::none ? state : absorbState.get()); |
|
|
|
transitionMatrixBuilder.addNextValue(currentRow, targetState, storm::utility::one<T>()); |
|
|
|
// Insert an empty label set for this choice |
|
|
|
resultLabelSet.emplace_back(); |
|
|
@ -1785,7 +1785,7 @@ namespace storm { |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
auto subChoiceOrigins = restrictModelToLabelSet(model, commandSet, psiStates.getNextSetIndex(0)); |
|
|
|
auto subChoiceOrigins = restrictModelToLabelSet(model, commandSet, rewardName ? boost::make_optional(psiStates.getNextSetIndex(0)) : boost::none); |
|
|
|
std::shared_ptr<storm::models::sparse::Model<T>> const& subModel = subChoiceOrigins.first; |
|
|
|
std::vector<storm::storage::FlatSet<uint_fast64_t>> const& subLabelSets = subChoiceOrigins.second; |
|
|
|
|
|
|
|