Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
ba
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
markn92
ba
Commits
b09f376c
Commit
b09f376c
authored
5 years ago
by
markn92
Browse files
Options
Downloads
Patches
Plain Diff
bla
parent
c58b0012
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
evaluation/Query Cycles.ipynb
+340
-0
340 additions, 0 deletions
evaluation/Query Cycles.ipynb
evaluation/results/saved/2020-05-25T18:07:55.704835/query_cycles/charge.csv
+31
-0
31 additions, 0 deletions
.../saved/2020-05-25T18:07:55.704835/query_cycles/charge.csv
with
371 additions
and
0 deletions
evaluation/Query Cycles.ipynb
0 → 100644
+
340
−
0
View file @
b09f376c
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from pathlib import Path\n",
"from collections import defaultdict\n",
"\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib import rc\n",
"plt.rc('text', usetex=True)\n",
"plt.rc('font', family='serif', size=14)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Random Query Data"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"query_tag = 'saved/2020-05-25T18:07:55.704835'\n",
"query_conf_name ='query_cycles'\n",
"algorithms = ['charge']"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def get_query_data(tag, conf_name, algorithms):\n",
" # Paths to Benchmark Results\n",
" result_dir = Path('./results').joinpath(tag, conf_name)\n",
" \n",
" data = {}\n",
" for alg in algorithms:\n",
" path = result_dir.joinpath(f'{alg}.csv')\n",
" data[alg] = pd.read_csv(path,dtype={'start_node': str, 'target_node': str})\n",
"\n",
" return data\n",
"query_data = get_query_data(query_tag, query_conf_name, algorithms)['charge']"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>start_node</th>\n",
" <th>target_node</th>\n",
" <th>query_time</th>\n",
" <th>trip_time</th>\n",
" <th>nodes</th>\n",
" <th>edges</th>\n",
" <th>charging_stations</th>\n",
" <th>charging_stops</th>\n",
" <th>charging_time</th>\n",
" <th>dominance_checks</th>\n",
" <th>tweak_on</th>\n",
" <th>tweak_depth</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1818192324</td>\n",
" <td>563891042</td>\n",
" <td>4.347978</td>\n",
" <td>1516.057241</td>\n",
" <td>53509</td>\n",
" <td>117187</td>\n",
" <td>40</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>134752</td>\n",
" <td>on</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>866359483</td>\n",
" <td>954303979</td>\n",
" <td>0.097798</td>\n",
" <td>111.054868</td>\n",
" <td>53509</td>\n",
" <td>117187</td>\n",
" <td>40</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>90</td>\n",
" <td>on</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>672963211</td>\n",
" <td>6535929547</td>\n",
" <td>22.595656</td>\n",
" <td>1706.709976</td>\n",
" <td>53509</td>\n",
" <td>117187</td>\n",
" <td>40</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>612399</td>\n",
" <td>on</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>322879733</td>\n",
" <td>3143348032</td>\n",
" <td>209.955545</td>\n",
" <td>6027.668864</td>\n",
" <td>53509</td>\n",
" <td>117187</td>\n",
" <td>40</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>5732090</td>\n",
" <td>on</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>6254090150</td>\n",
" <td>267734888</td>\n",
" <td>6.295368</td>\n",
" <td>664.992671</td>\n",
" <td>53509</td>\n",
" <td>117187</td>\n",
" <td>40</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>171115</td>\n",
" <td>on</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" start_node target_node query_time trip_time nodes edges \\\n",
"0 1818192324 563891042 4.347978 1516.057241 53509 117187 \n",
"1 866359483 954303979 0.097798 111.054868 53509 117187 \n",
"2 672963211 6535929547 22.595656 1706.709976 53509 117187 \n",
"3 322879733 3143348032 209.955545 6027.668864 53509 117187 \n",
"4 6254090150 267734888 6.295368 664.992671 53509 117187 \n",
"\n",
" charging_stations charging_stops charging_time dominance_checks \\\n",
"0 40 0 0 134752 \n",
"1 40 0 0 90 \n",
"2 40 0 0 612399 \n",
"3 40 0 0 5732090 \n",
"4 40 0 0 171115 \n",
"\n",
" tweak_on tweak_depth \n",
"0 on 0 \n",
"1 on 0 \n",
"2 on 0 \n",
"3 on 0 \n",
"4 on 0 "
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"query_data.head()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def plot_query_cycle_alt(query_data): \n",
" def rel_diff(x):\n",
" return (x[0] - x[1]) / x[0]\n",
" \n",
"\n",
" query_data = query_data.sort_values(by=['start_node', 'target_node', 'tweak_depth'])\n",
" query_data['diff_checks'] = query_data['dominance_checks'].rolling(window=2).apply(rel_diff, raw=True)\n",
" query_data['diff_time'] = query_data['query_time'].rolling(window=2).apply(rel_diff, raw=True)\n",
" \n",
" fig, ax = plt.subplots(figsize=(4.5,4))\n",
" y = query_data.groupby('tweak_depth').mean()\n",
" std = query_data.groupby('tweak_depth').std()\n",
" ax.errorbar(x=y.index[1:] + 1, \n",
" y=y['diff_checks'].iloc[1:],\n",
" yerr=std['diff_checks'].iloc[1:],\n",
" marker='o', \n",
" capsize=4\n",
" )\n",
" print(y['diff_checks'].iloc[1:])\n",
" print(std['diff_checks'].iloc[1:])\n",
" ax.set_xticks(y.index[1:] + 1)\n",
" ax.set_yscale('log')\n",
" ax.set_xlabel('Maximallänge der ausgschlossenen Kreise')\n",
" ax.set_ylabel('$\\Delta$ Labelvergleiche')\n",
" fig.tight_layout()\n",
" fig.savefig('img/kreise.pdf', bbox='tight')\n",
" \n",
" fig, ax = plt.subplots(figsize=(4.5,4))\n",
" ax.errorbar(x=y.index[1:] + 1, \n",
" y=y['diff_time'].iloc[1:] * 100,\n",
" yerr=std['diff_time'].iloc[1:] * 100,\n",
" marker='o', \n",
" capsize=4\n",
" )\n",
" ax.set_xticks(y.index[1:] + 1)\n",
" #ax.set_yscale('log')\n",
" ax.set_xlabel('Maximallänge der ausgschlossenen Kreise')\n",
" ax.set_ylabel('$\\Delta$ Laufzeit in \\%')\n",
" fig.tight_layout()\n",
" fig.savefig('img/kreise_zeit.pdf', bbox='tight')\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tweak_depth\n",
"1 0.514315\n",
"2 0.002519\n",
"3 0.001752\n",
"4 0.001282\n",
"5 0.000426\n",
"Name: diff_checks, dtype: float64\n",
"tweak_depth\n",
"1 0.146701\n",
"2 0.001500\n",
"3 0.001046\n",
"4 0.000972\n",
"5 0.000287\n",
"Name: diff_checks, dtype: float64\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 324x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 324x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_query_cycle_alt(query_data)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
%% Cell type:code id: tags:
```
python
from
pathlib
import
Path
from
collections
import
defaultdict
import
pandas
as
pd
import
numpy
as
np
import
matplotlib.pyplot
as
plt
from
matplotlib
import
rc
plt
.
rc
(
'
text
'
,
usetex
=
True
)
plt
.
rc
(
'
font
'
,
family
=
'
serif
'
,
size
=
14
)
```
%% Cell type:markdown id: tags:
# Random Query Data
%% Cell type:code id: tags:
```
python
query_tag
=
'
saved/2020-05-25T18:07:55.704835
'
query_conf_name
=
'
query_cycles
'
algorithms
=
[
'
charge
'
]
```
%% Cell type:code id: tags:
```
python
def
get_query_data
(
tag
,
conf_name
,
algorithms
):
# Paths to Benchmark Results
result_dir
=
Path
(
'
./results
'
).
joinpath
(
tag
,
conf_name
)
data
=
{}
for
alg
in
algorithms
:
path
=
result_dir
.
joinpath
(
f
'
{
alg
}
.csv
'
)
data
[
alg
]
=
pd
.
read_csv
(
path
,
dtype
=
{
'
start_node
'
:
str
,
'
target_node
'
:
str
})
return
data
query_data
=
get_query_data
(
query_tag
,
query_conf_name
,
algorithms
)[
'
charge
'
]
```
%% Cell type:code id: tags:
```
python
query_data
.
head
()
```
%% Output
start_node target_node query_time trip_time nodes edges \
0 1818192324 563891042 4.347978 1516.057241 53509 117187
1 866359483 954303979 0.097798 111.054868 53509 117187
2 672963211 6535929547 22.595656 1706.709976 53509 117187
3 322879733 3143348032 209.955545 6027.668864 53509 117187
4 6254090150 267734888 6.295368 664.992671 53509 117187
charging_stations charging_stops charging_time dominance_checks \
0 40 0 0 134752
1 40 0 0 90
2 40 0 0 612399
3 40 0 0 5732090
4 40 0 0 171115
tweak_on tweak_depth
0 on 0
1 on 0
2 on 0
3 on 0
4 on 0
%% Cell type:code id: tags:
```
python
def
plot_query_cycle_alt
(
query_data
):
def
rel_diff
(
x
):
return
(
x
[
0
]
-
x
[
1
])
/
x
[
0
]
query_data
=
query_data
.
sort_values
(
by
=
[
'
start_node
'
,
'
target_node
'
,
'
tweak_depth
'
])
query_data
[
'
diff_checks
'
]
=
query_data
[
'
dominance_checks
'
].
rolling
(
window
=
2
).
apply
(
rel_diff
,
raw
=
True
)
query_data
[
'
diff_time
'
]
=
query_data
[
'
query_time
'
].
rolling
(
window
=
2
).
apply
(
rel_diff
,
raw
=
True
)
fig
,
ax
=
plt
.
subplots
(
figsize
=
(
4.5
,
4
))
y
=
query_data
.
groupby
(
'
tweak_depth
'
).
mean
()
std
=
query_data
.
groupby
(
'
tweak_depth
'
).
std
()
ax
.
errorbar
(
x
=
y
.
index
[
1
:]
+
1
,
y
=
y
[
'
diff_checks
'
].
iloc
[
1
:],
yerr
=
std
[
'
diff_checks
'
].
iloc
[
1
:],
marker
=
'
o
'
,
capsize
=
4
)
print
(
y
[
'
diff_checks
'
].
iloc
[
1
:])
print
(
std
[
'
diff_checks
'
].
iloc
[
1
:])
ax
.
set_xticks
(
y
.
index
[
1
:]
+
1
)
ax
.
set_yscale
(
'
log
'
)
ax
.
set_xlabel
(
'
Maximallänge der ausgschlossenen Kreise
'
)
ax
.
set_ylabel
(
'
$\Delta$ Labelvergleiche
'
)
fig
.
tight_layout
()
fig
.
savefig
(
'
img/kreise.pdf
'
,
bbox
=
'
tight
'
)
fig
,
ax
=
plt
.
subplots
(
figsize
=
(
4.5
,
4
))
ax
.
errorbar
(
x
=
y
.
index
[
1
:]
+
1
,
y
=
y
[
'
diff_time
'
].
iloc
[
1
:]
*
100
,
yerr
=
std
[
'
diff_time
'
].
iloc
[
1
:]
*
100
,
marker
=
'
o
'
,
capsize
=
4
)
ax
.
set_xticks
(
y
.
index
[
1
:]
+
1
)
#ax.set_yscale('log')
ax
.
set_xlabel
(
'
Maximallänge der ausgschlossenen Kreise
'
)
ax
.
set_ylabel
(
'
$\Delta$ Laufzeit in \%
'
)
fig
.
tight_layout
()
fig
.
savefig
(
'
img/kreise_zeit.pdf
'
,
bbox
=
'
tight
'
)
```
%% Cell type:code id: tags:
```
python
plot_query_cycle_alt
(
query_data
)
```
%% Output
tweak_depth
1 0.514315
2 0.002519
3 0.001752
4 0.001282
5 0.000426
Name: diff_checks, dtype: float64
tweak_depth
1 0.146701
2 0.001500
3 0.001046
4 0.000972
5 0.000287
Name: diff_checks, dtype: float64
%% Cell type:code id: tags:
```
python
```
This diff is collapsed.
Click to expand it.
evaluation/results/saved/2020-05-25T18:07:55.704835/query_cycles/charge.csv
0 → 100644
+
31
−
0
View file @
b09f376c
start_node,target_node,query_time,trip_time,nodes,edges,charging_stations,charging_stops,charging_time,dominance_checks,tweak_on,tweak_depth
1818192324,563891042,4.34797792500467,1516.0572408010794,53509,117187,40,0,0,134752,on,0
866359483,954303979,0.09779810399777489,111.0548675416733,53509,117187,40,0,0,90,on,0
672963211,6535929547,22.595656324003357,1706.7099762165788,53509,117187,40,0,0,612399,on,0
322879733,3143348032,209.9555447330058,6027.668864131489,53509,117187,40,0,0,5732090,on,0
6254090150,267734888,6.295368361999863,664.9926708182333,53509,117187,40,0,0,171115,on,0
1818192324,563891042,2.827268250002817,1516.0572408010794,53509,117187,40,0,0,76536,on,1
866359483,954303979,0.09801150499697542,111.0548675416733,53509,117187,40,0,0,21,on,1
672963211,6535929547,11.750118348005344,1706.7099762165788,53509,117187,40,0,0,352970,on,1
322879733,3143348032,125.3608258480017,6027.668864131489,53509,117187,40,0,0,3275921,on,1
6254090150,267734888,3.7869395109955803,664.9926708182333,53509,117187,40,0,0,82005,on,1
1818192324,563891042,2.8512904809977044,1516.0572408010794,53509,117187,40,0,0,76242,on,2
866359483,954303979,0.09465720899606822,111.0548675416733,53509,117187,40,0,0,21,on,2
672963211,6535929547,12.317480808000255,1706.7099762165788,53509,117187,40,0,0,351765,on,2
322879733,3143348032,128.14251153200166,6027.668864131489,53509,117187,40,0,0,3266582,on,2
6254090150,267734888,3.7291627480008174,664.9926708182333,53509,117187,40,0,0,81801,on,2
1818192324,563891042,2.7880056200010586,1516.0572408010794,53509,117187,40,0,0,76097,on,3
866359483,954303979,0.09524358599446714,111.0548675416733,53509,117187,40,0,0,21,on,3
672963211,6535929547,11.664137986001151,1706.7099762165788,53509,117187,40,0,0,351081,on,3
322879733,3143348032,127.67275409599824,6027.668864131489,53509,117187,40,0,0,3259716,on,3
6254090150,267734888,3.870156176999444,664.9926708182333,53509,117187,40,0,0,81571,on,3
1818192324,563891042,2.9493768800020916,1516.0572408010794,53509,117187,40,0,0,76003,on,4
866359483,954303979,0.09723945899895625,111.0548675416733,53509,117187,40,0,0,21,on,4
672963211,6535929547,12.100756392996118,1706.7099762165788,53509,117187,40,0,0,350620,on,4
322879733,3143348032,127.23750017300335,6027.668864131489,53509,117187,40,0,0,3256044,on,4
6254090150,267734888,3.9760891659971094,664.9926708182333,53509,117187,40,0,0,81348,on,4
1818192324,563891042,3.0014626030024374,1516.0572408010794,53509,117187,40,0,0,75975,on,5
866359483,954303979,0.11375107200001366,111.0548675416733,53509,117187,40,0,0,21,on,5
672963211,6535929547,12.251272342000448,1706.7099762165788,53509,117187,40,0,0,350348,on,5
322879733,3143348032,126.36792082899774,6027.668864131489,53509,117187,40,0,0,3254715,on,5
6254090150,267734888,3.778053379006451,664.9926708182333,53509,117187,40,0,0,81301,on,5
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment