File convex_hull.py changed (mode: 100644) (index b5c83a1..640d7da) |
... |
... |
class Ghull: |
609 |
609 |
if self.hull.space == 'G': |
if self.hull.space == 'G': |
610 |
610 |
return self.hull.get_r() |
return self.hull.get_r() |
611 |
611 |
else: |
else: |
612 |
|
#č get_design_points() nemusí být. Ale zatím to neřeším |
|
613 |
|
hull_points = self.hull.get_design_points() |
|
614 |
|
sum_squared = np.sum(np.square(hull_points.G), axis=1) |
|
615 |
|
hull_r = np.sqrt(np.nanmin(sum_squared)) |
|
|
612 |
|
#č get_design_points() nemusí být. |
|
613 |
|
#č QHull může nemít dostatek teček |
|
614 |
|
try: |
|
615 |
|
hull_points = self.hull.get_design_points() |
|
616 |
|
sum_squared = np.sum(np.square(hull_points.G), axis=1) |
|
617 |
|
hull_r = np.sqrt(np.nanmin(sum_squared)) |
|
618 |
|
except BaseException as e: |
|
619 |
|
msg = "cannot get hull points from the convex hull" |
|
620 |
|
print(self.__class__.__name__ +":", msg, repr(e)) |
|
621 |
|
hull_r = np.inf |
|
622 |
|
|
616 |
623 |
|
|
617 |
624 |
# ask our experimentation team |
# ask our experimentation team |
618 |
625 |
gint_r = self.gint.get_r() |
gint_r = self.gint.get_r() |
|
... |
... |
class Shell_MC: |
708 |
715 |
#č vrací odhad r na základě předchozích integrací |
#č vrací odhad r na základě předchozích integrací |
709 |
716 |
#č metoda je navržena tak, aby Shell_IS jú mohl zdědit. |
#č metoda je navržena tak, aby Shell_IS jú mohl zdědit. |
710 |
717 |
def get_r(self): |
def get_r(self): |
711 |
|
#č bojim sa, rerukce bude aplikována dycky |
|
712 |
|
#č Bacha, metoda bude vracet nuly pro obálky v Gaussovskem prostoru! |
|
713 |
|
return self.r * self.non_Gaussian_reduction |
|
|
718 |
|
#č bojim sa, rerukce bude aplikována dycky |
|
719 |
|
#č Bacha, metoda bude vracet nuly pro obálky v Gaussovskem prostoru! |
|
720 |
|
return self.r * self.non_Gaussian_reduction |
714 |
721 |
|
|
715 |
722 |
# stateless |
# stateless |
716 |
723 |
def rvs(self, nsampled, seats, ns): |
def rvs(self, nsampled, seats, ns): |
File dicebox.py changed (mode: 100644) (index fb33661..25bb15e) |
... |
... |
class Razitko(Erjee): |
1160 |
1160 |
#č Je třeba dávát bacha na odlišnosti v (staré) Triangulation třídě a nové Ghull třídě. |
#č Je třeba dávát bacha na odlišnosti v (staré) Triangulation třídě a nové Ghull třídě. |
1161 |
1161 |
#č Zatímco Triangulation drží starý stáv, dokud .update() není spustěn, |
#č Zatímco Triangulation drží starý stáv, dokud .update() není spustěn, |
1162 |
1162 |
#č Ghull, ale hlavně, odpovídající modely konvexních obálek jíž žádný .update() nemájí, |
#č Ghull, ale hlavně, odpovídající modely konvexních obálek jíž žádný .update() nemájí, |
1163 |
|
#č nové tečky uvidí sami dřív než se naší skříňka probere. |
|
|
1163 |
|
#č nové tečky uvidí sami dřív než se naše skříňka probere. |
1164 |
1164 |
#č Takže teď odhady nově budeme ukladať hned pri incrementu. |
#č Takže teď odhady nově budeme ukladať hned pri incrementu. |
1165 |
1165 |
#č Triangulation používá i jínej kód, samotné třídy beztak zbytečně komplikováné, |
#č Triangulation používá i jínej kód, samotné třídy beztak zbytečně komplikováné, |
1166 |
1166 |
#č nechci teď to toho lezt. |
#č nechci teď to toho lezt. |
|
... |
... |
class Goal(DiceBox): |
1405 |
1405 |
# bx.judge_candidates(bx.candidates) |
# bx.judge_candidates(bx.candidates) |
1406 |
1406 |
# bx.assess_candidates(bx.candidates) |
# bx.assess_candidates(bx.candidates) |
1407 |
1407 |
|
|
1408 |
|
|
|
1409 |
1408 |
|
|
|
1409 |
|
def _ghull_outside_callback(bx, outside_nodes): |
|
1410 |
|
#č sice získáme filtrovaný outside, |
|
1411 |
|
#č musíme sami zabalit bodíky do CandyBoxu |
|
1412 |
|
# -2 = 'inside' -1 = 'outside' |
|
1413 |
|
event_ids = np.full(len(outside_nodes), -1, dtype=np.int8) |
|
1414 |
|
candidates = CandyBox(outside_nodes, event_id=event_ids) |
|
1415 |
|
bx.assess_candidates(candidates) |
|
1416 |
|
|
|
1417 |
|
bids = getattr(candidates, bx.potential) |
|
1418 |
|
#č nie třeba kontrolovat jevy, tam je pouze outside |
|
1419 |
|
#bids *= (candidates.event_id == -1) + (candidates.event_id == 2) |
|
1420 |
|
bid = np.nanmax(bids) |
|
1421 |
|
if bid > bx._highest_outside: |
|
1422 |
|
#č uložíme varku bodíku pouze když |
|
1423 |
|
#č majú větší potenciál, |
|
1424 |
|
bx._highest_outside = bid |
|
1425 |
|
#č čo tam připadně bylo - přepíšeme |
|
1426 |
|
#č uložíme s indexem dle ghull_estimation: |
|
1427 |
|
# -22: inner, -21: shell inside, -12: shell outside, -11: outer |
|
1428 |
|
bx.candidates_index[-12] = candidates |
|
1429 |
|
|
1410 |
1430 |
|
|
1411 |
1431 |
def estimate_outside(bx): |
def estimate_outside(bx): |
1412 |
1432 |
#č konečně mám pořádnou stejtful třídu |
#č konečně mám pořádnou stejtful třídu |
|
... |
... |
class Goal(DiceBox): |
1421 |
1441 |
#č b. fire, to co navrhne QHull (-1) |
#č b. fire, to co navrhne QHull (-1) |
1422 |
1442 |
#č c. boom, doporuření QHull můžou i zklamat (-11) |
#č c. boom, doporuření QHull můžou i zklamat (-11) |
1423 |
1443 |
|
|
|
1444 |
|
#č prace s tečkami v mezikruži se změnila |
|
1445 |
|
#č teď tečky dostávám přes kolbek po částech |
|
1446 |
|
#č a není předem známo, kolik těch částí bude. |
|
1447 |
|
#č Na začátku radší, pro jistotu, vyhodíme stare bodíky z mezikruži (-12) |
|
1448 |
|
bx.candidates_index.pop(-12, "Nejsou? Nevadí...") |
|
1449 |
|
bx._highest_outside = 0 |
|
1450 |
|
|
1424 |
1451 |
# get candidates! |
# get candidates! |
1425 |
1452 |
#č explicitně (pokažde) počtem teček zadavám přesnost integrace |
#č explicitně (pokažde) počtem teček zadavám přesnost integrace |
1426 |
1453 |
#č takže změny bx.shell_budget budou při dálším spuštění aplikovány |
#č takže změny bx.shell_budget budou při dálším spuštění aplikovány |
1427 |
|
data = bx.ghull.integrate(bx.shell_budget) |
|
1428 |
|
candidates, ghull_estimation, convex_hull_estimation, global_stats = data |
|
|
1454 |
|
data = bx.ghull.integrate(bx.shell_budget, \ |
|
1455 |
|
callback_outside=bx._ghull_outside_callback) |
|
1456 |
|
ghull_estimation, convex_hull_estimation, global_stats = data |
1429 |
1457 |
#č uložíme. Не жалко. |
#č uložíme. Не жалко. |
1430 |
1458 |
#č první úkol máme splněný |
#č první úkol máme splněný |
1431 |
1459 |
bx.ghull_estimation = ghull_estimation |
bx.ghull_estimation = ghull_estimation |
|
... |
... |
class Goal(DiceBox): |
1433 |
1461 |
bx.global_stats = global_stats |
bx.global_stats = global_stats |
1434 |
1462 |
bx._logger(msg="outside estimation:", ghull_stats=global_stats) |
bx._logger(msg="outside estimation:", ghull_stats=global_stats) |
1435 |
1463 |
|
|
1436 |
|
#č kendinody už májú atribut is_outside a mají nastavený event_id |
|
1437 |
|
# -2 = 'inside' -1 = 'outside' |
|
1438 |
|
candidates = candidates[candidates.is_outside] |
|
1439 |
|
|
|
1440 |
|
|
|
1441 |
|
#č vzorky je třeba přidát ke kandidatům |
|
1442 |
|
#č jako, nic nepokazí, ale čo tam připadně bylo - přepíše |
|
1443 |
|
#č uložíme s indexem dle ghull_estimation: |
|
1444 |
|
# -22: inner, -21: shell inside, -12: shell outside, -11: outer |
|
1445 |
|
bx.assess_candidates(candidates) # nic nevrácí, to je procedura |
|
1446 |
|
bx.candidates_index[-12] = candidates |
|
1447 |
1464 |
|
|
1448 |
1465 |
|
|
1449 |
1466 |
#č zde už nám jde pouze o kandidaty |
#č zde už nám jde pouze o kandidaty |