Browse Source

Over-Approximation: Taking current values as new lower/upper bounds for next refinement step.

tempestpy_adaptions
Tim Quatmann 5 years ago
parent
commit
61215e4b24
  1. 9
      src/storm-pomdp/builder/BeliefMdpExplorer.h
  2. 5
      src/storm-pomdp/modelchecker/ApproximatePOMDPModelchecker.cpp

9
src/storm-pomdp/builder/BeliefMdpExplorer.h

@ -548,6 +548,15 @@ namespace storm {
}
}
void takeCurrentValuesAsUpperBounds() {
STORM_LOG_ASSERT(status == Status::ModelChecked, "Method call is invalid in current status.");
upperValueBounds = values;
}
void takeCurrentValuesAsLowerBounds() {
STORM_LOG_ASSERT(status == Status::ModelChecked, "Method call is invalid in current status.");
lowerValueBounds = values;
}
private:
MdpStateType noState() const {

5
src/storm-pomdp/modelchecker/ApproximatePOMDPModelchecker.cpp

@ -255,6 +255,11 @@ namespace storm {
// Refine over-approximation
STORM_LOG_DEBUG("Refining over-approximation with aggressiveness " << refinementAggressiveness << ".");
if (min) {
overApproximation->takeCurrentValuesAsLowerBounds();
} else {
overApproximation->takeCurrentValuesAsUpperBounds();
}
buildOverApproximation(targetObservations, min, rewardModelName.is_initialized(), true, &refinementAggressiveness, observationResolutionVector, overApproxBeliefManager, overApproximation);
if (overApproximation->hasComputedValues()) {
overApproxValue = overApproximation->getComputedValueAtInitialState();

Loading…
Cancel
Save