Browse Source

Fixed incorrect results for PcaaWeightVectorChecker.

main
Tim Quatmann 4 years ago
parent
commit
a95ff3056a
No known key found for this signature in database GPG Key ID: 6EDE19592731EEC3
  1. 5
      src/storm/modelchecker/multiobjective/pcaa/StandardPcaaWeightVectorChecker.cpp
  2. 3
      src/storm/modelchecker/multiobjective/pcaa/StandardPcaaWeightVectorChecker.h

5
src/storm/modelchecker/multiobjective/pcaa/StandardPcaaWeightVectorChecker.cpp

@ -585,6 +585,7 @@ namespace storm {
} }
ecQuotient->ecqStayInEcChoices = std::move(ecElimResult.sinkRows); ecQuotient->ecqStayInEcChoices = std::move(ecElimResult.sinkRows);
ecQuotient->origReward0Choices = std::move(newReward0Choices); ecQuotient->origReward0Choices = std::move(newReward0Choices);
ecQuotient->origTotalReward0Choices = std::move(newTotalReward0Choices);
ecQuotient->rowsWithSumLessOne = std::move(rowsWithSumLessOne); ecQuotient->rowsWithSumLessOne = std::move(rowsWithSumLessOne);
ecQuotient->auxStateValues.resize(ecQuotient->matrix.getRowGroupCount()); ecQuotient->auxStateValues.resize(ecQuotient->matrix.getRowGroupCount());
ecQuotient->auxChoiceValues.resize(ecQuotient->matrix.getRowCount()); ecQuotient->auxChoiceValues.resize(ecQuotient->matrix.getRowCount());
@ -741,7 +742,7 @@ namespace storm {
unprocessedStates.set(state, false); unprocessedStates.set(state, false);
originalSolution[state] = ecqSolution[ecqState]; originalSolution[state] = ecqSolution[ecqState];
} }
computeSchedulerProb1(transitionMatrix, backwardsTransitions, ecStatesToProcess, ecStatesToReach, originalOptimalChoices); computeSchedulerProb1(transitionMatrix, backwardsTransitions, ecStatesToProcess, ecStatesToReach, originalOptimalChoices, &ecQuotient->origTotalReward0Choices);
// Clear bitvectors for next ecqState. // Clear bitvectors for next ecqState.
ecStatesToProcess.clear(); ecStatesToProcess.clear();
ecStatesToReach.clear(); ecStatesToReach.clear();
@ -801,7 +802,7 @@ namespace storm {
unprocessedStates.set(state, false); unprocessedStates.set(state, false);
originalSolution[state] = ecqSolution[ecqState]; originalSolution[state] = ecqSolution[ecqState];
} }
computeSchedulerProb1(transitionMatrix, backwardsTransitions, ecStatesToProcess, ecStatesToReach, originalOptimalChoices); computeSchedulerProb1(transitionMatrix, backwardsTransitions, ecStatesToProcess, ecStatesToReach, originalOptimalChoices, &ecQuotient->origTotalReward0Choices);
// Clear bitvectors for next ecqState. // Clear bitvectors for next ecqState.
ecStatesToProcess.clear(); ecStatesToProcess.clear();
ecStatesToReach.clear(); ecStatesToReach.clear();

3
src/storm/modelchecker/multiobjective/pcaa/StandardPcaaWeightVectorChecker.h

@ -159,7 +159,8 @@ namespace storm {
std::vector<uint_fast64_t> originalToEcqStateMapping; std::vector<uint_fast64_t> originalToEcqStateMapping;
std::vector<storm::storage::FlatSetStateContainer> ecqToOriginalStateMapping; std::vector<storm::storage::FlatSetStateContainer> ecqToOriginalStateMapping;
storm::storage::BitVector ecqStayInEcChoices; storm::storage::BitVector ecqStayInEcChoices;
storm::storage::BitVector origReward0Choices; storm::storage::BitVector origReward0Choices; // includes total and LRA rewards
storm::storage::BitVector origTotalReward0Choices; // considers just total rewards
storm::storage::BitVector rowsWithSumLessOne; storm::storage::BitVector rowsWithSumLessOne;
std::vector<ValueType> auxStateValues; std::vector<ValueType> auxStateValues;

|||||||
100:0
Loading…
Cancel
Save