Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
GSPN.h
Go to the documentation of this file.
1#pragma once
2
3#include <stdint.h>
4#include <iostream>
5#include <memory>
6#include <unordered_map>
7#include <vector>
8
10
17
18namespace storm {
19namespace gspn {
20// Stores a GSPN
21class GSPN {
22 public:
23 static uint64_t timedTransitionIdToTransitionId(uint64_t);
24 static uint64_t immediateTransitionIdToTransitionId(uint64_t);
25 static uint64_t transitionIdToTimedTransitionId(uint64_t);
26 static uint64_t transitionIdToImmediateTransitionId(uint64_t);
27
28 // Later, the rates and probabilities type should become a template, for now, let it be doubles.
29 typedef double RateType;
30 typedef double WeightType;
31
32 GSPN(std::string const& name, std::vector<Place> const& places, std::vector<ImmediateTransition<WeightType>> const& itransitions,
33 std::vector<TimedTransition<RateType>> const& ttransitions, std::vector<TransitionPartition> const& partitions,
34 std::shared_ptr<storm::expressions::ExpressionManager> const& exprManager,
35 std::map<storm::expressions::Variable, storm::expressions::Expression> const& constantsSubstitution =
36 std::map<storm::expressions::Variable, storm::expressions::Expression>());
37
43 uint64_t getNumberOfPlaces() const;
44
45 uint64_t getNumberOfImmediateTransitions() const;
46
47 uint64_t getNumberOfTimedTransitions() const;
48
52 std::vector<TransitionPartition> const& getPartitions() const;
53
59 std::vector<TimedTransition<GSPN::RateType>> const& getTimedTransitions() const;
60
66 std::vector<ImmediateTransition<GSPN::WeightType>> const& getImmediateTransitions() const;
67
71 std::vector<storm::gspn::Place> const& getPlaces() const;
72
73 /*
74 * Computes the initial marking of the gspn.
75 *
76 * @param map The Map determines the number of bits for each place.
77 * @return The initial Marking
78 */
79 std::shared_ptr<storm::gspn::Marking> getInitialMarking(std::map<uint64_t, uint64_t>& numberOfBits, uint64_t const& numberOfTotalBits) const;
80
87 storm::gspn::Place const* getPlace(uint64_t id) const;
88
95 storm::gspn::Place const* getPlace(std::string const& name) const;
96
103 storm::gspn::TimedTransition<GSPN::RateType> const* getTimedTransition(std::string const& name) const;
104
112
119 storm::gspn::Transition const* getTransition(std::string const& name) const;
120
126 void writeDotToStream(std::ostream& outStream) const;
127
133 void setName(std::string const& name);
134
140 std::string const& getName() const;
141
147 std::shared_ptr<storm::expressions::ExpressionManager> const& getExpressionManager() const;
148
152 std::map<storm::expressions::Variable, storm::expressions::Expression> const& getConstantsSubstitution() const;
153
157 void setCapacities(std::unordered_map<std::string, uint64_t> const& mapping);
158
159 void setPlaceLayoutInfo(uint64_t placeId, LayoutInfo const& layout) const;
160 void setTransitionLayoutInfo(uint64_t transitionId, LayoutInfo const& layout) const;
161 void setPlaceLayoutInfo(std::map<uint64_t, LayoutInfo> const& placeLayout) const;
162 void setTransitionLayoutInfo(std::map<uint64_t, LayoutInfo> const& transitionLayout) const;
163
164 std::map<uint64_t, LayoutInfo> const& getPlaceLayoutInfos() const;
165
166 std::map<uint64_t, LayoutInfo> const& getTransitionLayoutInfos() const;
167
175 bool isValid() const;
176 // TODO doc
177 void toPnpro(std::ostream& stream) const;
178 // TODO doc
179 void toPnml(std::ostream& stream) const;
180
186 void toJson(std::ostream& stream) const;
187
188 void writeStatsToStream(std::ostream& stream) const;
189
190 private:
191 storm::gspn::Place* getPlace(uint64_t id);
192 storm::gspn::Place* getPlace(std::string const& name);
193
201 bool testPlaces() const;
202
209 bool testTransitions() const;
210
211 // name of the gspn
212 std::string name;
213
214 // set containing all places
215 std::vector<storm::gspn::Place> places;
216
217 // set containing all immediate transitions
218 std::vector<storm::gspn::ImmediateTransition<WeightType>> immediateTransitions;
219
220 // set containing all timed transitions
221 std::vector<storm::gspn::TimedTransition<RateType>> timedTransitions;
222
223 std::vector<storm::gspn::TransitionPartition> partitions;
224
225 std::shared_ptr<storm::expressions::ExpressionManager> exprManager;
226
227 std::map<storm::expressions::Variable, storm::expressions::Expression> constantsSubstitution;
228
229 // Layout information
230 mutable std::map<uint64_t, LayoutInfo> placeLayout;
231 mutable std::map<uint64_t, LayoutInfo> transitionLayout;
232};
233} // namespace gspn
234} // namespace storm
bool isValid() const
Performe some checks.
Definition GSPN.cpp:248
static uint64_t immediateTransitionIdToTransitionId(uint64_t)
Definition GSPN.cpp:17
uint64_t getNumberOfPlaces() const
Returns the number of places in this gspn.
Definition GSPN.cpp:41
static uint64_t timedTransitionIdToTransitionId(uint64_t)
Definition GSPN.cpp:13
storm::gspn::ImmediateTransition< GSPN::WeightType > const * getImmediateTransition(std::string const &name) const
Returns the immediate transition with the corresponding name.
Definition GSPN.cpp:120
uint64_t getNumberOfTimedTransitions() const
Definition GSPN.cpp:49
uint64_t getNumberOfImmediateTransitions() const
Definition GSPN.cpp:45
void toPnml(std::ostream &stream) const
Definition GSPN.cpp:536
void setName(std::string const &name)
Set the name of the gspn to the given name.
Definition GSPN.cpp:240
void setTransitionLayoutInfo(uint64_t transitionId, LayoutInfo const &layout) const
Definition GSPN.cpp:399
std::map< uint64_t, LayoutInfo > const & getTransitionLayoutInfos() const
Definition GSPN.cpp:414
double WeightType
Definition GSPN.h:30
std::vector< ImmediateTransition< GSPN::WeightType > > const & getImmediateTransitions() const
Returns the vector of immediate transitions in this gspn.
Definition GSPN.cpp:57
void setCapacities(std::unordered_map< std::string, uint64_t > const &mapping)
Set Capacities of places according to name->capacity map.
Definition GSPN.cpp:146
static uint64_t transitionIdToTimedTransitionId(uint64_t)
Definition GSPN.cpp:21
std::shared_ptr< storm::gspn::Marking > getInitialMarking(std::map< uint64_t, uint64_t > &numberOfBits, uint64_t const &numberOfTotalBits) const
Definition GSPN.cpp:65
void toJson(std::ostream &stream) const
Export GSPN in Json format.
Definition GSPN.cpp:697
std::map< storm::expressions::Variable, storm::expressions::Expression > const & getConstantsSubstitution() const
Gets an assignment of occurring constants of the GSPN to their value.
Definition GSPN.cpp:142
void writeStatsToStream(std::ostream &stream) const
Definition GSPN.cpp:701
std::vector< TransitionPartition > const & getPartitions() const
Definition GSPN.cpp:73
std::vector< storm::gspn::Place > const & getPlaces() const
Returns the places of this gspn.
Definition GSPN.cpp:61
std::map< uint64_t, LayoutInfo > const & getPlaceLayoutInfos() const
Definition GSPN.cpp:410
storm::gspn::Transition const * getTransition(std::string const &name) const
Returns the transition with the corresponding name.
Definition GSPN.cpp:129
void setPlaceLayoutInfo(uint64_t placeId, LayoutInfo const &layout) const
Definition GSPN.cpp:396
void toPnpro(std::ostream &stream) const
Definition GSPN.cpp:418
storm::gspn::TimedTransition< GSPN::RateType > const * getTimedTransition(std::string const &name) const
Returns the timed transition with the corresponding name.
Definition GSPN.cpp:111
std::shared_ptr< storm::expressions::ExpressionManager > const & getExpressionManager() const
Obtain the expression manager used for expressions over GSPNs.
Definition GSPN.cpp:138
storm::gspn::Place const * getPlace(uint64_t id) const
Returns the place with the corresponding id.
Definition GSPN.cpp:77
static uint64_t transitionIdToImmediateTransitionId(uint64_t)
Definition GSPN.cpp:25
double RateType
Definition GSPN.h:29
std::vector< TimedTransition< GSPN::RateType > > const & getTimedTransitions() const
Returns the vector of timed transitions in this gspn.
Definition GSPN.cpp:53
std::string const & getName() const
Returns the name of the gspn.
Definition GSPN.cpp:244
void writeDotToStream(std::ostream &outStream) const
Write the gspn in a dot(graphviz) configuration.
Definition GSPN.cpp:154
This class provides methods to store and retrieve data for a place in a gspn.
Definition Place.h:12
This class represents a transition in a gspn.
Definition Transition.h:14
LabParser.cpp.
Definition cli.cpp:18