|
@ -1754,6 +1754,7 @@ namespace storm { |
|
|
|
|
|
|
|
|
template<typename ValueType> |
|
|
template<typename ValueType> |
|
|
void SparseMatrix<ValueType>::multiplyAndReduceForward(OptimizationDirection const& dir, std::vector<uint64_t> const& rowGroupIndices, std::vector<ValueType> const& vector, std::vector<ValueType> const* summand, std::vector<ValueType>& result, std::vector<uint_fast64_t>* choices, storm::storage::BitVector const* dirOverride) const { |
|
|
void SparseMatrix<ValueType>::multiplyAndReduceForward(OptimizationDirection const& dir, std::vector<uint64_t> const& rowGroupIndices, std::vector<ValueType> const& vector, std::vector<ValueType> const* summand, std::vector<ValueType>& result, std::vector<uint_fast64_t>* choices, storm::storage::BitVector const* dirOverride) const { |
|
|
|
|
|
std::cout << *dirOverride << std::endl; |
|
|
if(dirOverride && !dirOverride->empty()) { |
|
|
if(dirOverride && !dirOverride->empty()) { |
|
|
if (dir == OptimizationDirection::Minimize) { |
|
|
if (dir == OptimizationDirection::Minimize) { |
|
|
multiplyAndReduceForward<storm::utility::ElementLess<ValueType>, true>(rowGroupIndices, vector, summand, result, choices, dirOverride); |
|
|
multiplyAndReduceForward<storm::utility::ElementLess<ValueType>, true>(rowGroupIndices, vector, summand, result, choices, dirOverride); |
|
@ -1848,11 +1849,11 @@ namespace storm { |
|
|
// Finally write value to target vector.
|
|
|
// Finally write value to target vector.
|
|
|
*resultIt = currentValue; |
|
|
*resultIt = currentValue; |
|
|
if(dirOverridden) { |
|
|
if(dirOverridden) { |
|
|
if (choices && dirOverride->get(currentRowGroup) ? compare(oldSelectedChoiceValue, currentValue) : compare(currentValue, oldSelectedChoiceValue)) { |
|
|
|
|
|
|
|
|
if (choices && (dirOverride->get(currentRowGroup) ? compare(oldSelectedChoiceValue, currentValue) : compare(currentValue, oldSelectedChoiceValue))) { |
|
|
*choiceIt = selectedChoice; |
|
|
*choiceIt = selectedChoice; |
|
|
} |
|
|
} |
|
|
} else { |
|
|
} else { |
|
|
if (choices && compare(currentValue, oldSelectedChoiceValue)) { |
|
|
|
|
|
|
|
|
if (choices && (compare(currentValue, oldSelectedChoiceValue))) { |
|
|
*choiceIt = selectedChoice; |
|
|
*choiceIt = selectedChoice; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -2129,8 +2130,7 @@ namespace storm { |
|
|
} else { |
|
|
} else { |
|
|
target = &result; |
|
|
target = &result; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
this->multiplyAndReduceForward(dir, rowGroupIndices, vector, summand, *target, choices); |
|
|
|
|
|
|
|
|
this->multiplyAndReduceForward(dir, rowGroupIndices, vector, summand, *target, choices, dirOverride); |
|
|
|
|
|
|
|
|
if (target == &temporary) { |
|
|
if (target == &temporary) { |
|
|
std::swap(temporary, result); |
|
|
std::swap(temporary, result); |
|
|