Browse Source

scheduler retrival for value iteration of native minMaxLinEqSolver

Former-commit-id: 641991da86
main
TimQu 9 years ago
parent
commit
19fa7767a0
  1. 12
      src/solver/NativeMinMaxLinearEquationSolver.cpp

12
src/solver/NativeMinMaxLinearEquationSolver.cpp

@ -76,6 +76,18 @@ namespace storm {
std::swap(x, *currentX);
}
// If requested, we store the scheduler for retrieval.
if (this->isTrackSchedulerSet()) {
if(iterations==0){ //may happen due to custom termination condition. Then we need to compute x'= A*x+b
this->A.multiplyWithVector(x, *multiplyResult);
storm::utility::vector::addVectors(*multiplyResult, b, *multiplyResult);
}
std::vector<storm::storage::sparse::state_type> choices(this->A.getRowGroupCount());
// Reduce the multiplyResult again and keep track of the choices made
storm::utility::vector::reduceVectorMinOrMax(dir, *multiplyResult, x, this->A.getRowGroupIndices(), &choices);
this->scheduler = std::make_unique<storm::storage::TotalScheduler>(std::move(choices));
}
if (!xMemoryProvided) {
delete copyX;
}

Loading…
Cancel
Save