Merge lp:~tapaal-dist-ctl/verifypn/verifypn-conf-opti into lp:~verifypn-maintainers/verifypn/trunk

Proposed by Søren Moss Nielsen
Status: Merged
Approved by: Jiri Srba
Approved revision: 80
Merged at revision: 81
Proposed branch: lp:~tapaal-dist-ctl/verifypn/verifypn-conf-opti
Merge into: lp:~verifypn-maintainers/verifypn/trunk
Diff against target: 171 lines (+56/-21)
4 files modified
CTL/DependencyGraph.h (+1/-1)
CTL/OnTheFlyDG.cpp (+44/-13)
CTL/OnTheFlyDG.h (+6/-6)
CTL/marking.h (+5/-1)
To merge this branch: bzr merge lp:~tapaal-dist-ctl/verifypn/verifypn-conf-opti
Reviewer Review Type Date Requested Status
Jiri Srba Approve
Review via email: mp+291785@code.launchpad.net

Description of the change

===============================================================
:::::::::::::::: Configuration optimization :::::::::::::::::::
===============================================================
Setup:
   - TIMEOUT: 60sec
   - ModelDB size: 78
   - Total possible answers: 1248

Base:
   //The current trunk as of commit 79
   ANSWERS: 927

New version
   ANSWERS: 935

To post a comment you must log in.
Revision history for this message
Jiri Srba (srba) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CTL/DependencyGraph.h'
2--- CTL/DependencyGraph.h 2016-03-31 11:56:31 +0000
3+++ CTL/DependencyGraph.h 2016-04-13 16:24:44 +0000
4@@ -31,7 +31,7 @@
5 void initialize(CTLTree &t_query);
6
7 protected:
8- CTLTree *_query;
9+ CTLTree *_query = nullptr;
10 PetriEngine::PetriNet *_petriNet;
11 PetriEngine::MarkVal *_initialMarking;
12 PNMLParser::InhibitorArcList _inhibitorArcs;
13
14=== modified file 'CTL/OnTheFlyDG.cpp'
15--- CTL/OnTheFlyDG.cpp 2016-04-12 12:11:40 +0000
16+++ CTL/OnTheFlyDG.cpp 2016-04-13 16:24:44 +0000
17@@ -5,7 +5,10 @@
18 namespace ctl{
19
20 OnTheFlyDG::OnTheFlyDG(PetriEngine::PetriNet *t_net, PetriEngine::MarkVal *t_initial, PNMLParser::InhibitorArcList inhibitorArcs):
21- DependencyGraph(t_net, t_initial, inhibitorArcs){_compressoption = false;}
22+ DependencyGraph(t_net, t_initial, inhibitorArcs)
23+{
24+ _compressoption = false;
25+}
26
27
28 bool OnTheFlyDG::fastEval(CTLTree &query, Marking &marking) {
29@@ -303,8 +306,9 @@
30
31 Configuration &OnTheFlyDG::initialConfiguration()
32 {
33- Marking *initial = new Marking(_initialMarking, _nplaces);
34- return *createConfiguration(*initial, *_query);
35+ Markings.insert(&initial_marking);
36+ Configuration* initial = createConfiguration(initial_marking, *_query);
37+ return *initial;
38 }
39
40 bool OnTheFlyDG::evaluateQuery(CTLTree &query, Marking &marking){
41@@ -437,10 +441,28 @@
42
43 void OnTheFlyDG::clear(bool t_clear_all)
44 {
45- for(auto c : Configurations){
46- delete c;
47+// int i = 0;
48+// int max_i = Markings.size();
49+ for(Marking *m : Markings){
50+// printf("Cleaning up marking %d of %d: ", ++i, max_i);
51+// m->print();
52+// printf("\n");
53+
54+// if(m == &initial_marking)
55+// printf("Successor count: %d\n",(int) m->successors.size());
56+ for(Configuration *c : m->successors){
57+// c->configPrinter();
58+ delete c;
59+ }
60+
61+ m->successors.resize(0);
62 }
63- Configurations.clear();
64+// printf("Done Cleaning Configurations\n");
65+
66+// for(Configuration *c : Configurations){
67+// delete c;
68+// }
69+// Configurations.clear();
70
71 if(t_clear_all){
72 for(auto m : Markings){
73@@ -452,6 +474,11 @@
74
75 Configuration *OnTheFlyDG::createConfiguration(Marking &t_marking, CTLTree &t_query)
76 {
77+ for(Configuration* c : t_marking.successors){
78+ if(c->query == &t_query)
79+ return c;
80+ }
81+
82 Configuration* newConfig = new Configuration();
83 newConfig->marking = &t_marking;
84 newConfig->query = &t_query;
85@@ -460,13 +487,17 @@
86 if(t_query.quantifier == NEG){
87 newConfig->IsNegated = true;
88 }
89- auto pair = Configurations.insert(newConfig);
90-
91- if(!pair.second) {
92- delete newConfig;
93- }
94-
95- return *(pair.first);
96+
97+ t_marking.successors.push_back(newConfig);
98+ return newConfig;
99+
100+ //auto pair = Configurations.insert(newConfig);
101+
102+// if(!pair.second) {
103+// delete newConfig;
104+// }
105+
106+// return *(pair.first);
107 }
108
109
110
111=== modified file 'CTL/OnTheFlyDG.h'
112--- CTL/OnTheFlyDG.h 2016-04-12 08:29:03 +0000
113+++ CTL/OnTheFlyDG.h 2016-04-13 16:24:44 +0000
114@@ -22,18 +22,18 @@
115 std::list<Edge *> successors(Configuration &v);
116 Configuration &initialConfiguration();
117 void clear(bool t_clear_all);
118- int configuration_count() { return Configurations.size();}
119+ int configuration_count() { return 0;/*Configurations.size();*/}
120 int marking_count() { return Markings.size(); }
121
122-
123+ Marking initial_marking = Marking(_initialMarking, _nplaces);
124 boost::unordered_set< Marking*,
125 boost::hash<Marking*>,
126 Marking::Marking_Equal_To> Markings;
127
128- boost::unordered_set< Configuration*,
129- boost::hash<Configuration*>,
130- Configuration::Configuration_Equal_To> Configurations;
131- bool isCompressing() {return _compressoption;};
132+// boost::unordered_set< Configuration*,
133+// boost::hash<Configuration*>,
134+// Configuration::Configuration_Equal_To> Configurations;
135+ bool isCompressing() {return _compressoption;}
136
137 protected:
138 bool evaluateQuery(CTLTree &query, Marking &marking);
139
140=== modified file 'CTL/marking.h'
141--- CTL/marking.h 2016-04-07 13:20:00 +0000
142+++ CTL/marking.h 2016-04-13 16:24:44 +0000
143@@ -15,8 +15,11 @@
144 //inline functions to make the class
145 //act/look/feel like an array.
146
147+class Configuration;
148+
149 class Marking
150 {
151+ typedef std::vector<Configuration*> succ_container_type;
152 public:
153 // Equality checker for containers
154 // with pointers to markings
155@@ -28,7 +31,7 @@
156
157 Marking(){}
158 Marking(PetriEngine::MarkVal* t_marking, size_t t_length)
159- : m_marking(t_marking), m_length(t_length){}
160+ : m_marking(t_marking), m_length(t_length){ }
161
162 virtual ~Marking(){ free(m_marking); }
163
164@@ -43,6 +46,7 @@
165 inline PetriEngine::MarkVal* Value() const {return m_marking;}
166 void print() const;
167 inline size_t Length() const {return m_length;}
168+ succ_container_type successors;
169 private:
170 PetriEngine::MarkVal* m_marking;
171 size_t m_length;

Subscribers

People subscribed via source and target branches