iam-git / WellMet (public) (License: MIT) (since 2021-08-31) (hash sha1)
WellMet is pure Python framework for spatial structural reliability analysis. Or, more specifically, for "failure probability estimation and detection of failure surfaces by adaptive sequential decomposition of the design domain".
List of commits:
Subject Hash Author Date (UTC)
dicebox: new brand box named Goal is ready 725c2561b62769af6034c690005d1d22e6af41c7 I am 2021-06-05 13:40:15
convex_hull: last node fix in fire() function ca938c11398dfb2e16441b989902dab1558336b3 I am 2021-06-05 13:25:55
convex_hull: small fix for QHull under single simplex integration b0b236cd14ae614ecd1310b8c7cfcafe8d1b0851 I am 2021-05-30 05:57:45
convex_hull: ensure Ghull to always have some nodes for expansion 7110d521d9fece58639a359c83773df904b1177f I am 2021-05-29 07:03:49
dicebox: throw away plot dependency, simplify increment function 1cf0c481b8df1937ff7eda6e0373d5d6a72387db I am 2021-05-28 16:42:19
simplex: add JustCubatureTriangulation class separated from Shull ea291f9deee9f3b5b8615ae1f14a49aecd327461 I am 2021-05-28 16:39:58
mart: add convex_hull routines 90105552e7aecf3df8e84a1f5c4bdc1b04be249b I am 2021-04-25 20:11:34
convex_hull.Ghull: try to outthink OS's memory management 116444dc08cc0261e149de02f21f14f74dc8816b I am 2021-04-25 08:02:25
convex_hull.Ghull: in case of memory error divide ns by 3 0f629139f7926107b0b4eeb55452e745a2c23487 I am 2021-04-25 06:50:02
convex_hull: memory failsafe integration 7624e4b81526d3944f1a5ac74d298dee792c3085 I am 2021-04-24 08:06:27
simplex: delete ghull-related stuff (moved to convex_hull module already) f514adf959a9a2a9b7806b3cde81f78faf04539d I am 2021-04-19 17:04:54
convex_hull.QHull: change enough_points into property ae4f9b4d70bb43556874bc6d698cb1cc09ad9430 I am 2021-04-19 17:02:35
qt_plot: add support for "just nodes" da0e307ab0a21e565031789260a9160c5ff1b011 I am 2021-04-19 07:33:12
sball.Shell.rvs(): inverse linspace (wouldn't produce NaNs) 58452888a47230ab30c56bc33f5e3c780e60c752 I am 2021-04-18 03:26:21
convex_hull: move QHull from simplex module e5c67ce54fa4c9f3ce15714ebeff7d363d918494 I am 2021-04-17 19:04:00
schemes: comment out dups 8d22480a42926c3a78e62a07be4418e1f8ba350f I am 2021-04-16 23:35:53
convex_hull: split DirectHull into simplified DirectHull itself and CompleteHull b109bbdc325a2a88bf22e9893fa162690bf190f9 I am 2021-04-16 23:26:03
rework convex hull 60185dce0403ba941e849a60b5e43da6ce1fffd4 I am 2021-04-12 17:09:25
sball: add .get_random_directions() function d41131f28937e40eb853a30047de3cfc43cf5fa8 I am 2021-03-24 03:24:41
mplot: plot2D swithed to matplotlib 366326fb53bcbc54d7e6fb108b9dc256833bf679 I am 2021-03-18 01:44:07
Commit 725c2561b62769af6034c690005d1d22e6af41c7 - dicebox: new brand box named Goal is ready
Author: I am
Author date (UTC): 2021-06-05 13:40
Committer name: I am
Committer date (UTC): 2021-06-05 13:40
Parent(s): ca938c11398dfb2e16441b989902dab1558336b3
Signer:
Signing key:
Signing status: N
Tree: d21f525b91f6fd54c6ec2c2e01f489de290724eb
File Lines added Lines deleted
dicebox.py 468 6
simplex.py 1 1
File dicebox.py changed (mode: 100644) (index 5251d4b..df2473f)
... ... from scipy import optimize # for BlackSimpleX
21 21
22 22 from .samplebox import SampleBox # for candidates packing from .samplebox import SampleBox # for candidates packing
23 23 from . import simplex as sx from . import simplex as sx
24 from . import convex_hull as khull
24 25 from . import lukiskon as lk from . import lukiskon as lk
25 26
26 27 from . import estimation as stm # for KechatoLukiskon from . import estimation as stm # for KechatoLukiskon
 
... ... class GuessBox:
98 99
99 100 #оӵ дӥсё #оӵ дӥсё
100 101 class DiceBox: class DiceBox:
102 #č kruci, totálně v tohlenstom ztracím
101 103 """ """
102 DiceBox pěčlivě ukladá věškerá data,
103 věškeré sady vzorků (well, no yet), průběžné odhady a tak.
104 Nejsem už jistý, zda DiceBox je šťastný nazev, neboť
105 teďkom je to spíše jen krabička pro krámy
104 DiceBox
105 Public methods:
106 __init__():
107 regen():
108 _LHS_regen()
109
110 add_sample():
111 increment():
112 _LHS_increment()
113
114 __call__():
115 LHS_like_correction()
116
117 Public attributes:
118 estimations
119 guessbox
106 120 """ """
107 121 def __init__(bx, sample_box): def __init__(bx, sample_box):
108 122 bx.sample_box = sample_box bx.sample_box = sample_box
 
... ... class DiceBox:
237 251
238 252
239 253 # MinEnergyCensoredSampling # MinEnergyCensoredSampling
254 #č Pokud nepletu, hlavní pointa třídy byla v použití konvexní obálky
255 #č místo triangulaci pro zjíštění inside-outside.
256 #č Tohle brutálně všechno zrychlilo, proto se třída dostala název Chrt.
240 257 class Chrt(DiceBox): class Chrt(DiceBox):
258 """
259 Chrt
260 methods:
261 *__init__():
262 DiceBox.__init__():
263 *regen():
264 >_LHS_regen()
265 _regen_outside():
266 estimate_outside():
267 assess_candidates:
268 _nominate
269 _regen_inside():
270 get_events
271 estimate_simplex(simplex)
272 _former_candidates_recovering
273 assess_candidates
274
275 >add_sample():
276 *increment():
277 _LHS_increment()
278 export_estimation()
279 _handle_changed_triangulation(input_sample):
280 get_events()
281 estimate_simplex(simplex):
282 _former_candidates_recovering
283 assess_candidates
284 _invalidate_simplex(simplex)
285
286 _handle_changed_outside(input_sample)
287 estimate_outside():
288 assess_candidates:
289 _nominate
290
291 _handle_candidates()
292 _judge_unjudged
293 assess_candidates:
294 _nominate
295 assess_candidates:
296 _nominate
297
298 *regen()
299
300 *__call__():
301 >LHS_like_correction()
302
303 get_pf_estimation()
304
305 export_estimation():
306 get_pf_estimation()
307 """
241 308 #č už mě to dědění nebaví #č už mě to dědění nebaví
242 309 #ё без поллитры было не разобраться, что этот слоёный пирог делал #ё без поллитры было не разобраться, что этот слоёный пирог делал
243 310 def __init__(bx, sample_object, tri_space='Rn', tree_space=None,\ def __init__(bx, sample_object, tri_space='Rn', tree_space=None,\
 
... ... class Chrt(DiceBox):
575 642
576 643 if bx.nsim < 1: # je to legální if bx.nsim < 1: # je to legální
577 644 bx._logger(msg="median first!") bx._logger(msg="median first!")
578 return bx.LHS_like_correction(bx.f_model(1))
645 node = bx.LHS_like_correction(bx.f_model(1))
646 return CandyBox(node, event_id=np.full(1, -1, dtype=np.int8))
579 647 else: else:
580 648 selected = bx.bidder selected = bx.bidder
581 649 if bx.LHS_correction: if bx.LHS_correction:
 
... ... class Chrt(DiceBox):
864 932
865 933 #оӵ ӧрӟи #оӵ ӧрӟи
866 934 #č RJ #č RJ
935 #č Třída nevytvaří triangulaci, dokud nejsou tečky oboje druhů.
936 #č Jakoby letí nad zemi jako orel (ӧрӟи), nebo jako vlaky RJ jede bez zastavek.
867 937 class Erjee(Chrt): class Erjee(Chrt):
868 938 def _regen_inside(bx): def _regen_inside(bx):
869 939 failsi = bx.failsi failsi = bx.failsi
 
... ... class Erjee(Chrt):
918 988
919 989
920 990
921 # MinEnergyCensoredSampling
991 # use cubature formulas for simplex integration
922 992 class Razitko(Erjee): class Razitko(Erjee):
923 993 #č už mě to dědění nebaví #č už mě to dědění nebaví
924 994 #ё без поллитры было не разобраться, что этот слоёный пирог делал #ё без поллитры было не разобраться, что этот слоёный пирог делал
 
... ... class Razitko(Erjee):
1083 1153
1084 1154
1085 1155
1156 #č Teď je třeba vytvoriť novou skříňku, která by místo Shull použivala Ghull.
1157 #č Samozřejmě, že už ani já, ani čert nemůžeme se v tom vyznat
1158 #č Takže radší zdědíme pouze bázový DiceBox
1086 1159
1160 #č Je třeba dávát bacha na odlišnosti v (staré) Triangulation třídě a nové Ghull třídě.
1161 #č Zatímco Triangulation drží starý stáv, dokud .update() není spustěn,
1162 #č 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.
1164 #č Takže teď odhady nově budeme ukladať hned pri incrementu.
1165 #č Triangulation používá i jínej kód, samotné třídy beztak zbytečně komplikováné,
1166 #č nechci teď to toho lezt.
1167 class Goal(DiceBox):
1168 """
1169 Goal
1170 methods:
1171 *__init__():
1172 DiceBox.__init__():
1173 Chrt.regen():
1174 DiceBox._LHS_regen()
1175 _regen_outside():
1176 estimate_outside():
1177 Chrt.assess_candidates:
1178 Chrt._nominate
1179 _regen_inside():
1180 __regen_inside:
1181 **Triangulation magic**:
1182 Razitko._on_add_simplex:
1183 Chrt.assess_candidates:
1184 Chrt._nominate
1185
1186 >add_sample():
1187 *increment():
1188 >_LHS_increment()
1189 export_estimation()
1190 _handle_changed_triangulation(input_sample):
1191 get_events()
1192 estimate_simplex(simplex):
1193 assess_candidates
1194 _invalidate_simplex(simplex)
1195
1196 _handle_changed_outside(input_sample)
1197 estimate_outside():
1198 assess_candidates:
1199 _nominate
1200
1201 _handle_candidates()
1202 assess_candidates:
1203 _nominate
1204
1205 *regen()
1206
1207 Chrt.__call__():
1208 >LHS_like_correction()
1209
1210 get_pf_estimation()
1211
1212 export_estimation():
1213 get_pf_estimation()
1214 """
1215
1216 #č praca s kandidatama moc sa nezměnila
1217 #č funkce assess_candidates přířadí potenciál bodíkům
1218 #č a zaroveň je nominuje na soutež.
1219 #č na vstupu assess_candidates musí být CandyBox
1220 #č s jíž nastaveným event_id
1221 assess_candidates = Chrt.assess_candidates
1222 _nominate = Chrt._nominate
1223
1224 #č explicitně převezmu některé funkce
1225 #č ať v budoucnu nelamame hlavu, co jestě potřebujeme, co už nikoliv
1226 __repr__ = Chrt.__repr__
1227 __str__ = Chrt.__str__
1228 __call__ = Chrt.__call__
1229 regen = Chrt.regen
1230
1231 _on_add_simplex = Razitko._on_add_simplex
1232 _invalidate_simplex = Razitko._invalidate_simplex
1233
1234
1235 #č míží nám sampling_space: Ghull umí vzorkovat outside pouze v G prostoru
1236 #č quadpy umístí integráční bodíky v prostoru triangulace.
1237 def __init__(bx, sample_object, scheme, tri_space='G', tree_space=None,\
1238 kechato_space='U', potencial='psee',\
1239 p_norm=2, shell_budget=1000, outer_budget=100,\
1240 LHS_correction=False):
1241
1242 bx.scheme = scheme
1243 bx.tri_space = tri_space
1244 if tree_space is None:
1245 bx.tree_space = tri_space
1246 else:
1247 bx.tree_space = tree_space
1248
1249
1250 bx.kechato_space = kechato_space
1251 bx.shell_budget = shell_budget
1252 bx.outer_budget = outer_budget
1253 bx.p_norm = p_norm
1254 bx.potencial = potencial
1255 bx.LHS_correction = LHS_correction
1256
1257 DiceBox.__init__(bx, sample_object)
1258
1259
1260 def init_parameters(bx):
1261 """
1262 Returns dictionary of parameters the DiceBox was initialized with
1263 """
1264 return {'sample_object':bx.sample_box, 'scheme':bx.scheme.name,\
1265 'tri_space':bx.tri_space, 'tree_space':bx.tree_space,\
1266 'kechato_space':bx.kechato_space, 'potencial':bx.potencial,\
1267 'p_norm':bx.p_norm, 'shell_budget':bx.shell_budget,\
1268 'outer_budget':bx.outer_budget, 'LHS_correction':bx.LHS_correction}
1269
1087 1270
1271
1272 def _regen_outside(bx):
1273 bx.convex_hull = khull.QHull(bx.f_model, space=bx.tri_space) # for gl_plot
1274 bx.ghull = khull.Ghull(bx.convex_hull)
1275 bx._R = -1 # update outer under R>_R condition
1276 bx._afacet = None
1277 bx._bfacet = np.inf
1278 #č konečně mám pořádnou stejtful třídu
1279 #č pokud mám aspoň jednu tečku, tak už je mi šuma
1280 #č zda se konvexní obálka vytvořila, či nikoliv
1281 if bx.nsim > 0:
1282 bx.estimate_outside()
1283
1284
1285 def _regen_inside(bx):
1286 failsi = bx.failsi
1287 if np.any(failsi) and not np.all(failsi):
1288 #bx._logger(msg="triangulation started")
1289 bx.__regen_inside()
1290 else:
1291 #č jíž není nutný
1292 bx._logger(msg="triangulation skipped")
1293
1294 def __regen_inside(bx):
1295 # create .tri triangulation
1296 if bx.nsim > bx.nvar + 1: # incremental triangulation require one more point
1297 try:
1298 # I'll use tri_space as a weigthing space
1299 # It could be separeted, but I am a little bit tired
1300 # from so much different spaces over there
1301 bx.Tri = sx.JustCubatureTriangulation(bx.samplebox, bx.scheme,\
1302 tri_space=bx.tri_space, issi=None, \
1303 weighting_space=bx.tri_space, incremental=True,\
1304 on_add_simplex=bx._on_add_simplex,\
1305 on_delete_simplex=bx._invalidate_simplex)
1306
1307 bx.Tri.integrate() # nic nevrácí, všecko je přes kolbeky
1308 #č tri - Deloneho triangulace
1309 bx.tri = bx.Tri.tri #č všichní tam očekávajou QHull
1310 bx._logger(msg="triangulation has been created")
1311
1312 except BaseException as e:
1313 #č chcu zachytit spadnuti QHull na začatku,
1314 #č kdy ještě není dostatek teček.
1315 #č Jinak je třeba nechat QHull spadnout
1316 if bx.nsim > 2*bx.nvar + 3:
1317 #č no to teda ne!
1318 raise
1319 else:
1320 #č lze přípustit chybu triangulace
1321 bx._logger(msg='triangulation failed')
1322
1323
1324
1325 #č beží 99% času
1326 def increment(bx, input_sample):
1327 #ё ну нахрен это ваше наследование-расследование
1328
1329 #č nechť bude, asi nikomu nevadí
1330 bx._LHS_increment(input_sample)
1331
1332 #č strom posuneme sem
1333 # cKDTree is used for potencial calculation
1334 # we need everytime regenerate it
1335 sampled_plan_tree = getattr(bx.sample_box, bx.tree_space)
1336 bx.tree = spatial.cKDTree(sampled_plan_tree)
1337 bx.highest_bid = 0
1338
1339
1340 #č logika se mění. Konvexní obálku máme vždycky.
1341 #č jistě, že po incrementu máme alespoň jeden vzorek
1342 #č takže hned od začátku můžeme trhat odhady
1343
1344 #č tri - Deloneho triangulace
1345 if "tri" in dir(bx):
1346 bx._handle_changed_triangulation(input_sample)
1347 else:
1348 bx._regen_inside()
1349
1350
1351 bx._handle_changed_outside(input_sample)
1352 bx._handle_candidates()
1353
1354 #č exportovať odhady jistě môžeme
1355 #č teďkom to děláme hned po přídání vzorků
1356 bx.export_estimation()
1357
1358
1359 #č tato funkce běží 91% času
1360 # bottleneck function
1361 def _handle_changed_triangulation(bx, input_sample):
1362 """
1363 Triangulace zajistěně existuje
1364 """
1365 bx.Tri.update()
1366
1367
1368
1369
1370 def _handle_changed_outside(bx, input_sample):
1371 try:
1372 #č kontrola korrektní i v případě NaN
1373 test = input_sample.event_id > -1
1374 #оӵ эскером
1375 if not test.all():
1376 bx.estimate_outside()
1377 except BaseException as e:
1378 msg = "input sample didn't provide correct 'event_id' attribute "
1379 error_msg = bx.__class__.__name__ + ": " + msg + repr(e)
1380 bx._logger(msg=error_msg)
1381 bx.estimate_outside()
1382
1383
1384
1385
1386 def _handle_candidates(bx):
1387 #č A ještě... AUKCE, AUCTION
1388 # Election - selection
1389 for candidates in bx.candidates_index.values():
1390 bids = getattr(candidates, bx.potencial)
1391 if len(bids):
1392 bid = np.nanmax(bids)
1393 # side effect
1394 if bid > bx.highest_bid:
1395 #č pokud neprovadíme optimalizaci v simplexech
1396 #č tak nám stačí jednoduše assessovat
1397 bx.assess_candidates(candidates)
1398
1399 # probably, we shouldn't purge user candidates (if they are)
1400 # just every time evaluate them
1401 #č kdyby někdo chtěl mít užovatelské kandidaty...
1402 # if len(bx.candidates) > 0:
1403 # bx.judge_candidates(bx.candidates)
1404 # bx.assess_candidates(bx.candidates)
1405
1406
1407
1408
1409 def estimate_outside(bx):
1410 #č konečně mám pořádnou stejtful třídu
1411 #č pokud mám aspoň jednu tečku, tak už je mi šuma
1412 #č zda se konvexní obálka vytvořila, či nikoliv
1413
1414 #č Máme 2 úkoly:
1415 #č 1. Získat odhady a uložit je, abychom nemuseli opakovaně integrovat,
1416 #č dokud se neobjeví nějaký nový vzorek zvenku.
1417 #č 2. Získat kandidaty.
1418 #č a. z mezíkruží (-12)
1419 #č b. fire, to co navrhne QHull (-1)
1420 #č c. boom, doporuření QHull můžou i zklamat (-11)
1421
1422 # get candidates!
1423 #č explicitně (pokažde) počtem teček zadavám přesnost integrace
1424 #č takže změny bx.shell_budget budou při dálším spuštění aplikovány
1425 data = bx.ghull.integrate(bx.shell_budget)
1426 candidates, ghull_estimation, convex_hull_estimation, global_stats = data
1427 #č uložíme. Не жалко.
1428 #č první úkol máme splněný
1429 bx.ghull_estimation = ghull_estimation
1430 bx.convex_hull_estimation = convex_hull_estimation
1431 bx.ghull_stats = global_stats
1432 bx._logger(msg="outside estimation:", ghull_stats=global_stats)
1433
1434 #č kendinody už májú atribut is_outside a mají nastavený event_id
1435 # -2 = 'inside' -1 = 'outside'
1436 candidates = candidates[candidates.is_outside]
1437
1438
1439 #č vzorky je třeba přidát ke kandidatům
1440 #č jako, nic nepokazí, ale čo tam připadně bylo - přepíše
1441 #č uložíme s indexem dle ghull_estimation:
1442 # -22: inner, -21: shell inside, -12: shell outside, -11: outer
1443 bx.assess_candidates(candidates) # nic nevrácí, to je procedura
1444 bx.candidates_index[-12] = candidates
1445
1446
1447 #č zde už nám jde pouze o kandidaty
1448
1449 # fire
1450 bx._fire()
1451 # boom
1452
1453 if global_stats['R'] > bx._R:
1454 nodes = bx.ghull.boom(bx.outer_budget)
1455 #č tyhle funkce už vracej pouhý f_model
1456 event_id = np.full(bx.outer_budget, -1, dtype=np.int8)
1457 candidates = CandyBox(nodes, event_id=event_id)
1458 bx.assess_candidates(candidates) # nic nevrácí, to je procedura
1459 bx.candidates_index[-11] = candidates
1460
1461 bx._R = global_stats['R']
1462 bx._logger(msg='boom!', _R=bx._R)
1463 #č to je vše. Nic nevrácíme
1464
1465 def _fire(bx):
1466 qhull = bx.ghull.hull
1467 if bx._afacet is None:
1468 bx.__fire()
1469
1470 #č podle mě sem nemusí dojít,
1471 #č dokud se konvexní obálka ve skutku nevytvoří
1472 #č b-čko u QHull pro nás má jakoby záporné vzdálenosti
1473 elif np.all(bx._bfacet > qhull.b):
1474 #č jasně, že musíme zapalit
1475 bx.__fire()
1476 elif np.any(bx._afacet != qhull.A[np.nanargmax(qhull.b)]):
1477 #č "beta" se nezměnila, ale jen kvůli jinejm návrhovým bodům
1478 bx.__fire()
1479
1480 def __fire(bx):
1481 qhull = bx.ghull.hull
1482 nodes = qhull.fire(bx.outer_budget)
1483 if nodes is not None:
1484 #č tyhle funkce už vracej pouhý f_model
1485 event_id = np.full(bx.outer_budget, -1, dtype=np.int8)
1486 candidates = CandyBox(nodes, event_id=event_id)
1487 bx.assess_candidates(candidates) # nic nevrácí, to je procedura
1488 bx.candidates_index[-1] = candidates
1489
1490 arg = np.nanargmax(qhull.b)
1491 bx._bfacet = b = qhull.b[arg]
1492 bx._afacet = a = qhull.A[arg]
1493 bx._logger(msg='fire!', a=a, b=b)
1494
1495
1496 def get_pf_estimation(bx):
1497 #č dle toho, čo vidím v kódu (spouští nás .increment())
1498 #č přinejmenším konvexní obálka musí
1499 #č zajištěně existovat
1500 # convex_hull_estimation -2: inside, -1: outside
1501 pf_inside = bx.convex_hull_estimation[-2]
1502 pf_outside = bx.convex_hull_estimation[-1]
1503
1504 if 'tri' in dir(bx):
1505 estimations = bx.Tri.get_pf_estimation()
1506 # TRI-compatible estimation
1507 # -1=outside, 0=success, 1=failure, 2=mix
1508 #č to je JustTriangulation,
1509 #č outside (-1), ani success (1) nebudou korektní
1510 tri_estimation = estimations.pop('TRI_estimation')
1511 tri_estimation[-1] = pf_outside
1512 tri_estimation[0] = pf_inside - tri_estimation[1] - tri_estimation[2]
1513 estimations['TRI_overall_estimations'] = tri_estimation
1514 estimations['ghull_estimation'] = bx.ghull_estimation
1515 return estimations
1516
1517
1518 #оӵ триангуляци ӧвӧл, иськем...
1519
1520 #č může se stát, že první dvě tečky už hned májí různé barvy,
1521 #č ale žádnej simplex ještě nemáme.
1522 #č takže celou skříňku prostě bereme jako simplex
1523 event, event_id, fr, wfr = sx.get_simplex_event(bx, weighting_space=bx.tri_space)
1524 # -1=outside, 0=success, 1=failure, 2=mix
1525 tri_estimation = {-1:pf_outside, 0:0, 1:0, 2:0}
1526 tri_estimation[event_id] = pf_inside
1527
1528 return {'TRI_overall_estimations': tri_estimation, \
1529 'vertex_estimation' : pf_inside * fr, \
1530 'weighted_vertex_estimation' : pf_inside * wfr, \
1531 'ghull_estimation' : bx.ghull_estimation}
1532
1533
1534 def export_estimation(bx):
1535 #č teď raději estimátory ukladáme hned
1536 for key, value in bx.get_pf_estimation().items():
1537 bx.guessbox.guess(key, bx.nsim, value)
1538
1088 1539
1089 1540
1090 1541
1542 ##č nie treba počítat odhady v každem kroku
1543 ##č ale zas, taky že chceme do článků davat nějaké diagramy
1544 #
1545 ##č
1546 ##č po 2. kroku ghull.fire() nastaví vnější poloměr R a dovnitř už ani nesahne.
1547 ##č Je to v porádku, pokud rozhodování je v G prostoru,
1548 ##č protože v druhem kroku algoritmus nějak zvolil ten nejoptimálnější poloměr
1549 ##č a není v dalším kroku skutečně důvod pod ten poloměr jít.
1550 ##č Pokud rozhodujeme v R prostoru s nějakým divokým rozdělením - už je to trošku problem.
1551 #
1552 ##č Jak poznam, že není dostatek teček, nebo je nějaký problem? Jakou chybu hodí Ghull?
1091 1553
1092 1554
1093 1555
File simplex.py changed (mode: 100644) (index 5101b08..684659c)
... ... class JustCubatureTriangulation(_FastTriangulation, _CubatureTriangulation):
828 828 def get_pf_estimation(sx): def get_pf_estimation(sx):
829 829 # TRI-compatible estimation # TRI-compatible estimation
830 830 # -1=outside, 0=success, 1=failure, 2=mix # -1=outside, 0=success, 1=failure, 2=mix
831 #č ISSI nepouživáme, outside (-1), ani success (1) nebudou korektní
831 #č ISSI nepouživáme, outside (-1), ani success (0) nebudou korektní
832 832 tri_estimation = {-1:0, 0:0, 1:0, 2:0} tri_estimation = {-1:0, 0:0, 1:0, 2:0}
833 833
834 834 #č něco konkretnějšího #č něco konkretnějšího
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/iam-git/WellMet

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/iam-git/WellMet

Clone this repository using git:
git clone git://git.rocketgit.com/user/iam-git/WellMet

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main