Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • master
1 result

Target

Select target project
  • jirikalvoda/binary-paint-shop-problem
1 result
Select Git revision
  • master
1 result
Show changes
Commits on Source (3)
#!/usr/bin/env sage
import sys
sys.argv[0] = sys.argv[0][:-3]
import lib
import numpy as np
lib.VERSION = int(2)
@lib.prog
def opt_int_prog(n, inp, args):
other = lib.gen_arr_other_car_of_type(n, inp)
sgn = [1 if other[i]>i else -1 for i in range(2*n)]
p = MixedIntegerLinearProgram(maximization=False, solver=args[0])
x = p.new_variable(integer=True, nonnegative=True)
car_x = [ x[inp[i]] if sgn[i]==1 else 1-x[inp[i]] for i in range(2*n)]
changes = p.new_variable(integer=True, nonnegative=True)
for i in range(2*n-1):
p.add_constraint(changes[i] >= car_x[i] - car_x[i+1])
p.add_constraint(changes[i] >= car_x[i+1] - car_x[i])
p.set_objective(sum(changes[i] for i in range(2*n-1)))
p.solve()
xv = p.get_values(x)
return [ int(xv[inp[i]] if sgn[i]==1 else 1-xv[inp[i]]) for i in range(2*n)]
......@@ -140,3 +140,9 @@ def refs(element, content, processor):
copy(div1, *x),
texb("}"),
]
@formatitko_command
def directtex(element, content, processor):
(code_line,) = element.content
assert isinstance(code_line, pf.Code)
return [texi(code_line.text)]
......@@ -9,7 +9,7 @@ import sys, os
d = pathlib.Path("/".join(__file__.split("/")[:-1]))
def load(name):
return data_lib.Data(d/name, validate_versions=False, remove_duplications=True)
return data_lib.Data(name, validate_versions=False, remove_duplications=True)
def load_main_test():
return load(d/"main_test/log")
......
......@@ -711,7 +711,7 @@ vynutíme $\vec{y_i} = -\vec{y_j}$. Na to nám stačí jediná podmínka -- ří
Účelovou funkcí pak řekneme, že sousední auta mají preferovat stejnou barvu, tedy jejich body na sféře mají být blízko sebe, což znamená, že skalární součin má být co největší.
:::{c=box t=algo name="Řešení pomocí semidefinitního programování" notation="sdp"}
\hfil{\penalty-10000}\relax Vyřešíme následující semidefinitní program v dekomponovaném tvaru:
[`\hfil{\penalty-10000}\relax{}`]{c=directtex}Vyřešíme následující semidefinitní program v dekomponovaném tvaru:
$$\progline{maximalizuj}{\sum_{0\le i<2n-1} \vec{y_i}^{\rm T} \vec{y_{i+1}}}{}$$
$$\progline{za podmínek}{\vec{y_{a_{i,0}}} = -\vec{y_{a_{i,1}}}}{0\le i < n}$$
$$\progline{}{|y_i| = 1}{0\le i < 2n}$$
......@@ -1257,7 +1257,7 @@ def gen_alg(pipeline_name, algo_name, name_suffix, floatpage, add_note=False):
*(["chyb"] if print_errors else []),
[pf.Math("\\overline{\\delta_{\\algo{"+algo_name+"}}(n)}", format='InlineMath')],
[pf.Math("S_{\\delta_{\\algo{"+algo_name+"}}}(n)", format='InlineMath')],
*([pf.Math(f"{i} \%", format='InlineMath')] for i in percentils)
*([pf.Math(f"{i} \\%", format='InlineMath')] for i in percentils)
)))
note = element.content if add_note else []
return processor.transform([pf.Figure(table, *note, caption=pf.Caption(pf.Plain(*parse_string("Statistika algoritmu "), pf.Math(f"\\algo{{{algo_name}}}", format="InlineMath"), *name_suffix, *parse_string("."))), attributes=dict(floatpage=floatpage, tocmac="", type="table", type_text="Tabulka"))])
......
Subproject commit 9ede4be4aafe80561f4b76610423372d8114de42
Subproject commit 6f91c88b542310b49d77414b70a61adb8c62d340