1#include "storm-config.h"
15#ifdef STORM_HAVE_GUROBI
17TEST(MilpPermissiveSchedulerTest, DieSelection) {
25 std::string formulaString =
"";
26 formulaString +=
"P>=0.10 [ F \"one\"];\n";
27 formulaString +=
"P>=0.17 [ F \"one\"];\n";
28 formulaString +=
"P<=0.10 [ F \"one\"];\n";
29 formulaString +=
"P<=0.17 [ F \"one\"];\n";
30 auto formulas = formulaParser.parseFromString(formulaString);
32 auto const& formula02 = formulas[0].getRawFormula()->asProbabilityOperatorFormula();
34 auto const& formula001 = formulas[1].getRawFormula()->asProbabilityOperatorFormula();
35 auto const& formula02b = formulas[2].getRawFormula()->asProbabilityOperatorFormula();
36 auto const& formula001b = formulas[3].getRawFormula()->asProbabilityOperatorFormula();
41 std::shared_ptr<storm::models::sparse::Mdp<double>> mdp =
44 boost::optional<storm::ps::SubMDPPermissiveScheduler<>> perms = storm::ps::computePermissiveSchedulerViaMILP<>(*mdp, formula02);
45 EXPECT_TRUE(perms.is_initialized());
46 boost::optional<storm::ps::SubMDPPermissiveScheduler<>> perms2 = storm::ps::computePermissiveSchedulerViaMILP<>(*mdp, formula001);
47 EXPECT_FALSE(perms2.is_initialized());
49 boost::optional<storm::ps::SubMDPPermissiveScheduler<>> perms3 = storm::ps::computePermissiveSchedulerViaMILP<>(*mdp, formula02b);
50 EXPECT_FALSE(perms3.is_initialized());
51 boost::optional<storm::ps::SubMDPPermissiveScheduler<>> perms4 = storm::ps::computePermissiveSchedulerViaMILP<>(*mdp, formula001b);
52 EXPECT_TRUE(perms4.is_initialized());
56 std::unique_ptr<storm::modelchecker::CheckResult> result0 = checker0.check(env, formula02);
59 ASSERT_FALSE(qualitativeResult0[0]);
61 auto submdp = perms->apply();
64 std::unique_ptr<storm::modelchecker::CheckResult> result1 = checker1.check(env, formula02);
67 EXPECT_TRUE(qualitativeResult1[0]);
BuilderOptions & setBuildAllLabels(bool newValue=true)
Should all reward models be built? If not set, only required reward models are build.
BuilderOptions & setBuildChoiceLabels(bool newValue=true)
Should the choice labels be built?
std::shared_ptr< storm::models::sparse::Model< ValueType, RewardModelType > > build()
Convert the program given at construction time to an abstract model.
std::shared_ptr< ExpressionManager > getSharedPointer()
Retrieves a shared pointer to the expression manager.
ExplicitQualitativeCheckResult & asExplicitQualitativeCheckResult()
This class represents a (discrete-time) Markov decision process.
static storm::prism::Program parse(std::string const &filename, bool prismCompatability=false)
Parses the given file into the PRISM storage classes assuming it complies with the PRISM syntax.
storm::expressions::ExpressionManager & getManager() const
Retrieves the manager responsible for the expressions of this program.
bool isLowerBound(ComparisonType t)