Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Ρ Π½ΡΠ»Ρ. ΠΠΎΠΆΠ΅Π»Π°Π½ΠΈΡ ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ: Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ β Π‘ΠΈΠΌΡΠ»ΡΡΠΈΠΎΠ½Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ MLM (ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΠ΅ΡΠ΅Π±ΠΎΡ Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΡΡΠΎΠ²Π½Π΅ΠΉ) 1. Π¦Π΅Π»Ρ Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΡΡΡΡΠΊΡΡΡΡ MLM-Π΄Π΅ΡΠ΅Π²Π° Π³Π»ΡΠ±ΠΈΠ½Ρ L = 7 ΠΈ L = 8 ΠΏΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΠΏΡΠ°Π²ΠΈΠ»Π°Ρ
: β’ ΠΠΎΡΠ΅Π½Ρ (ΡΡΠΎΠ²Π΅Π½Ρ 0) = 1 (Π³Π»Π°Π²Π½ΡΠΉ Β«Ρ
ΠΎΠ·ΡΠΈΠ½Β»). β’ ΠΠ°ΠΆΠ΄ΡΠΉ ΡΡΠ°ΡΡΠ½ΠΈΠΊ Π½Π° ΡΡΠΎΠ²Π½Π΅ k ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΡ min_children = 1 Π΄ΠΎ max_children = 10 Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΡ
ΠΏΠΎΠ΄ΡΠΈΠ½ΡΠ½Π½ΡΡ
Π½Π° ΡΡΠΎΠ²Π½Π΅ k+1. β’ ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ Π²ΡΠ΅Ρ
Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ
Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΡΠΈΡΠ»Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΏΠΎ ΡΡΠΎΠ²Π½ΡΠΌ (n0, n1, ..., nL) ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΠΈΡ
ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ (Π±ΡΠ΄Π΅ΠΌ ΡΡΠΈΡΠ°ΡΡ n0=1). β’ Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ°Ρ ΡΠΈΡΠ»Π΅Π½Π½ΠΎΡΡΡ total = sum(n0..nL) Π»Π΅ΠΆΠ°Π»Π° Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [10, 500000]. β’ ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ³ΠΎ Π²Π΅ΠΊΡΠΎΡΠ° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²Π½ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ (ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΎ ΠΈΠΌΡ/ID ΠΈ ΡΠΊΠ°Π·Π°Π½ΠΎ parent_id) β ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΠ΄ΠΈΠ½ (ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΈΠΉ) ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ Π΄Π΅ΡΠ΅ΠΉ ΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌ. β’ Π ΠΈΠΌΠ΅Π½ΠΈ/ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Β«Π·Π°ΡΠΈΡΠΎΒ» ΡΠΈΡΠ»ΠΎ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΡΠΎΠ²Π½Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: L7_1-3-9-27-81-243-729_total=1093). ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ): Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΠ‘ΠΠ₯ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π΄Π΅ΡΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Π΅ΠΊΡΠΎΡΠ° (Π΅ΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ β ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ ΠΌΠ°ΡΡΡΠ°Π±Π½ΠΎΡΡΠΈ ΠΈ Π»ΠΈΠΌΠΈΡΠ°Ρ
). 2. ΠΡ
ΠΎΠ΄Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ (ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ) β’ L_set = {7, 8} β Π³Π»ΡΠ±ΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΡΠ΅ΠΌ. β’ min_children = 1 β’ max_children = 10 β’ min_total = 10 β’ max_total = 500000 β’ root_count = 1 (n0) β’ canonical_parent_assignment = True (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ 1 ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ Π½Π° Π²Π΅ΠΊΡΠΎΡ) β’ enumerate_all_parent_distributions = False (ΠΎΠΏΡΠΈΡ; WARNING: ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΎΡΡ) β’ output_formats = [“CSV“, β’ name_locale = [“en_US“, “ru_RU“] (Π΄Π»Ρ Faker β Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΈΠΌΡΠ½; ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ) β’ random_seed (Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ) β’ max_scenarios_to_export (ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Π°, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π½ΠΎ ΡΠ°Π·ΡΠΌΠ½ΠΎ Π·Π°Π΄Π°ΡΡ) 3. ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ (ΡΡΠ»ΠΎΠ²ΠΈΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΡΡΠΈ Π²Π΅ΠΊΡΠΎΡΠ° ΡΡΠΎΠ²Π½Π΅ΠΉ) ΠΠ±ΠΎΠ·Π½Π°ΡΠΈΠΌ n_0 = 1. ΠΠ»Ρ ΡΡΠΎΠ²Π½Π΅ΠΉ k = 0..L-1 ΠΈ k+1: β’ n_{k+1} Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡ: ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ n_{k+1} >= 1 (Π²ΡΡ ΡΡΠΎ ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π°). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Π΅ΠΊΡΠΎΡ n = (n_0, n_1, ..., n_L) Π΄ΠΎΠΏΡΡΡΠΈΠΌ, Π΅ΡΠ»ΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ
k ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ. ΠΠ±ΡΠ°Ρ ΡΠΈΡΠ»Π΅Π½Π½ΠΎΡΡΡ total = sum(n) ΡΠΈΠ»ΡΡΡΡΠ΅ΡΡΡ ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ [min_total, max_total]. ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΡΡΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΠ»Π΅Π½Π½ΠΎΡΡΡ Π½Π° ΡΡΠΎΠ²Π½ΡΡ
, Π½ΠΎ Π½Π΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π΅ΡΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌΠΈ. Π§ΠΈΡΠ»ΠΎ ΡΠ°ΠΊΠΈΡ
ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π΄Π»Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ (n_k, n_{k+1}) β ΡΡΠΎ Π·Π°Π΄Π°ΡΠ° ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΡ n_{k+1} Π½Π° n_k ΡΠ°ΡΡΠ΅ΠΉ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ 1..10 (ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ Ρ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡΠΌΠΈ), ΠΈ ΠΈΡ
ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π±ΡΡΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΈΠΌ. 4. ΠΠ΅ΡΠ΅Π±ΠΎΡ Π²Π΅ΠΊΡΠΎΡΠΎΠ² (ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΠ΅ΡΠ΅Π±ΠΎΡ) 4.1 ΠΠ΅ΡΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° β’ Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΡΡΡΠΎΠΈΠΌ ΡΡΠΎΠ²Π½ΠΈ: Π½Π°ΡΠΈΠ½Π°Ρ Ρ n0=1, Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π³Π΅ k ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ n_{k+1} Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [n_k*min_children, n_k*max_children]. β’ ΠΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ Π²Π΅ΠΊΡΠΎΡ Π΄Π»ΠΈΠ½Ρ L+1 (ΠΎΡ 0 Π΄ΠΎ L). β’ ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ total ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ Π²Π΅ΠΊΡΠΎΡ, Π΅ΡΠ»ΠΈ min_total ? total ? max_total. 4.2 ΠΡΠ΅Π½ΠΊΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ°ΠΊΠΈΡ
Π²Π΅ΠΊΡΠΎΡΠΎΠ² (ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°ΠΌΠ΅ΡΠΊΠ°) β’ ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ, Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ ΡΠΈΡΠ»ΠΎ Π²ΡΠ΅Ρ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
Π΄Π΅ΡΠ΅Π²ΡΠ΅Π² Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌ. β’ Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΡΠΈ max_children=10 ΠΈ Π³Π»ΡΠ±ΠΈΠ½Π΅ 8 ΡΠΈΡΠ»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΠΎΡΡΠ°ΡΡΡΡ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΠΌΡΠΌ Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π³Π΅ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π² ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°Ρ
. ΠΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΡ (streaming), ΡΡΠΎΠ±Ρ Π½Π΅ Π΄Π΅ΡΠΆΠ°ΡΡ Π²ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ. 5. Π€ΠΎΡΠΌΠ°Ρ ΠΈ ΡΡΡΡΠΊΡΡΡΠ° Π²ΡΡ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ (ΡΡΠ΅Π½Π°ΡΠΈΡ) ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ 2 Π½Π°Π±ΠΎΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ²: 1. ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΡ (ΠΎΠ΄Π½Π° ΡΡΡΠΎΠΊΠ° Π½Π° ΡΡΠ΅Π½Π°ΡΠΈΠΉ): β’ scenario_id β’ scenario_name (ΡΠΎΡΠΌΠ°Ρ ΡΠΌ. Π½ΠΈΠΆΠ΅) β’ L (Π³Π»ΡΠ±ΠΈΠ½Π°) β’ vector_levels (ΡΡΡΠΎΠΊΠ°: 1-3-9-...) β’ total_nodes β’ n_by_level (JSON) β’ generated_on (timestamp) β’ node_file (ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ Ρ ΡΠ·Π»Π°ΠΌΠΈ) 2. Nodes file β Π΄Π΅ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° Π²ΡΠ΅Ρ
ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² ΡΡΠ΅Π½Π°ΡΠΈΡ: β’ ΠΠΎΠ»ΠΎΠ½ΠΊΠΈ: id, name, level, parent_id, scenario_id, path. β’ Π€ΠΎΡΠΌΠ°Ρ: CSV (ΡΡΡΠΈΠΌΠΈΠ½Π³ΠΎΠ²Π°Ρ Π·Π°ΠΏΠΈΡΡ).