From 66352bada04fca3a5b8efbf615504e4e020ecc88 Mon Sep 17 00:00:00 2001 From: JacobLoe Date: Tue, 1 Mar 2022 13:16:59 +0100 Subject: [PATCH 1/5] added option to run simulations in parallel --- .../budget_allocation/target_function.py | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/src/pyoptes/optimization/budget_allocation/target_function.py b/src/pyoptes/optimization/budget_allocation/target_function.py index 0cbb0c7dc4..2d9058ef29 100644 --- a/src/pyoptes/optimization/budget_allocation/target_function.py +++ b/src/pyoptes/optimization/budget_allocation/target_function.py @@ -13,6 +13,7 @@ import numpy as np from ...epidemiological_models.si_model_on_transmissions import SIModelOnTransmissions +from multiprocessing import cpu_count, Pool global model, capacities, network @@ -133,10 +134,18 @@ def get_n_inputs(): return model.n_nodes +def simulate_infection(x): + model.reset() + # run until detection: + model.run() + # store simulation result: + return (capacities * model.is_infected[model.t,:]).sum() + + def evaluate(budget_allocation, n_simulations=1, - statistic=np.mean # any function converting an array into a number - ): + statistic=np.mean, # any function converting an array into a number + parallel=True): """Run the SIModelOnTransmissions a single time, using the given budget allocation, and return the number of nodes infected at the time the simulation is stopped. Since the simulated process is a stochastic @@ -149,7 +158,8 @@ def evaluate(budget_allocation, - np.max - lambda a: np.percentile(a, 95) - @param budget_allocation: (array of floats) expected number of tests per + @param parallel: (bool) Sets whether the simulations runs are computed in parallel. Default is set to True. + @param budget_allocation: (array of floats) expected number of tests per year, indexed by node @param n_simulations: (optional int) number of epidemic simulation runs the evaluation should be based on (default: 1) @@ -168,12 +178,17 @@ def evaluate(budget_allocation, model.daily_test_probabilities = budget_allocation / 365 n_infected_when_stopped = np.zeros(n_simulations) - for sim in range(n_simulations): - model.reset() - # run until detection: - model.run() - # store simulation result: - n_infected_when_stopped[sim] = (capacities * model.is_infected[model.t,:]).sum() + + if parallel: + pool = Pool(cpu_count()) + n_infected_when_stopped = pool.map(simulate_infection, n_infected_when_stopped) + else: + for sim in range(n_simulations): + model.reset() + # run until detection: + model.run() + # store simulation result: + n_infected_when_stopped[sim] = (capacities * model.is_infected[model.t, :]).sum() # return the requested statistic: return statistic(n_infected_when_stopped) From 557cdbde30b5c0ade4870e33f660e7bb2114f7a0 Mon Sep 17 00:00:00 2001 From: JacobLoe Date: Tue, 1 Mar 2022 13:17:51 +0100 Subject: [PATCH 2/5] added script for evaluation of parallelization performance + plots --- src/plot_simulation_output.png | Bin 0 -> 22902 bytes src/plot_time_for_evaluation.png | Bin 0 -> 30840 bytes src/test_parallelization.py | 71 +++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 src/plot_simulation_output.png create mode 100644 src/plot_time_for_evaluation.png create mode 100644 src/test_parallelization.py diff --git a/src/plot_simulation_output.png b/src/plot_simulation_output.png new file mode 100644 index 0000000000000000000000000000000000000000..246ef77dd4ac03d10da289d5bb57258291983756 GIT binary patch literal 22902 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 literal 0 HcmV?d00001 diff --git a/src/plot_time_for_evaluation.png b/src/plot_time_for_evaluation.png new file mode 100644 index 0000000000000000000000000000000000000000..c79b94cd324ed172e7abbfb566ecd20dd25a7abc GIT binary patch literal 30840 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

c~3BDpiarYFqv) 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 Date: Tue, 1 Mar 2022 13:19:50 +0100 Subject: [PATCH 3/5] update to gitignore --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index ffdbc19538..35264dd4f1 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,11 @@ __pycache__/ *.py[cod] *$py.class +# ignore bbo output +/*/smac3* +/*/outcmaes +.idea + # C extensions *.so From ab7d1178b06663924e51eae0de78306db3e6a60d Mon Sep 17 00:00:00 2001 From: heitzig Date: Wed, 2 Mar 2022 13:19:24 +0100 Subject: [PATCH 4/5] pool in prepare; also: added keyword "aggregation" to be more flexible. see test_target_function_waxman.py for example of how to use --- .../budget_allocation/target_function.py | 45 +++++++++------- src/test_target_function_waxman.py | 52 +++++++++++-------- 2 files changed, 55 insertions(+), 42 deletions(-) diff --git a/src/pyoptes/optimization/budget_allocation/target_function.py b/src/pyoptes/optimization/budget_allocation/target_function.py index 2d9058ef29..224e511860 100644 --- a/src/pyoptes/optimization/budget_allocation/target_function.py +++ b/src/pyoptes/optimization/budget_allocation/target_function.py @@ -15,7 +15,7 @@ from ...epidemiological_models.si_model_on_transmissions import SIModelOnTransmissions from multiprocessing import cpu_count, Pool -global model, capacities, network +global model, capacities, network, pool def prepare(use_real_data=False, @@ -24,7 +24,8 @@ def prepare(use_real_data=False, max_t=365, expected_time_of_first_infection=30, capacity_distribution=np.random.uniform, # any function accepting a 'size=' parameter - delta_t_symptoms=30 + delta_t_symptoms=30, + parallel=False ): """Prepare the target function before being able to evaluate it for the first time. @@ -42,7 +43,7 @@ def prepare(use_real_data=False, infection should be detected automatically even without a test. """ - global model, capacities, network + global model, capacities, network, pool if use_real_data: from pyoptes.networks.transmissions.hitier_schweine import load_transdataarray @@ -126,6 +127,8 @@ def prepare(use_real_data=False, verbose = False, ) + pool = Pool(cpu_count()) if parallel else None + def get_n_inputs(): """Get the length of the input vector needed for evaluate(), @@ -134,17 +137,26 @@ def get_n_inputs(): return model.n_nodes -def simulate_infection(x): +def simulate_infection(): model.reset() # run until detection: model.run() - # store simulation result: - return (capacities * model.is_infected[model.t,:]).sum() + # return a vector of bools stating which farms are infected at the end: + return model.is_infected[model.t,:] +def n_infected_animals(is_infected): + return np.sum(capacities * is_infected) + +def mean_square_and_stderr(n_infected_animals): + values = n_infected_animals**2 + estimate = np.mean(values, axis=0) + stderr = np.std(values, ddof=1, axis=0) / np.sqrt(values.shape[0]) + return (estimate, stderr) def evaluate(budget_allocation, n_simulations=1, - statistic=np.mean, # any function converting an array into a number + aggregation=n_infected_animals, # any function converting an array of infection bools into an aggregated "damage" + statistic=mean_square_and_stderr, # any function converting an array of aggregated results into one or more overall indicators parallel=True): """Run the SIModelOnTransmissions a single time, using the given budget allocation, and return the number of nodes infected at the time the @@ -176,20 +188,15 @@ def evaluate(budget_allocation, assert budget_allocation.size == model.daily_test_probabilities.size model.daily_test_probabilities = budget_allocation / 365 - - n_infected_when_stopped = np.zeros(n_simulations) - if parallel: - pool = Pool(cpu_count()) - n_infected_when_stopped = pool.map(simulate_infection, n_infected_when_stopped) + def task(unused_simulation_index): + return aggregation(simulate_infection()) + + if parallel and (pool is not None): + results = pool.map(task, range(n_simulations)) else: - for sim in range(n_simulations): - model.reset() - # run until detection: - model.run() - # store simulation result: - n_infected_when_stopped[sim] = (capacities * model.is_infected[model.t, :]).sum() + results = [task(sim) for sim in range(n_simulations)] # return the requested statistic: - return statistic(n_infected_when_stopped) + return statistic(np.array(results)) # Note: other indicators are available via target_function.model diff --git a/src/test_target_function_waxman.py b/src/test_target_function_waxman.py index 550ed20615..6d90cd6238 100644 --- a/src/test_target_function_waxman.py +++ b/src/test_target_function_waxman.py @@ -8,6 +8,8 @@ import numpy as np from scipy.stats import gaussian_kde as kde import pylab as plt +from progressbar import progressbar + from pyoptes import set_seed from pyoptes.optimization.budget_allocation import target_function as f @@ -28,7 +30,8 @@ f.prepare( static_network=static_network, capacity_distribution=np.random.lognormal, # this is more realistic than a uniform distribution - delta_t_symptoms=60 + delta_t_symptoms=60, +# parallel=True ) n_inputs = f.get_n_inputs() print("n_inputs (=number of network nodes):", n_inputs) @@ -47,32 +50,36 @@ #plt.show() # evaluate f once at that input: -y = f.evaluate( - x, - n_simulations=100, - statistic=lambda a: np.percentile(a, 95) # to focus on the tail of the distribution - ) +ms_est, ms_stderr = f.evaluate(x, n_simulations=100) + +rms_est = np.sqrt(ms_est) +rms_stderr = ms_stderr / (2 * np.sqrt(ms_est)) # std.err. of the square root of ms_est = std.err. of ms_est * derivative of the square root function + +print("\nOne evaluation at random x:", rms_est, rms_stderr) + +# for Malte: + +def est_prob_and_stderr(is_infected): + ps = np.mean(is_infected, axis=0) + stderrs = np.sqrt(ps * (1-ps) / is_infected.shape[0]) + return (ps, stderrs) -print("\nOne evaluation at random x:", y) +# use a "non-aggregating" aggregation function plus the above statistic, to get node-specific infection probabilities: +ps, stderrs = f.evaluate(x, n_simulations=100, aggregation=lambda a: a, statistic=est_prob_and_stderr) +print("node infection probabilities:", ps) +print("corresponding std.errs.: ", stderrs) evaluation_parms = { - 'n_simulations': 100, - 'statistic': np.mean #lambda a: np.percentile(a, 95) + 'n_simulations': 100 } n_trials = 1000 -def stderr(a): - return np.std(a, ddof=1) / np.sqrt(np.size(a)) - - # evaluate f a number of times at the same input: -ys = np.array([f.evaluate(x, **evaluation_parms) for it in range(n_trials)]) +ys = np.array([np.sqrt(f.evaluate(x, **evaluation_parms)[0]) for it in progressbar(range(n_trials))]) logys = np.log(ys) -print("Mean and std.err. of", n_trials, "evaluations at the same random x:", ys.mean(), stderr(ys)) -print("Mean and std.err. of the log of", n_trials, "evaluations at that x:", logys.mean(), stderr(logys)) - +print("Mean and std.dev. of", n_trials, "evaluations at the same random x:", ys.mean(), ys.std()) # do the same for an x that is based on the total capacity of a node: @@ -85,10 +92,9 @@ def stderr(a): nx.draw(waxman, node_color=[[0,0,0,xi/x2max] for xi in x2], pos=pos) #plt.show() -ys2 = np.array([f.evaluate(x2, **evaluation_parms) for it in range(n_trials)]) +ys2 = np.array([np.sqrt(f.evaluate(x, **evaluation_parms)[0]) for it in range(n_trials)]) logys2 = np.log(ys2) -print("\nMean and std.err. of", n_trials, "evaluations at a capacity-based x:", ys2.mean(), stderr(ys2)) -print("Mean and std.err. of the log of", n_trials, "evaluations at that x:", logys2.mean(), stderr(logys2)) +print("Mean and std.dev. of", n_trials, "evaluations at the same capacity-based x:", ys2.mean(), ys2.std()) # do the same for an x that is based on the total number of incoming transmissions per node: @@ -106,10 +112,10 @@ def stderr(a): nx.draw(waxman, node_color=[[0,0,0,xi/x3max] for xi in x3], pos=pos) #plt.show() -ys3 = np.array([f.evaluate(x3, **evaluation_parms) for it in range(n_trials)]) +ys3 = np.array([np.sqrt(f.evaluate(x, **evaluation_parms)[0]) for it in range(n_trials)]) logys3 = np.log(ys3) -print("\nMean and std.err. of", n_trials, "evaluations at a transmissions-based x:", ys3.mean(), stderr(ys3)) -print("Mean and std.err. of the log of", n_trials, "evaluations at that x:", logys3.mean(), stderr(logys3)) +print("Mean and std.dev. of", n_trials, "evaluations at the same transmissions-based x:", ys3.mean(), ys3.std()) + xs = np.linspace(ys3.min(), ys.max()) From e6654f550f1182759d0eac12d627839f9c4b2681 Mon Sep 17 00:00:00 2001 From: JacobLoe Date: Wed, 2 Mar 2022 18:36:05 +0100 Subject: [PATCH 5/5] fixed issue where parallel simulation returned different results to sequenntial simulation, fixed issue with Pool creating memory leak, set "parallel" default to "False" --- src/plot_simulation_output.png | Bin 22902 -> 19983 bytes src/plot_time_for_evaluation.png | Bin 30840 -> 30372 bytes .../budget_allocation/target_function.py | 38 ++++++++++-------- src/test_parallelization.py | 10 +++-- 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/src/plot_simulation_output.png b/src/plot_simulation_output.png index 246ef77dd4ac03d10da289d5bb57258291983756..ec5d67c45870602b32b2694eb23a00426d8f5836 100644 GIT binary patch literal 19983 zcmdVCbzGHe-zC27V;=(r3l&h55)=?5Oq6bEkd{_b+Qz`zDjg~f0xI1qhY}EE6VfOp zEwyQwb?NgwGtbQX&Rf6v&1e4LoR6^gz3=3T3V2xzkD% z%HpdO%A&SEmg6`4Uz$4bKOy@w>h{VuCiYJHw#F1$efvw6Hujcg2D=@NZSBl#tPgYZ zbMtcUzG!cM$xfJu$Lb$1;I^?f<@u^Vl7ow^ymU^(jzU?lPkt6fi$|GJD6(#nr%$L{ z2^wg2w%@GUQaBt{l6(Ey@r|{`8<~EcKFI%DV2}-rhTl&F%kW*sx*QnG473nNFY3 zeq2m>#dzsY#bU~drS|IAcLx@8-{-yB&&rxH#GKvpvgG7qN#UMpkIy|zbll^5)dZV$ zhHLqS+}lRwZUH4-b!Ow89BRMMamM2;UtI zDHe5d0}Uy5QV&+HT=}lvQtI5f;)(2Ij{TK)Hn7;Yy}!o!XuOAZwkB3Jt7rP&4Trv3 zv%l_am>#VVzi;F|+Eq?_c0hTgNsOOg)qRGpdhud(Q&UrQv|`xFI9Y0{O>2V3-1LEi z2cRC)0jGxJ^IkRE`bZTeap+sqNDgprrXrW+PX}ml8xiNHPTO>JQ?}<^KrRJ>Dz(M zQeS@Cj&rJU=Vf(ubz^n1Qd^w6gDo2e8`I<`T0QeVJv+eS>FMdv|5Y(i(B^aM!0gm$ zO|&A5v#ToyC#TGkzGCr=VqVnwgYxO4sd<&zY3+#Bv+}zxQY6(HpV?ANv;o+PEBeW=IepkAs=SP`% za!|pexKEEAs2N%fN(`B!zF`B&W$&=T~|I4L$a*Ph1fBmD2pSf_fKt59xng%2LwbnwNL3)(Mdj7^@oB zl`)5{^kyCXd~C=M+w32&m9|Cqa-rYXuj-q&Z8Lur7A9Mlpkp&RWtTEHGZ9!7Asr}S z)!^sn$H-E$hFMIcG4+_!;E_d(7DeLSU44mp0+%mej?~R@*~iIQ#>&Pfl)O{aCHZZ= zrAhJQJtnw6liA7PLK=-GGG47LsNJ_oUPRx#_O;nAx1T3y$!5w=8@04#WW0w*M)=x` z9tp;skLOFwosPu?@DQ!`7k!^SGy3@PqfCy=xQw=T&=j7pTyK74>!v^dyx=&{&{^sD zIY>x?diU;KUJkW{BZp1O4n;`&3hX@QnElNPVRth|GbOgCHa^e{kCjj{kxlQx-(}{e z$7Qj~WkEuAWh0%X& z+x1kjd8IlJ&}P%IgtE9ydDtT{bMxxxCw+a1hD8q}W&HU}3cZ<3IzK(9clR}A*zIg! zC>%{@9XC@f9&ms4LS&{tNhr4vxnSurH(qyACok@e3dNEZ`5;C&Co=<|=TlTgqXjD{ z(pPa%GO6EpQ49?XydOQ1zgBzc+s9iwn6sv*v=l0?d3&#U`s9heH*eP?@%iHM2RUaS z?TSRuc8&GW=w>U{?Kre+*DjNvZ6D}nB_$<=jg5^Wb7Qo1qj^(ZfrTbX%|E>o;?l&^ zg7YiH7c4CW0-gKf({@CPW19+#ii(1cUj8UH(CMoufU9)9zqW*K79}4lfTudVUTpG( zyQZdQz{<62`GbWWY}LE)m=9Q!?0c#LTOyl6hNgOG$SNjDljckZx|uJJo&bV{Kdsp@ zFn_i@P*4#6a=4PGo#hz+#3)ie)H>8BRIL0FxtqGyIz3M-R)6QwE+LtruW!Rvu3mlE z%*>2#c57IKOVV9)bI?x86DObE4=&@q{#&>-J7TOFQ>|q2GcYkR)M~@(Kipmv_|~u} z0MWk9#>R%0YNeIrI$`}ZAi!MLxs!oJ`Qjx@WYesh%ZBn62H%tg=`y04@aMQrq_$RY zQ>?$f`5-b@d5S)MK3=m%1X;cASd>PR36rFTb&^RrUm+tc%V~(y=G9gn-6JGcW6sA1 z4FCLjNMBz+QZLV=t2#zm!#sOtFbe_fX1Gnz+A=#QNA~pToBl#}CLz6o zi`N(C=jY$_@(O%;%1hX-x4gf-%*C!Z>s!8;X;!fR+;fe-kGEFK8X1L?^!WDeTh~BZ ztE0M!iKkAMa!%?39y)Mf+Lqebx;t-f=hm&J+xX3mva_?xI1;mMn>_>~FNrPf*h1ma z%e8cKb1Q3In4jQ$grZzh{aSt#lVn#~tHkFFtG>cr*{e`T%nbiqwKc36stipt_|yp4wPKE za>WnPB3hbFN)oky$X`-Y^4H4Z8F|r*_8mR?HQA=M#SO(zqbrB*zISwPTC+Z9;d7{X zt9}31FE?-AWJHK4XE|Dpe&R^+Yn=F6)~TH(&R^(vW5xP_5K&j*u>$Pd zPB9~+LC<|Mei!!11{fj2OlD_iWlDXxl0??i2b(Q+x%}8e0*u`2)JSLfPNydQjhi+l zS(;w%3JFcTFP#}3&F((-4&`Kf0xYY3Z=6M^_LZ%8&XuL{4*8iUNK=cX}+SvO~z72IRk#%FX#GtD|4 zoxptZ=QqtfkDS^>J+xvT*O^d{X-S@(F{-ZnxGDh@%A$+n$Rl4|qIrv`>lQ!Kha2fLu2GVI#LEiRttR->bW4T-zIl_&PZ zjpZ7BD+PLP9us_1d+n8MdAMkGA@Rdd_PAudG_RvP8+W ztDR~;{Qb;8bCw#yN6*Lj$i>RzNcrkq_Zf6-t{IU!>pU+nFW?p()<)LOczMtHDbp0| zX5mskK8w~|_bfDPzjgs*IW5$=e7@1Ds9T-**z>5E9fO1E$Ff}J;x$taCU=`%?x&$& zMWYDCDn;BwNQ6Ir{3n-Isth`?nyu}-+v}MV+S)G6jVF56><@K&^@QatK;A;|#zPjh zoX##Tv8ELv)Nrh@6qURbZw@}@BzJ!cmr|DFK(ax>y~W3LJt{&(?>&52dv(#0j_&R# zoh(PQru56xL!Jv3o;*7REd7uZi9ETJC;RFW(<%ZpnA2+kC|{xk9sugYk}IW{*CYdv zt=)Fyoa@A34Yp=ygM6TXEU;xN^Qfrh*F$H{p0!w*pF60Nnap}XSXi^Cr)QhEM>g*D zRY!*r;wz!}p(GEx&#J3vlr@NMQY(HSDxP2+0|adn@T=a8?vST>c?%A{ijgu*?o*w< z^sUlZ1A?UhWBX9V(sG*d!Xw6?HU|sYNnE>jO;BfM$$F6&D|TIZ?;$QKs^dA=r>FYz zz0AYi$tgBLxu5SC1CM6hg$8a^`haxu6;34 zA@9=U<>YGdiK-D&43bI!L0HIDxFSy-WwK;{=*7O;`03fvikh&q>t|eM=jO&yK-k5^ zbg`3Vc6utYDkZw7+6x~fi5{K(@g+=3Mn)z7_F6VcolJX0B_%4VY6L)YNnM>_MPD3N zhQL-Hp2R+S3~P#Iy%NIkpla;1Q!~b;KAmxSPpQ;o!=iP7Qydj3!ufYM?PrxdapHu= zuGOnnQF$ezoaO7Q?#Z2-WH2srlEiM+R4kltA<9W;GM7SQh3twtGzHI5z zA1L~1L!QEp{n5{!ZGN!x*m*2%9amb@E7T@!1Y6ZT29Exr57_j8!=?{29S36H8J9{? z_wL=hvsS&ae6323 zivuY()R8d{5$6%3okF&!#pfr(tg{9LB$bfo&qG2Im=2pbMrFJlZ9SeDv+)Ohri4-|%H6(*m+i_{z^Vhr0Ie?(RP?B^ z7kPG<^J&x1K_$bSpFjGv&Re5YzFqIBRyt7D7{^>{k@b-pI==O^7Ki0ij(J&W^HAMP zdr6M-uPfarn)mDJ=|x0D)Z5^>GVOb)9+TfzNUDi3dfmKvvG%nFeaaWl5_a}c@7?_& zm(&NnnGRQnOK!p~l{Po)00?TnH7Hm+073)bix2V5>vh`$Z3!#pg3eb!TGAXf$PNM`vfm?X}x`o1I#p zv(D6Q@a5L|q%4aHScB#lcWf~I6lqedJp={IGdvO*xzpl4p@Tv1B66S9ySTO61=x=s zRYxr^YrL)3j<#;=oM>=VEI{pQJ&C*Nh8J?GKW z9UL6I#dq@3fZBdFd5-=KcY`|8^6aLi!qQ9JbdBl~_sfSoD>qU0=QHlN;?cUqjLt3fmZ>|^B&Som=n>N$ik7lN0qdRmN0#5M9B_7@kZO>?&*4{ zik|XT;?b_)_CuG<&0~?0N6e~Nr>3T20AuKV$-#J<{c=GHs0MgdJPL*sl|UxUCGt`z zw^TOiBj62krhDUhD_`CqEdiN06Ik|uT`Top&A z&kXSu9+i=ol2XD{;x5|K(n2+27A?1Dxi)|o3dxnaUF%NH&Guf}dS{mIr05;A`DSlT zTxn6!SwQI0k*}#%jVfUhYhCqBcPTqqHDVCu5E9ZD@2lgf)?{H}8ONs@IeQq@KF#m| z048igk=4lX@LSITKbipYiOiN~-pSU-i)V>F@b)gd92mY}<=K@dl#=7<@7zQCxRHq| z20i&87Z+FE_}1FduARU*#rp*k715kT>=7zEV;r_C`;2Jl-%UcGv? zFM&l6Eu;nm(K{J&m$7Kp=1PwQ^P1QIA-l+j%;E{nSx$WgTlK1uE(2clXPeQS>qS?F zFRbM<_1Me423Jf6m{rB-Yt@{oD(W&;spHffL7F6HKEi{LO$H2!h>DWVwDs0SE9&U! zIbi6Wzj84ZK$p3`(Ik^jld=}J|FOI0)BPE9@CCx2^VxI5fi*8rtsqE6&tobge+<_= zR;`G(jdEjw?z(OuK`fPzHlAt+u4B3H?FvFND>^AwvoiJG`m%g2BwyO}OE6$U=I&$Plsen65 z6S7JBCG+-Yp<+2hxiiTYb=-54?T_flRx{E7fmiiC*S}VO`-=3fa{t3c-$c8-m^~^7 zo3nPN9uRleWCS`FBhQZ&Sw|C}>ezJa)-94L)Kx>ynoZNyb#-ds$J7iAUXjVbq&&bl zLr3(}uWotq%Sp_lRoTv?&!|+=ft&RG1p>KB=S|7V?bq*Mjhd*(aC)#*nAKRL0&OqU z*ng_IV&LmrmeQBvNv0J(s8d+j#4PWo>R452Aoa|>EG)r}SH7&ZtEw-O+rY$Rh8AH! z=JWFj+Gg{hzx>co11c*O+J}aQF1>9D;$CtX9Fv!^i7ubfhwIDeX4EoJhM2)oV*SwJ zYra|v97aMLCe@d{(a$gQoF8RY26o=Gd9#s}FSnJ;#Gn=8+v<}qkB!vxgT}1>nGSso zJnO3>Ww(>ph|T^ywTYS8Mi*d#j8y{+a^z)ZL4GOaKE^%S< z11CbuurqD{_Dx^Hn^7NtzdT&>sdrvp9;rl1q@!e? zm{<$wttK*4{`hgxE0s*8piE=}j+D%Hi!bonst^kHZs854_FUdHyxefL*bIa_zz<6p1+_?2>EjvO; zwglU#(sEjqydZ%%^>6e~B{Vi=IoXiTe<*(U^s)Wj6`_Kww{RXJKV%krVniNo3#a^BD=J?G8vH3|umXfg_U-EN9fHfK$2bwZy7|(xkc&IA@sPzHU<9*#O z*P1aC27u`zJJ{aY`MlHifPZ3!1y9f8V4$?G=zIxT{fQ;$#YR(F#<~}rKHglpZ_l0& zYjz4BDO!EP>-Oyc)aIm%U-p9cQKFF@Bb3}=Q%@ybZ(-W^iBX8hv{{mQ&B4(RE13QG zj6WH1bm=+4+Dk^U<~IU9v<$>of#~p zzbYV{Ad;K>^DusGGT4+6iQzUwH+j;)#rl zwJYUH^8;P={9pmLp`)8S%B|3 zhp`$pJ%6NnW2@=mRxj$)r{$>k2HONIFQPzQ%$@G#82y>QJ`iQvBtt~Ki_Hiv)SAGt zU-3+(8vKgq@NibbJZ{>!(LijnZAp@4Js&O4(-Zd~ljkwlKVaKXq?aWtJ~#H%tT{8q zU)Uk`S8$=RmRTg`n2?;hy>6#VaGuPtK@4TG-Za!7=8G$CNSIRYu83{ruaJ zr@YqfV`0gkr8n9{Vl?dX(X!@6UUi}J@`*3Z+NIWs1n?Q(Te*I{ptZHNbLP4>pge=v z^YP{YjxrcroWa`IW^*^EjBKPl$gth{9vS|t&VYp_F9Rf}cFGQ+NA26UuTUjg;lt$A zls|^R0EDVh7L5@U28hC>6=d>?1TBDWq2FbHW*#h8BkE}B6&IHPOm2SQ@B)GLyaa$S z4pYnG5_4Ueh3ztzn>a4w17${PjY^DC0eQJ*in)J`a+FC{6DgVYeYNFFmoMK2q)tPB zOadWf+4wn7umb$Ud-8IO_ap}F==~aA0>Hie)Uy2b;%?1WpWJLp27Q_>xOv>oy?Kis zF$;n;=fjvt3R$vcebrw@MW$N$pu1(kSUo^bT)Ao$A71mx)?L|fq$Ntvef;?oBXD$= zn+Ga-Tte$}wg!p1){YIewi2cc>q&cY;s$4(ahXbGg|cB#W0X*Ro@bu(_q+RL023bo z2(DbWP5`V1AK>NZDmpfdaLMQRm^~)-eTtNol*({{U$4cdn}Lm*!nPzeM;T2_Oc5#q zOJPhHHC(Oy=ePXwv&`<#I^B&hQ|vo<@YCeHB=*t7((Q6j^`i84XhK~M4A z76%HmbH@hdR7(xg05Eu#Va~A4Ue}hA&=T3|xzLRJDXLD;X+-oeK_kM`EE%ovoTq(z z)y{UU+|OcN*+ z#xQS=9tafl8d$Nr$KFX>5dl||sHX=N=d$C00;O~3?(A~y=auz4^r1eY!yKZ~HjyiD z2vwNZe@Ze9mGc*?BQHMptaF>)`9o-y?!Y5p)_7JuA7B=+ zWc;?CeL3SI&fOS6X=wNdd!*U|MV#L?q}e3Cc(GeGM(Nj-T$`X1C;4<=%;ok%0?I!< z=U@PQMOTd1&QNk{agIX&d6_piU?c2Ge~t124bIUFmjoidJhH`Shd1QY$Hx|5SR@IR zk#6~_CC8NmQwn5&T1<6BDkBp;P$|*YKpL7cuk{o6%q0^Bkl-2Q)V+K6s?smFtAM_G z)v|*^Y5VwFxHZITK$^Y!ORN?8E!KYHJ0!S=h2<2~57pzxkKdhYK2M>%{>&H#jB^lz zUxbu~9j7Ks~)vFXqwUFZ=ljIVXQz#t; z=o2a#w#G9aP51t|D!6CVqV@gz<3urL^M1a*^qPw`O=!*lowy6+6dHmI8k#ob}A$E}n_q5yH9|0ktX8V!fu9Ypf3Nc|QC#7IlCpBJ&f<})6!jeg>YN3lY;2z|JF-!(iUf$d zrhf9_iUTX;)q`Wjv1ybPf!VvF9QxDqR3$WF=7sfVm_| z#CUsG6FuTh5E+udA<`gOsU~O(5o(W0xCW5DpDHTkfiKRZb=m_&G#wk>1_Y@@2w7Yj zT%QH`p8QrNe6^JYE{=z6B5%X7LJj31^Q3m}DG${Hb` zc6rVYYj?X3q|~8G@3yLccLr=}6}dl5hmuq%sNpM^-4qB@k6ANv1B(PHBljLWa8NG< zKt(@33@#)V_|gTf5VJ%=UoGia7T^E6OZX`OXdU&sslT*A-)_I6qx#1k9-{gXYRndi$Fz0L{84MXA*ILw{VCx)ugN4gz zxnPQ2w_MJ6trp;k9~p;4c$NsY3zHZd`rc_@<8J7$T$|I*9NgLGJl7n7DBFcP3${iY z^WbCF^5A1?&kw2+ve`D+32YRheApye&OQW_H$H~li^Zk{pwM6jd;!29NyUyw0B~Fc zrtGCfJ#r^JTW?)rC~MDiHQg`b3sdrJtgO*^S4M&>Gzq$5mb}>1X?#f4t26h<+HS0m z1*?sr=yA>f2989Vyt(s$#|mH}`)L-{(J#U59^-TZKS*CdQ^Ic)$-0h++!I8YBj_ZF zQ^1{x7$7hjC89!gn=utLv0SB4Hb0IEagi$Z<*5VB&Z;xDDoH+6tS%=+AIxO`!uqvq zpF`zllcWOa#voOjU(P|4OF*As7Znw4G{(e(Ch^txON8{+shOG5)>b{BLp$~JsC9D- zXvVMzRDKRV#-=lM#s~VKGKLTZFjIsbMA_)8e0geJDdFOLtk4Xf6S@^>?%?j-$FY`G zn7{1jXQ#AhPEzM5+t=?Db5qB{gy&eJH$B)TstNR!GdP&Wob`+N){n-f3yINzcA`a+f9~TGiF>d2eA13!sZfrms(@useXXvD`Bxcp+NcQgNP?Y$d>Y5(zU3>^+l9#@aTUM~!d55d&;!t3 zqQEUkX4+cn!K_dluN8#>;|!tY5Rr-7DRF9v3CYPva^M{xTm|X0AhJ8+5>OGMJs0Lz zty!aj1Sc~+b_}$$^0uRw+8$VQ&odWc%@nRexvt4^bwXq{-l#6W2m~btfL$Ict_K8C zhq>gX=WILky8Tz1yg~W&-rB0GfMS6n$jhahtsW8rod^jSgXJKk9!g#m_)ZZkWe7Z^ zNa91~$c4b|@B;_B)i6N119N`v?c28~u_}lghV9$qe*XNqy z=HoHMavVDJrfo~mq4QFVEc~uY(|sM+wYVwI{=_p?&CkscaSnQ`sqa%8WWNe_=!iqF zim5L(41;KjO)FuKY$qiJ)SfijMOV^W+5XU5w1lE?TrNZ;2FYOoTE+!pT(Hi%$1J25 zFGKCzC+yJs47(h4=guFdzDqjppphP5By_3mYLawu5=uztl$u^Xrh2t6-~^?-nYKx^JAgQWT~NJU$&Sg~vW#vP=gw;BBIiuZ(m-OUAhfBiual}buV zJ0dYQ=n!n}7=jrEUCa!5i?a6|UI5iZT~XAxuZ`hRQ6x!Ju3SlnK)-pzhL>cF&=-Om zND=;oBPL~xgc1UgMGY6S>mr2Tsz3fvAfOTj7-gu_B8!ZY{8kMrAU!it!ihHuJ*U%x ziQQxJz){NaVN-AWsq1#N1K&96E$ggm(Y?lpTJ;FC2XGDU9F_%ldbpii;KCm>I)(7zdXLc;sL*;NQA^yBCvSGLIoJI|*Mmx9qw7 zEm#+VD9)Td&3@p3By`1B#4iN~qRWg%GzI{B6{N2!*s2t#Aze{0z|?TeOen+bAq3rg z9~xQK6Mv}twd)VX653E^ITmQFnB~zgnSyc@+#Biq@B@@Ov~-8K$^m%zvJ&}w8dE60 zU6;(-T_WmGEVc>RhUZvefk`q#SZ~@xfh5+0pr%GeMY%T+KhnYi&_^sru-?>0Yw$xLg2+F!(A?ZygT77}7%?k2f~J3jJtELdC;N(GOiT>14CV8Ia@+Yaloie29EQ7w zcgFWgtb@jqtO7ryf*|O#t^lo(45BFqvpwAm`WjJgxV6)F>*=-jaW5&@1f!zDtn;KU z(_OpT%+YAzcJr@qUYb;d#G}zzAZNj+Ct6=j@qamt0$6vSCpQ{-LkxSE(gP0ZU-y_D zKI=vI@OT*Z3~ZAcvJjPLKRC;?K%r>bkBM^7{q!^+AKwwgSF`8BoW`zEIz9L0z{%mZ zjr*@<6W;+8c9bUuM#gAja=_wcd`@y1H}|@sX$2k_ih{^jOSRnF4uxFn zixzaa_U)4(L?+P7FKZy+S?-_+5iaHyK%~O6@RS$>B{h>w9-to*&6La~v5H~0F+{mG z8xJ<5NF#)|9dmq5qzzQG?wO^Jp;TO)7;MJNBz&}Dl(;wS;VfmFcOd`*-j)=MZdOg{ zio{|^OkP&4xuT79sCH`h_Q~WbfBkiO?M`78M82A~w)O_Kb(Bl|WD-P&8iTATyyJ#% zAm(zjFR#wv1ARl>=^ChIpTuk)Y~v?$A<^!CNr`K>M}i8~cJfECK0&;}s<;!Bt~|1@ z7WT=J6fT?W;oD@V2qZ*1YRIsQ5}WBioC71@l;*m7%)WnI#dxKP8zYzrOV9&t^BD-u z{Qa?U<$k=UaOE$s^r=8Yg~;^-!d)d4t^4V=l&f(ok&jpgf-TUNI?Y1R6U-s|lkfn< z2=iQ+X(b#!YYaMfCdjVw%2VqJ11${E3w;iJ`0^Di$nZwc6{c{07)#uSx`~v_ChbGy zZcy@SU=#S!JX8Vb^-50+8y@!WzL#}pY|I|?-f`Hf&KnpQq^`(FHKR$O!8oQr{5y*4 zg&PF!mSV^H0|ySQt8)@YCn3}H-#dxGUj3kFKYgnESN0?>aHe-IKECoY3>*Wkd3ta| zv5lxFJ=}RL763Ou*ugwuVBL#d%?ySaH6vr8fy zU@yqS{861|qsOJ0%wBXjhzKF87!DqliBoua9c=BhprD|3VdQKW{Ev+`&O!-GC>M4@ z+^dF}GzGpBQJDBJaTPx)4O+GXWg8p*1I0xJO&^?gJS5I;#>I)EY~psikEAJ&dqGmZ zwq!-akm*BojomszX5UF`7qkunNfAW4neWQ0XwD?8Sz}P;3FdF{n6b*io@g}OzIl@f zUh8O7Dizj|1PIq%>FZ$7adviQu>3}$_+EyE*DWOx^ptl0InHN)a*s0nO!4N`@OZ?l z4B!bKd}kz=UamGUd+G3`IA%b#ZyOg~`ce6kBoU5Q%2?7Eg==r3Urnc~> z6MQTVs99@w994kHs+y!JmXx@2J~yDDUftWiQEw4$a>%9sZ4q%GJ?GZZ1f;D*Ba6f4 zNKx@0LJ-zB5+L4F6+u*8^s6IiY-RvB^j7_)l+EkiMDJ}cu-os%y@3L0+rO_JfI}ma zm;zwp~iWrk78I|{d*Yt2) z<80#n1taJ)_<6xTe-)Q`zkyWBege^N-!_L+1tR;4q|y^BRbVv%YCoFgZE&B=;XXw2 zN-~kf6fK;!`57@%de7>tAn&$B4T(KHzj=p3(`AKaSb_h#f&BgVGDcH1?1}cD|EA?! zeMi0J=LEbq{m}nC`}%u>@}pU}hqmj#X_a|0$M(eAan0Uo8zM0*v@pc4U%HhD7KrKnG*q-iI*I`DQ_?v=F3{tvHmo0=UYw` z)EU~Lt5DwG$~cyF_4-c?W5P|L{1!fBWR?vSh`~?BXRTZ}=jR8MBmazB0+6q(ZLsvG zChV*}tjm@y(@C=ezXnrUEbJT?F=^b=*@k_kW&HI=Ta7m_0Qigf5#PLMv>u^UxW#HP z$-h8LKFG#)W?{N6uNo{Z&|Jq+b3ed#upl#Ya13w0GKYt`Ro=O{4ccK8%ui&RsYua* z5QL=fp9p*P%6{^vzHHD@-lAX2^I(V2yW@QbDRy)2afY8{t}VE~mC$)GP$}hh+tj~{ z0Kk0O-hS%#nlBI<2Ga7q*0;)J;B(}@ZDhGx$SArnJ4(pQjT<*^-nGl)RH-CvM;9+% zeE7)K*|`LE28mK6E&CSjy%aQ=Buq6S^K(O<9GEUa7yGi3RP4I3Z6dh3sS&4TB z_n-_ci{y(13?#$6(+BPow3EcIR6+W=f`qQs9lB%QRnI)^RMfN``_skdq z>ySzP;SQm_L_CjElLyV60;Bo;SWDb`6!!a~cZPK!9Ozy%Kv=bHA8xFU*^6s`FO85} zO!jts!+++G#{DFb*^etJl;a-%ski?=7J`KPb%f-S@qdT?|A)?osJ~`1-HH|Yca(wu z&|#JPY=KFuab4~*w#99JyoS};&UP?#MdOG?FO2byLoM#jQ;=cf5!4_Jwcr4Y!|

    aHbsjimParOdnIF)qaF%aH${Wvhy{;v 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 literal 22902 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 diff --git a/src/plot_time_for_evaluation.png b/src/plot_time_for_evaluation.png index c79b94cd324ed172e7abbfb566ecd20dd25a7abc..0d15531f189b7482e7b0ef60601dc66695b70ecf 100644 GIT binary patch literal 30372 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

    c~3BDpiarYFqv) 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