29 std::vector<std::string> linearEquationSolver = {
"gmm++",
"native",
"eigen",
"elimination"};
31 "Sets which solver is considered for solving the underlying equation systems.")
35 .setDefaultValueString(
"gmm++")
38 std::vector<std::string> minMaxSolvingTechniques = {
39 "vi",
"value-iteration",
"pi",
"policy-iteration",
"lp",
"linear-programming",
"rs",
"ratsearch",
40 "ii",
"interval-iteration",
"svi",
"sound-value-iteration",
"ovi",
"optimistic-value-iteration",
"vi-to-pi",
"vi-to-lp"};
42 "Sets which minmax method is considered for solving the underlying minmax equation systems.")
46 .setDefaultValueString(
"value-iteration")
67 if (equationSolverName ==
"gmm++") {
68 return storm::solver::EquationSolverType::Gmmxx;
69 }
else if (equationSolverName ==
"native") {
70 return storm::solver::EquationSolverType::Native;
71 }
else if (equationSolverName ==
"eigen") {
72 return storm::solver::EquationSolverType::Eigen;
73 }
else if (equationSolverName ==
"elimination") {
74 return storm::solver::EquationSolverType::Elimination;
76 STORM_LOG_THROW(
false, storm::exceptions::IllegalArgumentValueException,
"Unknown underlying equation solver '" << equationSolverName <<
"'.");
90 if (minMaxEquationSolvingTechnique ==
"value-iteration" || minMaxEquationSolvingTechnique ==
"vi") {
91 return storm::solver::MinMaxMethod::ValueIteration;
92 }
else if (minMaxEquationSolvingTechnique ==
"policy-iteration" || minMaxEquationSolvingTechnique ==
"pi") {
93 return storm::solver::MinMaxMethod::PolicyIteration;
94 }
else if (minMaxEquationSolvingTechnique ==
"linear-programming" || minMaxEquationSolvingTechnique ==
"lp") {
95 return storm::solver::MinMaxMethod::LinearProgramming;
96 }
else if (minMaxEquationSolvingTechnique ==
"ratsearch" || minMaxEquationSolvingTechnique ==
"rs") {
97 return storm::solver::MinMaxMethod::RationalSearch;
98 }
else if (minMaxEquationSolvingTechnique ==
"interval-iteration" || minMaxEquationSolvingTechnique ==
"ii") {
99 return storm::solver::MinMaxMethod::IntervalIteration;
100 }
else if (minMaxEquationSolvingTechnique ==
"sound-value-iteration" || minMaxEquationSolvingTechnique ==
"svi") {
101 return storm::solver::MinMaxMethod::SoundValueIteration;
102 }
else if (minMaxEquationSolvingTechnique ==
"optimistic-value-iteration" || minMaxEquationSolvingTechnique ==
"ovi") {
103 return storm::solver::MinMaxMethod::OptimisticValueIteration;
104 }
else if (minMaxEquationSolvingTechnique ==
"vi-to-pi") {
105 return storm::solver::MinMaxMethod::ViToPi;
106 }
else if (minMaxEquationSolvingTechnique ==
"vi-to-lp") {
107 return storm::solver::MinMaxMethod::ViToLp;
110 STORM_LOG_THROW(
false, storm::exceptions::IllegalArgumentValueException,
"Unknown underlying equation solver '" << minMaxEquationSolvingTechnique <<
"'.");