Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
SolverEnvironment.h
Go to the documentation of this file.
1#pragma once
2
3#include <boost/optional.hpp>
4#include <memory>
5
10
11namespace storm {
12
13// Forward declare subenvironments
27
28// Explicitly instantiated once in CoreEnvironments.cpp
29// Avoids redundant re-instantiation elsewhere
30extern template class SubEnvironment<EigenSolverEnvironment>;
32extern template class SubEnvironment<GameSolverEnvironment>;
33extern template class SubEnvironment<GlpkSolverEnvironment>;
34extern template class SubEnvironment<GmmxxSolverEnvironment>;
35extern template class SubEnvironment<GurobiSolverEnvironment>;
37extern template class SubEnvironment<MinMaxSolverEnvironment>;
38extern template class SubEnvironment<MultiplierEnvironment>;
39extern template class SubEnvironment<NativeSolverEnvironment>;
40extern template class SubEnvironment<OviSolverEnvironment>;
43
45 public:
48
50 EigenSolverEnvironment const& eigen() const;
51
54
56 GameSolverEnvironment const& game() const;
57
59 GlpkSolverEnvironment const& glpk() const;
60
62 GmmxxSolverEnvironment const& gmmxx() const;
63
65 GurobiSolverEnvironment const& gurobi() const;
66
69
71 MinMaxSolverEnvironment const& minMax() const;
72
74 MultiplierEnvironment const& multiplier() const;
75
77 NativeSolverEnvironment const& native() const;
78
80 OviSolverEnvironment const& ovi() const;
81
84
87
88 storm::solver::EquationSolverType const& getLinearEquationSolverType() const;
89 void setLinearEquationSolverType(storm::solver::EquationSolverType const& value, bool isSetFromDefault = false);
91
92 storm::solver::LpSolverType const& getLpSolverType() const;
93 void setLpSolverType(storm::solver::LpSolverType const& value, bool isSetFromDefault = false);
95
103 storm::solver::SmtSolverType const& getSmtSolverType() const;
104 void setSmtSolverType(storm::solver::SmtSolverType const& value, bool isSetFromDefault = false);
106
107 std::pair<boost::optional<storm::RationalNumber>, boost::optional<bool>> getPrecisionOfLinearEquationSolver(
108 storm::solver::EquationSolverType const& solverType) const;
109 void setLinearEquationSolverPrecision(boost::optional<storm::RationalNumber> const& newPrecision,
110 boost::optional<bool> const& relativePrecision = boost::none);
111
112 bool isForceSoundness() const;
113 void setForceSoundness(bool value);
114 bool isForceExact() const;
115 void setForceExact(bool value);
116 bool isDebugSet() const;
117 void setDebug(bool value);
118 bool isVerboseSet() const;
119 void setVerbose(bool value);
120 uint64_t getShowProgressDelay() const;
121 void setShowProgressDelay(uint64_t delay);
122
123 private:
124 SubEnvironment<EigenSolverEnvironment> eigenSolverEnvironment;
125 SubEnvironment<EliminationSolverEnvironment> eliminationSolverEnvironment;
126 SubEnvironment<GameSolverEnvironment> gameSolverEnvironment;
127 SubEnvironment<GlpkSolverEnvironment> glpkSolverEnvironment;
128 SubEnvironment<GmmxxSolverEnvironment> gmmxxSolverEnvironment;
129 SubEnvironment<GurobiSolverEnvironment> gurobiSolverEnvironment;
130 SubEnvironment<LongRunAverageSolverEnvironment> longRunAverageSolverEnvironment;
131 SubEnvironment<MinMaxSolverEnvironment> minMaxSolverEnvironment;
132 SubEnvironment<MultiplierEnvironment> multiplierEnvironment;
133 SubEnvironment<NativeSolverEnvironment> nativeSolverEnvironment;
134 SubEnvironment<OviSolverEnvironment> oviSolverEnvironment;
135 SubEnvironment<TimeBoundedSolverEnvironment> timeBoundedSolverEnvironment;
136 SubEnvironment<TopologicalSolverEnvironment> topologicalSolverEnvironment;
137
138 storm::solver::EquationSolverType linearEquationSolverType;
139 bool linearEquationSolverTypeSetFromDefault;
140 storm::solver::LpSolverType lpSolverType;
141 bool lpSolverTypeSetFromDefault;
142 storm::solver::SmtSolverType smtSolverType;
143 bool smtSolverTypeSetFromDefault;
144 bool forceSoundness;
145 bool forceExact;
146 bool debug;
147 bool verbose;
148 uint64_t showProgressDelay;
149};
150} // namespace storm
TopologicalSolverEnvironment & topological()
void setLinearEquationSolverType(storm::solver::EquationSolverType const &value, bool isSetFromDefault=false)
OviSolverEnvironment & ovi()
EigenSolverEnvironment & eigen()
MinMaxSolverEnvironment & minMax()
void setShowProgressDelay(uint64_t delay)
MultiplierEnvironment & multiplier()
storm::solver::EquationSolverType const & getLinearEquationSolverType() const
void setLinearEquationSolverPrecision(boost::optional< storm::RationalNumber > const &newPrecision, boost::optional< bool > const &relativePrecision=boost::none)
EliminationSolverEnvironment & elimination()
bool isLinearEquationSolverTypeSetFromDefaultValue() const
GlpkSolverEnvironment & glpk()
bool isLpSolverTypeSetFromDefaultValue() const
uint64_t getShowProgressDelay() const
GameSolverEnvironment & game()
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.
std::pair< boost::optional< storm::RationalNumber >, boost::optional< bool > > getPrecisionOfLinearEquationSolver(storm::solver::EquationSolverType const &solverType) const
void setSmtSolverType(storm::solver::SmtSolverType const &value, bool isSetFromDefault=false)