34void testModel(std::string programFile, std::string formulaAsString, std::string constantsAsString) {
37 std::vector<std::shared_ptr<const storm::logic::Formula>> formulas =
39 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> model =
48 auto timeTravelledDtmc =
BigStep.bigStep(*dtmc, checkTask).first;
59 std::vector<std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient>> testInstantiations;
60 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> emptyInstantiation;
61 testInstantiations.push_back(emptyInstantiation);
62 for (
auto const& param : parameters) {
63 std::vector<std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient>> newInstantiations;
64 for (
auto point : testInstantiations) {
65 for (storm::RationalNumber x = storm::utility::convertNumber<storm::RationalNumber>(1e-5); x <= 1;
66 x += (1 - storm::utility::convertNumber<storm::RationalNumber>(1e-5)) / 10) {
67 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> newMap(point);
68 newMap[param] = storm::utility::convertNumber<storm::RationalFunctionCoefficient>(x);
69 newInstantiations.push_back(newMap);
72 testInstantiations = newInstantiations;
79 for (
auto const& instantiation : testInstantiations) {
80 auto result = modelChecker.
check(env, instantiation)->asExplicitQuantitativeCheckResult<storm::RationalNumber>();
81 auto resultTT = modelCheckerTT.
check(env, instantiation)->asExplicitQuantitativeCheckResult<storm::RationalNumber>();
83 storm::RationalNumber resA = result[*modelChecker.
getOriginalModel().getInitialStates().begin()];
84 storm::RationalNumber resB = resultTT[*modelCheckerTT.
getOriginalModel().getInitialStates().begin()];
85 ASSERT_NEAR(resA, resB, storm::utility::convertNumber<storm::RationalNumber>(1e-6));
88 auto region = storm::api::createRegion<storm::RationalFunction>(
"0.4", *dtmc);
92 auto resultPLA = pla->getBoundAtInitState(env, region[0], storm::OptimizationDirection::Minimize);
94 auto sharedDtmc = std::make_shared<storm::models::sparse::Dtmc<storm::RationalFunction>>(timeTravelledDtmc);
95 auto plaTT = storm::api::initializeRegionModelChecker<storm::RationalFunction>(env, sharedDtmc, checkTask,
97 auto resultPLATT = plaTT->getBoundAtInitState(env, region[0], storm::OptimizationDirection::Minimize);
99 ASSERT_TRUE(resultPLA < resultPLATT) <<
"Time-Travelling did not make bound better";