1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
|
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Data analysis for the paper \"Automated Generation of Consistent Models with Structural and Attribute Constraints\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, let's load some packages."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Loading required package: tidyverse\n",
"\n",
"── \u001b[1mAttaching packages\u001b[22m ─────────────────────────────────────── tidyverse 1.3.0 ──\n",
"\n",
"\u001b[32m✔\u001b[39m \u001b[34mggplot2\u001b[39m 3.3.2 \u001b[32m✔\u001b[39m \u001b[34mpurrr \u001b[39m 0.3.4\n",
"\u001b[32m✔\u001b[39m \u001b[34mtibble \u001b[39m 3.0.3 \u001b[32m✔\u001b[39m \u001b[34mdplyr \u001b[39m 1.0.0\n",
"\u001b[32m✔\u001b[39m \u001b[34mtidyr \u001b[39m 1.1.0 \u001b[32m✔\u001b[39m \u001b[34mstringr\u001b[39m 1.4.0\n",
"\u001b[32m✔\u001b[39m \u001b[34mreadr \u001b[39m 1.3.1 \u001b[32m✔\u001b[39m \u001b[34mforcats\u001b[39m 0.5.0\n",
"\n",
"Warning message:\n",
"“package ‘ggplot2’ was built under R version 4.0.1”\n",
"Warning message:\n",
"“package ‘tibble’ was built under R version 4.0.2”\n",
"── \u001b[1mConflicts\u001b[22m ────────────────────────────────────────── tidyverse_conflicts() ──\n",
"\u001b[31m✖\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mfilter()\u001b[39m masks \u001b[34mstats\u001b[39m::filter()\n",
"\u001b[31m✖\u001b[39m \u001b[34mdplyr\u001b[39m::\u001b[32mlag()\u001b[39m masks \u001b[34mstats\u001b[39m::lag()\n",
"\n",
"Warning message in dir.create(\"plots\"):\n",
"“'plots' already exists”\n"
]
}
],
"source": [
"require(tidyverse)\n",
"dir.create('plots')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"scrolled": false
},
"outputs": [],
"source": [
"ProcessDetailedStatistics <- function(str) {\n",
" str <- sub('TransformationExecutionTime', 'TransformationExecutionTime:', str)\n",
" str <- sub('Backtrackingtime', 'BacktrackingTime', str)\n",
" str <- gsub('\\\\(|\\\\)', '', str)\n",
" str <- lapply(strsplit(str, '\\\\||:'), function (v) {\n",
" dim(v) <- c(2, 12)\n",
" values <- as.double(v[2,])\n",
" names(values) <- v[1,]\n",
" as.data.frame(t(values))\n",
" })\n",
" str\n",
"}\n",
"Load10Log <- function(filename, size) {\n",
" read_csv(filename, col_types = cols(\n",
" .default = col_double(),\n",
" Result = col_character(),\n",
" Solution1DetailedStatistics = col_character(),\n",
" Solution2DetailedStatistics = col_character(),\n",
" Solution3DetailedStatistics = col_character(),\n",
" Solution4DetailedStatistics = col_character(),\n",
" Solution5DetailedStatistics = col_character(),\n",
" Solution6DetailedStatistics = col_character(),\n",
" Solution7DetailedStatistics = col_character(),\n",
" Solution8DetailedStatistics = col_character(),\n",
" Solution9DetailedStatistics = col_character(),\n",
" Solution10DetailedStatistics = col_character()\n",
" )) %>% transmute(\n",
" n = size,\n",
" Run = Run,\n",
" preprocessingTime = get('Domain to logic transformation time') + get('Logic to solver transformation time') + ExplorationInitializationTime,\n",
" Solution0FoundAt = Solution0FoundAt,\n",
" additionalTime = Solution9FoundAt - Solution0FoundAt,\n",
" Solution1DetailedStatistics = ProcessDetailedStatistics(Solution1DetailedStatistics)\n",
" ) %>% unnest() %>% mutate(\n",
" # (Logical) constraint evluation should count as refinement.\n",
" ForwardTime = ForwardTime + GlobalConstraintEvaluationTime + FitnessCalculationTime,\n",
" preprocessingTime = preprocessingTime,\n",
" BacktrackingTime = Solution0FoundAt - (StateCoderTime + ForwardTime + NumericalSolverSumTime)\n",
" ) %>% select(n, Run, preprocessingTime, StateCoderTime, ForwardTime, BacktrackingTime, NumericalSolverSumTime, additionalTime)\n",
"}\n",
"Load1Log <- function(filename, size) {\n",
" read_csv(filename, col_types = cols(\n",
" .default = col_double(),\n",
" Result = col_character(),\n",
" Solution1DetailedStatistics = col_character()\n",
" )) %>% filter(Result == \"ModelResultImpl\") %>% transmute(\n",
" n = size,\n",
" Run = Run,\n",
" preprocessingTime = get('Domain to logic transformation time') + get('Logic to solver transformation time') + ExplorationInitializationTime,\n",
" Solution0FoundAt = Solution0FoundAt,\n",
" Solution1DetailedStatistics = ProcessDetailedStatistics(Solution1DetailedStatistics)\n",
" ) %>% unnest(cols = c(Solution1DetailedStatistics)) %>% mutate(\n",
" ForwardTime = ForwardTime + GlobalConstraintEvaluationTime + FitnessCalculationTime,\n",
" BacktrackingTime = Solution0FoundAt - (StateCoderTime + ForwardTime + NumericalSolverSumTime)\n",
" ) %>% select(n, Run, preprocessingTime, StateCoderTime, ForwardTime, BacktrackingTime, NumericalSolverSumTime)\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"ProcessRQ1 <- function(df) {\n",
" df %>% group_by(n) %>% summarize(\n",
" .groups = 'drop',\n",
" time = median(preprocessingTime + StateCoderTime + ForwardTime + BacktrackingTime + NumericalSolverSumTime) / 1000.0\n",
" )\n",
"}\n",
"ProcessRQ2 <- function(df) {\n",
" df %>% group_by(n) %>% summarize(\n",
" .groups = 'drop',\n",
" preprocessingTime = median(preprocessingTime) / 1000.0,\n",
" StateCoderTime = median(StateCoderTime) / 1000.0,\n",
" ForwardTime = median(ForwardTime) / 1000.0,\n",
" BacktrackingTime = median(BacktrackingTime) / 1000.0,\n",
" NumericalSolverSumTime = median(NumericalSolverSumTime) / 1000.0,\n",
" additionalTime = median(additionalTime) / 1000.0\n",
" )\n",
"}\n",
"ProcessRQ3 <- ProcessRQ1"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"RQ2Plot <- function(df, name) {\n",
" df <- df %>% gather(name, value, -n) %>% filter(name != \"preprocessingTime\")\n",
" df$name <- factor(df$name, levels=rev(c('ForwardTime', 'BacktrackingTime', 'StateCoderTime', 'NumericalSolverSumTime', 'additionalTime')))\n",
" plot <- df %>% ggplot(aes(x=n, y=value, fill=name)) +\n",
" geom_bar(stat='identity') +\n",
" scale_fill_brewer(palette='Set2',\n",
" labels=rev(c('Refinement', 'Backtracking', 'State Coding', 'SMT Solver Calls', 'Additional Model Generation')),\n",
" guide=FALSE) +\n",
" scale_x_continuous(breaks=c(20, 40, 60, 80, 100), name=\"Model Size (# nodes)\") +\n",
" scale_y_continuous(name=\"Runtime (s)\") +\n",
" theme_bw()\n",
" ggsave(plot=plot, filename=paste0('plots/plot_RQ2_', name, '.pdf'), width=3.5, height=2.5)\n",
" plot\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Fam domain"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Warning message:\n",
"“`cols` is now required when using unnest().\n",
"Please use `cols = c(Solution1DetailedStatistics)`”\n"
]
},
{
"data": {
"text/html": [
"<table>\n",
"<caption>A tibble: 1 × 8</caption>\n",
"<thead>\n",
"\t<tr><th scope=col>n</th><th scope=col>Run</th><th scope=col>preprocessingTime</th><th scope=col>StateCoderTime</th><th scope=col>ForwardTime</th><th scope=col>BacktrackingTime</th><th scope=col>NumericalSolverSumTime</th><th scope=col>additionalTime</th></tr>\n",
"\t<tr><th scope=col><dbl></th><th scope=col><dbl></th><th scope=col><dbl></th><th scope=col><dbl></th><th scope=col><dbl></th><th scope=col><dbl></th><th scope=col><dbl></th><th scope=col><dbl></th></tr>\n",
"</thead>\n",
"<tbody>\n",
"\t<tr><td>20</td><td>1</td><td>14735</td><td>994</td><td>1890</td><td>1272</td><td>4391</td><td>14750</td></tr>\n",
"</tbody>\n",
"</table>\n"
],
"text/latex": [
"A tibble: 1 × 8\n",
"\\begin{tabular}{llllllll}\n",
" n & Run & preprocessingTime & StateCoderTime & ForwardTime & BacktrackingTime & NumericalSolverSumTime & additionalTime\\\\\n",
" <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl>\\\\\n",
"\\hline\n",
"\t 20 & 1 & 14735 & 994 & 1890 & 1272 & 4391 & 14750\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A tibble: 1 × 8\n",
"\n",
"| n <dbl> | Run <dbl> | preprocessingTime <dbl> | StateCoderTime <dbl> | ForwardTime <dbl> | BacktrackingTime <dbl> | NumericalSolverSumTime <dbl> | additionalTime <dbl> |\n",
"|---|---|---|---|---|---|---|---|\n",
"| 20 | 1 | 14735 | 994 | 1890 | 1272 | 4391 | 14750 |\n",
"\n"
],
"text/plain": [
" n Run preprocessingTime StateCoderTime ForwardTime BacktrackingTime\n",
"1 20 1 14735 994 1890 1272 \n",
" NumericalSolverSumTime additionalTime\n",
"1 4391 14750 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<table>\n",
"<caption>A tibble: 1 × 7</caption>\n",
"<thead>\n",
"\t<tr><th scope=col>n</th><th scope=col>preprocessingTime</th><th scope=col>StateCoderTime</th><th scope=col>ForwardTime</th><th scope=col>BacktrackingTime</th><th scope=col>NumericalSolverSumTime</th><th scope=col>additionalTime</th></tr>\n",
"\t<tr><th scope=col><dbl></th><th scope=col><dbl></th><th scope=col><dbl></th><th scope=col><dbl></th><th scope=col><dbl></th><th scope=col><dbl></th><th scope=col><dbl></th></tr>\n",
"</thead>\n",
"<tbody>\n",
"\t<tr><td>20</td><td>14.735</td><td>0.994</td><td>1.89</td><td>1.272</td><td>4.391</td><td>14.75</td></tr>\n",
"</tbody>\n",
"</table>\n"
],
"text/latex": [
"A tibble: 1 × 7\n",
"\\begin{tabular}{lllllll}\n",
" n & preprocessingTime & StateCoderTime & ForwardTime & BacktrackingTime & NumericalSolverSumTime & additionalTime\\\\\n",
" <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl>\\\\\n",
"\\hline\n",
"\t 20 & 14.735 & 0.994 & 1.89 & 1.272 & 4.391 & 14.75\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A tibble: 1 × 7\n",
"\n",
"| n <dbl> | preprocessingTime <dbl> | StateCoderTime <dbl> | ForwardTime <dbl> | BacktrackingTime <dbl> | NumericalSolverSumTime <dbl> | additionalTime <dbl> |\n",
"|---|---|---|---|---|---|---|\n",
"| 20 | 14.735 | 0.994 | 1.89 | 1.272 | 4.391 | 14.75 |\n",
"\n"
],
"text/plain": [
" n preprocessingTime StateCoderTime ForwardTime BacktrackingTime\n",
"1 20 14.735 0.994 1.89 1.272 \n",
" NumericalSolverSumTime additionalTime\n",
"1 4.391 14.75 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"14.735"
],
"text/latex": [
"14.735"
],
"text/markdown": [
"14.735"
],
"text/plain": [
"[1] 14.735"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAC+lBMVEUAAAABAQECAgIDAwME\nBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUW\nFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJyco\nKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6\nOjo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tM\nTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1e\nXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZmwqVoaGhpaWlqampra2tsbGxtbW1ubm5vb29w\ncHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGC\ngoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2NoMuOjo6Pj4+RkZGSkpKTk5OV\nlZWWlpaXl5eYmJiampqbm5ucnJydnZ2enp6fn5+goKChoaGjo6OkpKSlpaWmpqam2FSnp6eo\nqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGzs7O0tLS1tbW2tra3t7e4uLi5ubm6urq7\nu7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vMzMzO\nzs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f39/g\n4ODh4eHi4uLj4+Pk5OTl5eXm5ubnisPn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx\n8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8jWL8/Pz9/f3+/v7///9xBoAgAAAA\nCXBIWXMAABJ0AAASdAHeZh94AAAXzUlEQVR4nO3dfbwddWHn8SGQRHmQWp4UUbr1AV0whYaC\nBbEVWGorSZCHUAISEh5WBBdFu9BCF1jasBWosZYtAgrSRYoPFdAIimBdgoKGCrIIibYEFsIl\n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",
"text/plain": [
"plot without title"
]
},
"metadata": {
"image/png": {
"height": 420,
"width": 420
},
"text/plain": {
"height": 420,
"width": 420
}
},
"output_type": "display_data"
}
],
"source": [
"FamilyTreeRQ2Raw <- rbind(\n",
"# Load10Log(\"measurements/stats/FamilyTree//size010to-1r10n10rt300nsdrealstats_06-0249.csv\", 10),\n",
" Load10Log(\"measurements1/stats.csv\", 20)\n",
")\n",
"FamilyTreeRQ2Raw\n",
"FamilyTreeRQ2 <- FamilyTreeRQ2Raw %>% ProcessRQ2\n",
"FamilyTreeRQ2\n",
"median(FamilyTreeRQ2Raw$preprocessingTime) / 1000.0\n",
"FamilyTreeRQ2 %>% RQ2Plot('FamilyTree')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "R",
"language": "R",
"name": "ir"
},
"language_info": {
"codemirror_mode": "r",
"file_extension": ".r",
"mimetype": "text/x-r-source",
"name": "R",
"pygments_lexer": "r",
"version": "4.0.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
|