Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
solver.h
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
5
6namespace storm {
7namespace solver {
8
9template<typename ValueType, bool RawMode>
10class LpSolver;
11
12class GurobiEnvironment;
13
14class SmtSolver;
15} // namespace solver
16
17namespace expressions {
18class ExpressionManager;
19} // namespace expressions
20} // namespace storm
21
22namespace storm::utility::solver {
23template<typename ValueType>
25 public:
26 virtual ~LpSolverFactory() = default;
27
34 virtual std::unique_ptr<storm::solver::LpSolver<ValueType, false>> create(std::string const& name) const = 0;
35 virtual std::unique_ptr<storm::solver::LpSolver<ValueType, true>> createRaw(std::string const& name) const = 0;
36 virtual std::unique_ptr<LpSolverFactory<ValueType>> clone() const = 0;
37};
38
39template<typename ValueType>
40class GlpkLpSolverFactory : public LpSolverFactory<ValueType> {
41 public:
42 virtual std::unique_ptr<storm::solver::LpSolver<ValueType, false>> create(std::string const& name) const override;
43 virtual std::unique_ptr<storm::solver::LpSolver<ValueType, true>> createRaw(std::string const& name) const override;
44 virtual std::unique_ptr<LpSolverFactory<ValueType>> clone() const override;
45};
46
47template<typename ValueType>
48class SoplexLpSolverFactory : public LpSolverFactory<ValueType> {
49 public:
50 virtual std::unique_ptr<storm::solver::LpSolver<ValueType, false>> create(std::string const& name) const override;
51 virtual std::unique_ptr<storm::solver::LpSolver<ValueType, true>> createRaw(std::string const& name) const override;
52 virtual std::unique_ptr<LpSolverFactory<ValueType>> clone() const override;
53};
54
55template<typename ValueType>
56class GurobiLpSolverFactory : public LpSolverFactory<ValueType> {
57 public:
59 virtual std::unique_ptr<storm::solver::LpSolver<ValueType, false>> create(std::string const& name) const override;
60 virtual std::unique_ptr<storm::solver::LpSolver<ValueType, true>> createRaw(std::string const& name) const override;
61 virtual std::unique_ptr<LpSolverFactory<ValueType>> clone() const override;
62
63 private:
64 std::shared_ptr<storm::solver::GurobiEnvironment> environment;
65};
66
67template<typename ValueType>
68class Z3LpSolverFactory : public LpSolverFactory<ValueType> {
69 public:
70 virtual std::unique_ptr<storm::solver::LpSolver<ValueType, false>> create(std::string const& name) const override;
71 virtual std::unique_ptr<storm::solver::LpSolver<ValueType, true>> createRaw(std::string const& name) const override;
72 virtual std::unique_ptr<LpSolverFactory<ValueType>> clone() const override;
73};
74
75template<typename ValueType>
76std::unique_ptr<LpSolverFactory<ValueType>> getLpSolverFactory(
77 storm::solver::LpSolverTypeSelection solvType = storm::solver::LpSolverTypeSelection::FROMSETTINGS);
78
79template<typename ValueType>
80std::unique_ptr<storm::solver::LpSolver<ValueType, false>> getLpSolver(
81 std::string const& name, storm::solver::LpSolverTypeSelection solvType = storm::solver::LpSolverTypeSelection::FROMSETTINGS);
82
83template<typename ValueType>
84std::unique_ptr<storm::solver::LpSolver<ValueType, true>> getRawLpSolver(
85 std::string const& name, storm::solver::LpSolverTypeSelection solvType = storm::solver::LpSolverTypeSelection::FROMSETTINGS);
86
88 public:
89 virtual ~SmtSolverFactory() = default;
90
98 virtual std::unique_ptr<storm::solver::SmtSolver> create(storm::expressions::ExpressionManager& manager) const;
99};
100
102 public:
103 virtual std::unique_ptr<storm::solver::SmtSolver> create(storm::expressions::ExpressionManager& manager) const;
104};
105
107 public:
108 virtual std::unique_ptr<storm::solver::SmtSolver> create(storm::expressions::ExpressionManager& manager) const;
109};
110
111std::unique_ptr<storm::solver::SmtSolver> getSmtSolver(storm::expressions::ExpressionManager& manager);
112} // namespace storm::utility::solver
This class is responsible for managing a set of typed variables and all expressions using these varia...
virtual std::unique_ptr< LpSolverFactory< ValueType > > clone() const override
Definition solver.cpp:30
virtual std::unique_ptr< storm::solver::LpSolver< ValueType, true > > createRaw(std::string const &name) const override
Definition solver.cpp:25
virtual std::unique_ptr< storm::solver::LpSolver< ValueType, false > > create(std::string const &name) const override
Creates a new linear equation solver instance with the given name.
Definition solver.cpp:20
virtual std::unique_ptr< storm::solver::LpSolver< ValueType, false > > create(std::string const &name) const override
Creates a new linear equation solver instance with the given name.
Definition solver.cpp:56
virtual std::unique_ptr< storm::solver::LpSolver< ValueType, true > > createRaw(std::string const &name) const override
Definition solver.cpp:61
virtual std::unique_ptr< LpSolverFactory< ValueType > > clone() const override
Definition solver.cpp:66
virtual std::unique_ptr< storm::solver::LpSolver< ValueType, true > > createRaw(std::string const &name) const =0
virtual std::unique_ptr< storm::solver::LpSolver< ValueType, false > > create(std::string const &name) const =0
Creates a new linear equation solver instance with the given name.
virtual std::unique_ptr< LpSolverFactory< ValueType > > clone() const =0
virtual std::unique_ptr< storm::solver::SmtSolver > create(storm::expressions::ExpressionManager &manager) const
Creates a new SMT solver instance.
Definition solver.cpp:150
virtual std::unique_ptr< storm::solver::SmtSolver > create(storm::expressions::ExpressionManager &manager) const
Creates a new SMT solver instance.
Definition solver.cpp:124
virtual std::unique_ptr< LpSolverFactory< ValueType > > clone() const override
Definition solver.cpp:45
virtual std::unique_ptr< storm::solver::LpSolver< ValueType, true > > createRaw(std::string const &name) const override
Definition solver.cpp:40
virtual std::unique_ptr< storm::solver::LpSolver< ValueType, false > > create(std::string const &name) const override
Creates a new linear equation solver instance with the given name.
Definition solver.cpp:35
virtual std::unique_ptr< LpSolverFactory< ValueType > > clone() const override
Definition solver.cpp:81
virtual std::unique_ptr< storm::solver::LpSolver< ValueType, true > > createRaw(std::string const &name) const override
Definition solver.cpp:76
virtual std::unique_ptr< storm::solver::LpSolver< ValueType, false > > create(std::string const &name) const override
Creates a new linear equation solver instance with the given name.
Definition solver.cpp:71
virtual std::unique_ptr< storm::solver::SmtSolver > create(storm::expressions::ExpressionManager &manager) const
Creates a new SMT solver instance.
Definition solver.cpp:146
std::unique_ptr< storm::solver::LpSolver< ValueType > > getLpSolver(std::string const &name, storm::solver::LpSolverTypeSelection solvType)
Definition solver.cpp:113
std::unique_ptr< storm::solver::SmtSolver > getSmtSolver(storm::expressions::ExpressionManager &manager)
Definition solver.cpp:154
std::unique_ptr< LpSolverFactory< ValueType > > getLpSolverFactory(storm::solver::LpSolverTypeSelection solvType)
Definition solver.cpp:86
std::unique_ptr< storm::solver::LpSolver< ValueType, true > > getRawLpSolver(std::string const &name, storm::solver::LpSolverTypeSelection solvType)
Definition solver.cpp:119
LabParser.cpp.
Definition cli.cpp:18