51 std::pair<storm::expressions::Variable, storm::expressions::Variable> state = manager->addMetaVariable(
"x", 1, 4);
52 std::pair<storm::expressions::Variable, storm::expressions::Variable> pl1 = manager->addMetaVariable(
"a", 0, 1);
53 std::pair<storm::expressions::Variable, storm::expressions::Variable> pl2 = manager->addMetaVariable(
"b", 0, 1);
56 std::set<storm::expressions::Variable> rowMetaVariables({state.first});
57 std::set<storm::expressions::Variable> columnMetaVariables({state.second});
58 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>> rowColumnMetaVariablePairs = {state};
59 std::set<storm::expressions::Variable> player1Variables({pl1.first});
60 std::set<storm::expressions::Variable> player2Variables({pl2.first});
64 manager->getEncoding(state.first, 1).template toAdd<double>() * manager->getEncoding(state.second, 2).template toAdd<double>() *
65 manager->getEncoding(pl1.first, 0).template toAdd<double>() * manager->getEncoding(pl2.first, 0).template toAdd<double>() * manager->getConstant(0.6);
66 matrix += manager->getEncoding(state.first, 1).template toAdd<double>() * manager->getEncoding(state.second, 1).template toAdd<double>() *
67 manager->getEncoding(pl1.first, 0).template toAdd<double>() * manager->getEncoding(pl2.first, 0).template toAdd<double>() *
68 manager->getConstant(0.4);
70 matrix += manager->getEncoding(state.first, 1).template toAdd<double>() * manager->getEncoding(state.second, 2).template toAdd<double>() *
71 manager->getEncoding(pl1.first, 0).template toAdd<double>() * manager->getEncoding(pl2.first, 1).template toAdd<double>() *
72 manager->getConstant(0.2);
73 matrix += manager->getEncoding(state.first, 1).template toAdd<double>() * manager->getEncoding(state.second, 3).template toAdd<double>() *
74 manager->getEncoding(pl1.first, 0).template toAdd<double>() * manager->getEncoding(pl2.first, 1).template toAdd<double>() *
75 manager->getConstant(0.8);
77 matrix += manager->getEncoding(state.first, 1).template toAdd<double>() * manager->getEncoding(state.second, 3).template toAdd<double>() *
78 manager->getEncoding(pl1.first, 1).template toAdd<double>() * manager->getEncoding(pl2.first, 0).template toAdd<double>() *
79 manager->getConstant(0.5);
80 matrix += manager->getEncoding(state.first, 1).template toAdd<double>() * manager->getEncoding(state.second, 4).template toAdd<double>() *
81 manager->getEncoding(pl1.first, 1).template toAdd<double>() * manager->getEncoding(pl2.first, 0).template toAdd<double>() *
82 manager->getConstant(0.5);
84 matrix += manager->getEncoding(state.first, 1).template toAdd<double>() * manager->getEncoding(state.second, 1).template toAdd<double>() *
85 manager->getEncoding(pl1.first, 1).template toAdd<double>() * manager->getEncoding(pl2.first, 1).template toAdd<double>() *
86 manager->template getConstant<double>(1);
93 illegalPlayer2Mask &= illegalPlayer1Mask;
94 illegalPlayer1Mask &= !illegalPlayer1Mask && manager->getRange(state.first);
96 std::unique_ptr<storm::solver::SymbolicGameSolver<DdType>> solver =
97 solverFactory->create(matrix, allRows, illegalPlayer1Mask, illegalPlayer2Mask, rowMetaVariables, columnMetaVariables, rowColumnMetaVariablePairs,
98 player1Variables, player2Variables);
103 manager->getEncoding(state.first, 2).template toAdd<double>() + manager->getEncoding(state.first, 4).template toAdd<double>();
106 storm::dd::Add<DdType> result = solver->solveGame(env, storm::OptimizationDirection::Minimize, storm::OptimizationDirection::Minimize, x, b);
107 result *= manager->getEncoding(state.first, 1).template toAdd<double>();
109 EXPECT_NEAR(0, result.
getValue(), storm::settings::getModule<storm::settings::modules::NativeEquationSolverSettings>().getPrecision());
111 x = manager->template getAddZero<double>();
112 result = solver->solveGame(env, storm::OptimizationDirection::Minimize, storm::OptimizationDirection::Maximize, x, b);
113 result *= manager->getEncoding(state.first, 1).template toAdd<double>();
115 EXPECT_NEAR(0.5, result.
getValue(), storm::settings::getModule<storm::settings::modules::NativeEquationSolverSettings>().getPrecision());
117 x = manager->template getAddZero<double>();
118 result = solver->solveGame(env, storm::OptimizationDirection::Maximize, storm::OptimizationDirection::Minimize, x, b);
119 result *= manager->getEncoding(state.first, 1).template toAdd<double>();
121 EXPECT_NEAR(0.2, result.
getValue(), storm::settings::getModule<storm::settings::modules::NativeEquationSolverSettings>().getPrecision());
123 x = manager->template getAddZero<double>();
124 result = solver->solveGame(env, storm::OptimizationDirection::Maximize, storm::OptimizationDirection::Maximize, x, b);
125 result *= manager->getEncoding(state.first, 1).template toAdd<double>();
127 EXPECT_NEAR(0.99999892625817599, result.
getValue(), storm::settings::getModule<storm::settings::modules::NativeEquationSolverSettings>().getPrecision());