3#include "storm-config.h"
15 forceSoundness =
false;
17 linearEquationSolverType = storm::solver::EquationSolverType::Topological;
18 linearEquationSolverTypeSetFromDefault =
true;
19#if defined STORM_HAVE_GLPK
20 lpSolverType = storm::solver::LpSolverType::Glpk;
21#elif defined STORM_HAVE_SOPLEX
22 lpSolverType = storm::solver::LpSolverType::Soplex;
24 lpSolverType = storm::solver::LpSolverType::Z3;
26 lpSolverTypeSetFromDefault =
true;
27#if defined STORM_DEFAULT_SMT_SOLVER_Z3
28 smtSolverType = storm::solver::SmtSolverType::Z3;
29#elif defined STORM_DEFAULT_SMT_SOLVER_MATHSAT
30 smtSolverType = storm::solver::SmtSolverType::Mathsat;
32 smtSolverType = storm::solver::SmtSolverType::Z3;
34 smtSolverTypeSetFromDefault =
true;
37 showProgressDelay = 5;
45 return eigenSolverEnvironment.get();
49 return eigenSolverEnvironment.get();
53 return eliminationSolverEnvironment.get();
57 return eliminationSolverEnvironment.get();
61 return gameSolverEnvironment.get();
65 return gameSolverEnvironment.get();
69 return glpkSolverEnvironment.get();
73 return glpkSolverEnvironment.get();
77 return gmmxxSolverEnvironment.get();
81 return gmmxxSolverEnvironment.get();
85 return gurobiSolverEnvironment.get();
89 return gurobiSolverEnvironment.get();
93 return longRunAverageSolverEnvironment.get();
97 return longRunAverageSolverEnvironment.get();
101 return minMaxSolverEnvironment.get();
105 return minMaxSolverEnvironment.get();
109 return multiplierEnvironment.get();
113 return multiplierEnvironment.get();
117 return nativeSolverEnvironment.get();
121 return nativeSolverEnvironment.get();
125 return oviSolverEnvironment.get();
129 return oviSolverEnvironment.get();
133 return timeBoundedSolverEnvironment.get();
137 return timeBoundedSolverEnvironment.get();
141 return topologicalSolverEnvironment.get();
145 return topologicalSolverEnvironment.get();
153 SolverEnvironment::verbose = value;
157 return showProgressDelay;
161 SolverEnvironment::showProgressDelay = delay;
165 return linearEquationSolverType;
169 linearEquationSolverTypeSetFromDefault = isSetFromDefault;
170 linearEquationSolverType = value;
174 return linearEquationSolverTypeSetFromDefault;
182 lpSolverTypeSetFromDefault = isSetFromDefault;
183 lpSolverType = value;
187 return lpSolverTypeSetFromDefault;
191 return smtSolverType;
195 smtSolverTypeSetFromDefault = isSetFromDefault;
196 smtSolverType = value;
200 return smtSolverTypeSetFromDefault;
204 storm::solver::EquationSolverType
const& solverType)
const {
205 std::pair<boost::optional<storm::RationalNumber>, boost::optional<bool>> result;
206 switch (solverType) {
207 case storm::solver::EquationSolverType::Gmmxx:
210 case storm::solver::EquationSolverType::Eigen:
213 case storm::solver::EquationSolverType::Native:
217 case storm::solver::EquationSolverType::Elimination:
219 case storm::solver::EquationSolverType::Topological:
223 STORM_LOG_THROW(
false, storm::exceptions::UnexpectedException,
"The selected solver type is unknown.");
229 boost::optional<bool>
const& relativePrecision) {
236 "The current solver type is not respected in this method.");
243 if (relativePrecision) {
250 return forceSoundness;
254 SolverEnvironment::forceSoundness = value;
261 SolverEnvironment::forceExact = value;
269 SolverEnvironment::debug = value;
void setPrecision(storm::RationalNumber value)
storm::RationalNumber const & getPrecision() const
storm::RationalNumber const & getPrecision() const
void setPrecision(storm::RationalNumber value)
storm::RationalNumber const & getPrecision() const
bool const & getRelativeTerminationCriterion() const
void setRelativeTerminationCriterion(bool value)
void setPrecision(storm::RationalNumber value)
TopologicalSolverEnvironment & topological()
void setLinearEquationSolverType(storm::solver::EquationSolverType const &value, bool isSetFromDefault=false)
OviSolverEnvironment & ovi()
EigenSolverEnvironment & eigen()
MinMaxSolverEnvironment & minMax()
void setShowProgressDelay(uint64_t delay)
void setForceSoundness(bool value)
MultiplierEnvironment & multiplier()
storm::solver::EquationSolverType const & getLinearEquationSolverType() const
void setLinearEquationSolverPrecision(boost::optional< storm::RationalNumber > const &newPrecision, boost::optional< bool > const &relativePrecision=boost::none)
void setDebug(bool value)
EliminationSolverEnvironment & elimination()
bool isLinearEquationSolverTypeSetFromDefaultValue() const
GlpkSolverEnvironment & glpk()
void setVerbose(bool value)
bool isLpSolverTypeSetFromDefaultValue() const
uint64_t getShowProgressDelay() const
GameSolverEnvironment & game()
bool isForceExact() const
void setLpSolverType(storm::solver::LpSolverType const &value, bool isSetFromDefault=false)
TimeBoundedSolverEnvironment & timeBounded()
storm::solver::LpSolverType const & getLpSolverType() const
bool isSmtSolverTypeSetFromDefaultValue() const
NativeSolverEnvironment & native()
GurobiSolverEnvironment & gurobi()
GmmxxSolverEnvironment & gmmxx()
LongRunAverageSolverEnvironment & lra()
storm::solver::SmtSolverType const & getSmtSolverType() const
Retrieves the SMT solver that is currently selected.
bool isForceSoundness() const
std::pair< boost::optional< storm::RationalNumber >, boost::optional< bool > > getPrecisionOfLinearEquationSolver(storm::solver::EquationSolverType const &solverType) const
void setForceExact(bool value)
bool isVerboseSet() const
void setSmtSolverType(storm::solver::SmtSolverType const &value, bool isSetFromDefault=false)
#define STORM_LOG_ASSERT(cond, message)
#define STORM_LOG_THROW(cond, exception, message)