Skip to content
Snippets Groups Projects
Commit b8e6261c authored by Jiří Kalvoda's avatar Jiří Kalvoda
Browse files

prace: Máme 1 000 testů

parent a7dd05ef
Branches
No related tags found
No related merge requests found
...@@ -46,7 +46,7 @@ def intro_graph(algo): ...@@ -46,7 +46,7 @@ def intro_graph(algo):
fig.update_layout(showlegend=False) fig.update_layout(showlegend=False)
return fig return fig
def nonzero_coords(n, seeds, max_dim=20): def nonzero_coords(n, max_dim=20):
data_dir = d/"main_test/sdp/nonzero_coord" data_dir = d/"main_test/sdp/nonzero_coord"
nonzero_coords = [[float(i) for i in open(data_dir/f).read().split()] for f in os.listdir(data_dir) if f.startswith(f"{n}-")] nonzero_coords = [[float(i) for i in open(data_dir/f).read().split()] for f in os.listdir(data_dir) if f.startswith(f"{n}-")]
...@@ -68,7 +68,7 @@ def nonzero_coords(n, seeds, max_dim=20): ...@@ -68,7 +68,7 @@ def nonzero_coords(n, seeds, max_dim=20):
) )
return fig return fig
def max_coords(n, seeds, max_dim=20): def max_coords(n, max_dim=20):
data_dir = d/"main_test/sdp/max_coord" data_dir = d/"main_test/sdp/max_coord"
max_coords = [[float(i) for i in open(data_dir/f).read().split()] for f in os.listdir(data_dir) if f.startswith(f"{n}-")] max_coords = [[float(i) for i in open(data_dir/f).read().split()] for f in os.listdir(data_dir) if f.startswith(f"{n}-")]
......
...@@ -389,7 +389,7 @@ fig.add_vline(x=200*hypoth, ...@@ -389,7 +389,7 @@ fig.add_vline(x=200*hypoth,
annotation_text="hypotéza", annotation_position="top left", annotation_text="hypotéza", annotation_position="top left",
fillcolor="green") fillcolor="green")
``` ```
Graf skóre $100$ běhů hvězdičkového rekurzivního řešení pro $n=200$. Graf skóre $1\,000$ běhů hvězdičkového rekurzivního řešení pro $n=200$.
::: :::
Autoři algoritmu o něm vyslovili domněnku, že $\delta_{\algo{rsg}} = {1\over 13} \cdot \sqrt{61} - {3\over 13} \doteq 0.370$. Autoři algoritmu o něm vyslovili domněnku, že $\delta_{\algo{rsg}} = {1\over 13} \cdot \sqrt{61} - {3\over 13} \doteq 0.370$.
...@@ -842,7 +842,7 @@ Měření řešení BPS ...@@ -842,7 +842,7 @@ Měření řešení BPS
================= =================
Součástí práce je implementace algoritmů řešících Binární paint shop problém. Součástí práce je implementace algoritmů řešících Binární paint shop problém.
Každý z nich byl následně spuštěn pro různé velikosti, pokaždé na 100 nezávisle náhodně vybraných vstupech s počtem typů aut Každý z nich byl následně spuštěn pro různé velikosti, pokaždé na $1\,000$ nezávisle náhodně vybraných vstupech s počtem typů aut
10, 20, 50, 100, 200, 400, 566, 800, 1131, 1600, 2263 a 3200.[^2] 10, 20, 50, 100, 200, 400, 566, 800, 1131, 1600, 2263 a 3200.[^2]
Jedna z implementací $\algo{sdp}$ -- pomocí sage vyžaduje moc paměti a proto byla spuštěna jen na vstupech do velikosti $566$. Jedna z implementací $\algo{sdp}$ -- pomocí sage vyžaduje moc paměti a proto byla spuštěna jen na vstupech do velikosti $566$.
Celý test běžel jednovláknově zhruba dva dny a využíval nejvýše 16 GB operační paměti. Celý test běžel jednovláknově zhruba dva dny a využíval nejvýše 16 GB operační paměti.
...@@ -1043,7 +1043,7 @@ Vizualizace jednoho z řešení pro $n=50$, které se vejde do 3D. ...@@ -1043,7 +1043,7 @@ Vizualizace jednoho z řešení pro $n=50$, které se vejde do 3D.
::: {#max_coords_400 c=figure floatpage=400} ::: {#max_coords_400 c=figure floatpage=400}
```python {c=plotly} ```python {c=plotly}
from bakalarka import g from bakalarka import g
fig = g.max_coords(400, range(1, 101)) fig = g.max_coords(400)
``` ```
Maximální hodnota v dané dimenzi pro $n=400$. Maximální hodnota v dané dimenzi pro $n=400$.
::: :::
...@@ -1051,7 +1051,7 @@ Maximální hodnota v dané dimenzi pro $n=400$. ...@@ -1051,7 +1051,7 @@ Maximální hodnota v dané dimenzi pro $n=400$.
::: {#nonzero_coords_400 c=figure floatpage=400!} ::: {#nonzero_coords_400 c=figure floatpage=400!}
```python {c=plotly} ```python {c=plotly}
from bakalarka import g from bakalarka import g
fig = g.nonzero_coords(400, range(1, 101)) fig = g.nonzero_coords(400)
``` ```
Počet vektorů s danou souřadnicí větší než $0.05$ pro $n=400$. Počet vektorů s danou souřadnicí větší než $0.05$ pro $n=400$.
::: :::
...@@ -1060,7 +1060,7 @@ Počet vektorů s danou souřadnicí větší než $0.05$ pro $n=400$. ...@@ -1060,7 +1060,7 @@ Počet vektorů s danou souřadnicí větší než $0.05$ pro $n=400$.
::: {#max_coords_200 c=figure floatpage=200} ::: {#max_coords_200 c=figure floatpage=200}
```python {c=plotly} ```python {c=plotly}
from bakalarka import g from bakalarka import g
fig = g.max_coords(200, range(1, 101)) fig = g.max_coords(200)
``` ```
Maximální hodnota v dané dimenzi pro $n=200$. Maximální hodnota v dané dimenzi pro $n=200$.
::: :::
...@@ -1068,7 +1068,7 @@ Maximální hodnota v dané dimenzi pro $n=200$. ...@@ -1068,7 +1068,7 @@ Maximální hodnota v dané dimenzi pro $n=200$.
::: {#nonzero_coords_200 c=figure floatpage=200!} ::: {#nonzero_coords_200 c=figure floatpage=200!}
```python {c=plotly} ```python {c=plotly}
from bakalarka import g from bakalarka import g
fig = g.nonzero_coords(200, range(1, 101)) fig = g.nonzero_coords(200)
``` ```
Počet vektorů s danou souřadnicí větší než $0.05$ pro $n=200$. Počet vektorů s danou souřadnicí větší než $0.05$ pro $n=200$.
::: :::
...@@ -1076,7 +1076,7 @@ Počet vektorů s danou souřadnicí větší než $0.05$ pro $n=200$. ...@@ -1076,7 +1076,7 @@ Počet vektorů s danou souřadnicí větší než $0.05$ pro $n=200$.
::: {#max_coords_100 c=figure floatpage=100} ::: {#max_coords_100 c=figure floatpage=100}
```python {c=plotly} ```python {c=plotly}
from bakalarka import g from bakalarka import g
fig = g.max_coords(100, range(1001, 1101)) fig = g.max_coords(100)
``` ```
Maximální hodnota v dané dimenzi pro $n=100$. Maximální hodnota v dané dimenzi pro $n=100$.
::: :::
...@@ -1084,7 +1084,7 @@ Maximální hodnota v dané dimenzi pro $n=100$. ...@@ -1084,7 +1084,7 @@ Maximální hodnota v dané dimenzi pro $n=100$.
::: {#nonzero_coords_100 c=figure floatpage=100!} ::: {#nonzero_coords_100 c=figure floatpage=100!}
```python {c=plotly} ```python {c=plotly}
from bakalarka import g from bakalarka import g
fig = g.nonzero_coords(100, range(1001, 1101)) fig = g.nonzero_coords(100)
``` ```
Počet vektorů s danou souřadnicí větší než $0.05$ pro $n=100$. Počet vektorů s danou souřadnicí větší než $0.05$ pro $n=100$.
::: :::
...@@ -1092,7 +1092,7 @@ Počet vektorů s danou souřadnicí větší než $0.05$ pro $n=100$. ...@@ -1092,7 +1092,7 @@ Počet vektorů s danou souřadnicí větší než $0.05$ pro $n=100$.
::: {#max_coords_50 c=figure floatpage=50} ::: {#max_coords_50 c=figure floatpage=50}
```python {c=plotly} ```python {c=plotly}
from bakalarka import g from bakalarka import g
fig = g.max_coords(50, range(2001, 2101)) fig = g.max_coords(50)
``` ```
Maximální hodnota v dané dimenzi pro $n=50$. Maximální hodnota v dané dimenzi pro $n=50$.
::: :::
...@@ -1100,7 +1100,7 @@ Maximální hodnota v dané dimenzi pro $n=50$. ...@@ -1100,7 +1100,7 @@ Maximální hodnota v dané dimenzi pro $n=50$.
::: {#nonzero_coords_50 c=figure floatpage=50!} ::: {#nonzero_coords_50 c=figure floatpage=50!}
```python {c=plotly} ```python {c=plotly}
from bakalarka import g from bakalarka import g
fig = g.nonzero_coords(50, range(2001, 2101)) fig = g.nonzero_coords(50)
``` ```
Počet vektorů s danou souřadnicí větší než $0.05$ pro $n=50$. Počet vektorů s danou souřadnicí větší než $0.05$ pro $n=50$.
::: :::
...@@ -1232,19 +1232,19 @@ def gen_alg(pipeline_name, algo_name, name_suffix, floatpage, add_note=False): ...@@ -1232,19 +1232,19 @@ def gen_alg(pipeline_name, algo_name, name_suffix, floatpage, add_note=False):
pipeline = data.pipelines[pipeline_name] pipeline = data.pipelines[pipeline_name]
by_n = data_lib.group_by_n(pipeline) by_n = data_lib.group_by_n(pipeline)
rows = [] rows = []
percentils = [10,50,90] percentils = [5, 25, 50,75, 90]
print_errors = any(i.error or i.data.get("broken", False) for i in pipeline) print_errors = any(i.error or i.data.get("broken", False) for i in pipeline)
for n in sorted(by_n.keys()): for n in sorted(by_n.keys()):
d = by_n[n] d = by_n[n]
scores = [ i.score/n for i in d] scores = [ i.score/n for i in d]
scores.sort() scores.sort()
l = len(scores) l = len(scores)
assert l == 1000
avg = sum(scores) / l avg = sum(scores) / l
variance = sum((avg-i)**2 for i in scores)/(l-1) variance = sum((avg-i)**2 for i in scores)/(l-1)
errors = len([None for i in d if i.error or i.data.get("broken", False)]) errors = len([None for i in d if i.error or i.data.get("broken", False)])
rows.append(row( rows.append(row(
n, n,
l,
*([errors] if print_errors else []), *([errors] if print_errors else []),
avg, avg,
math.sqrt(variance), math.sqrt(variance),
...@@ -1253,7 +1253,6 @@ def gen_alg(pipeline_name, algo_name, name_suffix, floatpage, add_note=False): ...@@ -1253,7 +1253,6 @@ def gen_alg(pipeline_name, algo_name, name_suffix, floatpage, add_note=False):
table = pf.Table(pf.TableBody(*rows), head=pf.TableHead(row( table = pf.Table(pf.TableBody(*rows), head=pf.TableHead(row(
[pf.Math("n", format='InlineMath')], [pf.Math("n", format='InlineMath')],
"testů",
*(["chyb"] if print_errors else []), *(["chyb"] if print_errors else []),
[pf.Math("\\overline{\\delta_{\\algo{"+algo_name+"}}(n)}", format='InlineMath')], [pf.Math("\\overline{\\delta_{\\algo{"+algo_name+"}}(n)}", format='InlineMath')],
[pf.Math("\\sqrt{\widehat{\\delta_{\\algo{"+algo_name+"}}(n)^2}}", format='InlineMath')], [pf.Math("\\sqrt{\widehat{\\delta_{\\algo{"+algo_name+"}}(n)^2}}", format='InlineMath')],
...@@ -1319,7 +1318,7 @@ fig.update_layout( ...@@ -1319,7 +1318,7 @@ fig.update_layout(
) )
``` ```
Horní a dolní odhad na 100 náhodných instancí vygenerovaný sage $\algo{spd}$. Horní a dolní odhad na $1\,000$ náhodných instancí vygenerovaný sage $\algo{spd}$.
::: :::
Takto vygenerovaný dolní odhad nám bohužel nepřináší žádnou zajímavou informaci o chování na náhodném vstupu. Takto vygenerovaný dolní odhad nám bohužel nepřináší žádnou zajímavou informaci o chování na náhodném vstupu.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment