From d13e681cb9fa01627bfbf8a6079440279d0c2ec5 Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Mon, 17 Apr 2023 20:54:22 +0200 Subject: [PATCH] fix: calculating time for generation and not for dislpaying plot --- lab3/main.py | 36 ++++++++++++------ lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.aux | 3 +- .../EARIN_LAB_3_RUDNICKI_KLISZKO.fdb_latexmk | 15 ++++---- lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.fls | 3 ++ lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.pdf | Bin 72922 -> 91362 bytes .../EARIN_LAB_3_RUDNICKI_KLISZKO.synctex.gz | Bin 10859 -> 11272 bytes lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.tex | 10 ++++- lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.xdv | Bin 27840 -> 30192 bytes 8 files changed, 45 insertions(+), 22 deletions(-) diff --git a/lab3/main.py b/lab3/main.py index 4757eed5..0ce44f9b 100644 --- a/lab3/main.py +++ b/lab3/main.py @@ -52,10 +52,13 @@ def evolution_strategy( mutation_strength=0.1, number_of_generations=123, min_max=(-5.12, 5.12), - number_of_outputs = 10 + number_of_outputs = 10, + no_display = False ): """ Define the Evolutionary Strategy (μ, λ) algorithm """ # Initialize the population + total_time = 0 + start_time = time.perf_counter() population = np.random.uniform( low=min_max[0], high=min_max[1], size=( size_of_population, 2)) @@ -76,18 +79,24 @@ def evolution_strategy( if number_of_generations % number_of_outputs == 0 \ else number_of_generations//(number_of_outputs-1) offset = number_of_generations % step - if (generation_number - offset) % step == 0: + end_time = time.perf_counter() + total_time += end_time - start_time + if (generation_number - offset) % step == 0 and not no_display: output(population, generation_number, f"{generation_number}:nop_{number_of_parents}:sop_{size_of_population}:ms_{mutation_strength}:nog_{number_of_generations}:min_max_{min_max}:noo_{number_of_outputs}") summary.append(population) - print_summary(summary, f"{generation_number}:nop-{number_of_parents}:sop-{size_of_population}:ms-{mutation_strength}:nog-{number_of_generations}:min-max-{min_max}:noo-{number_of_outputs}") + if not no_display: + print_summary(summary, f"{generation_number}:nop-{number_of_parents}:sop-{size_of_population}:ms-{mutation_strength}:nog-{number_of_generations}:min-max-{min_max}:noo-{number_of_outputs}") + start_time = time.perf_counter() # Evaluate the fitness of the final population fitness = np.array([rastrigin(x_point_value, y_point_value) for x_point_value, y_point_value in population]) # Return the best individual found best_idx = np.argmin(fitness) - return population[best_idx], fitness[best_idx], population + end_time = time.perf_counter() + total_time += end_time - start_time + return population[best_idx], fitness[best_idx], population, total_time def print_help(): @@ -115,6 +124,8 @@ def print_help(): -max --max_value [number] -noo, --number_of_outputs [number] Those arguments can be given in any order and any argument which was not entered will be replaced with default value, + Additional flags: + -nd, --no-display (does not show the plots) exemplary use: python main.py -nop 5 -sop 20 -ms 0.1 -i 100 -min -5.12 -max 5.12 -noo 100 """) @@ -251,7 +262,8 @@ def user_input(): "number_of_generations": 100, "min": -5.12, "max": 5.12, - "number_of_outputs": 10} + "number_of_outputs": 10, + "no_display": False} for index, argument in enumerate(sys.argv): if argument in ('-h', '--help'): print_help() @@ -270,6 +282,8 @@ def user_input(): arguments["max"] = float(sys.argv[index+1]) if argument in ('-noo', '--number_of_outputs'): arguments["number_of_outputs"] = int(sys.argv[index + 1]) + if argument in ('-nd', '--no_display'): + arguments["no_display"] = True return arguments @@ -278,20 +292,18 @@ def user_input(): if __name__ == "__main__": # Run the Evolutionary Strategy algorithm ARGUMENTS = user_input() - start_time = time.perf_counter() - best_individual, best_fitness, output_population = evolution_strategy( + best_individual, best_fitness, output_population, generation_time = evolution_strategy( ARGUMENTS["number_of_parents"], ARGUMENTS["size_of_population"], ARGUMENTS["mutation_strength"], ARGUMENTS["number_of_generations"], (ARGUMENTS["min"], ARGUMENTS["max"]), - ARGUMENTS["number_of_outputs"]) - end_time = time.perf_counter() - total_generation_time = end_time - start_time - time_per_generation = total_generation_time / \ + ARGUMENTS["number_of_outputs"], + ARGUMENTS["no_display"]) + time_per_generation = generation_time / \ ARGUMENTS["number_of_generations"] print("Best individual found:", best_individual) print("Best fitness found:", best_fitness) - print("total_generation_time: ", total_generation_time) + print("total_generation_time: ", generation_time) print("time_per_generation: ", time_per_generation) diff --git a/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.aux b/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.aux index 9fa37bfa..6a03cb00 100644 --- a/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.aux +++ b/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.aux @@ -15,6 +15,7 @@ \HyPL@Entry{0<>} \@writefile{toc}{\contentsline {section}{\numberline {1}Exercise Variant 2 - "Rastrigin function"}{1}{section.1}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {2}Implementation}{1}{section.2}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Exemplary plot halfway through generation with parameters \\ nop 250 sop 1000 ms 0.1 nog 500 min max (-5.12, 5.12) }}{2}{figure.1}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Exemplary plot halfway through generation with parameters \\ nop 250 sop 1000 ms 0.1 nog 500 min max (-5.12, 5.12) noo 10 }}{2}{figure.1}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Exemplary summary plot with parameters\\ nop 250 sop 1000 ms 0.1 nog 500 min max (-5.12, 5.12) noo 10 }}{3}{figure.2}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {3}Results}{3}{section.3}\protected@file@percent } \gdef \@abspage@last{3} diff --git a/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.fdb_latexmk b/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.fdb_latexmk index 1735d296..f9085c15 100644 --- a/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.fdb_latexmk +++ b/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.fdb_latexmk @@ -1,11 +1,11 @@ # Fdb version 4 -["xdvipdfmx"] 1681756657 "EARIN_LAB_3_RUDNICKI_KLISZKO.xdv" "EARIN_LAB_3_RUDNICKI_KLISZKO.pdf" "EARIN_LAB_3_RUDNICKI_KLISZKO" 1681756658 0 - "EARIN_LAB_3_RUDNICKI_KLISZKO.xdv" 1681756657 27840 dd68a4ffd83ce7a718d16a45334a4966 "xelatex" +["xdvipdfmx"] 1681756905 "EARIN_LAB_3_RUDNICKI_KLISZKO.xdv" "EARIN_LAB_3_RUDNICKI_KLISZKO.pdf" "EARIN_LAB_3_RUDNICKI_KLISZKO" 1681756905 0 + "EARIN_LAB_3_RUDNICKI_KLISZKO.xdv" 1681756905 30192 bd831cc7fba44cf2e46d93256fd6cbfe "xelatex" (generated) "EARIN_LAB_3_RUDNICKI_KLISZKO.pdf" (rewritten before read) -["xelatex"] 1681756657 "/home/kuchy/earin/EARIN/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.tex" "EARIN_LAB_3_RUDNICKI_KLISZKO.xdv" "EARIN_LAB_3_RUDNICKI_KLISZKO" 1681756658 0 - "/home/kuchy/earin/EARIN/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.tex" 1681756657 2911 e46de053342f55766dd21ffa226b1f81 "" +["xelatex"] 1681756905 "/home/kuchy/earin/EARIN/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.tex" "EARIN_LAB_3_RUDNICKI_KLISZKO.xdv" "EARIN_LAB_3_RUDNICKI_KLISZKO" 1681756905 0 + "/home/kuchy/earin/EARIN/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.tex" 1681756904 3239 1c19d3382eb02eca12f28f266179f0f0 "" "/usr/share/texmf-dist/fonts/map/fontname/texfonts.map" 1679564905 3524 cb3e574dea2d1052e39280babc910dc8 "" "/usr/share/texmf-dist/fonts/tfm/adobe/zapfding/pzdr.tfm" 1679564905 1528 f853c4d1b4e0550255e02831fdc8496f "" "/usr/share/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1679564905 1524 4414a8315f39513458b80dfc63bff03a "" @@ -66,10 +66,11 @@ "/usr/share/texmf-dist/tex/latex/url/url.sty" 1679564905 12796 8edb7d69a20b857904dd0ea757c14ec9 "" "/usr/share/texmf-dist/web2c/texmf.cnf" 1679564905 39911 2da6c67557ec033436fe5418a70a8a61 "" "/var/lib/texmf/web2c/xetex/xelatex.fmt" 1680438638 11046058 c421129080a65de742470a82b56f326d "" - "EARIN_LAB_3_RUDNICKI_KLISZKO.aux" 1681756657 1099 5eff8fa639af3de13b18290c7e4b7d95 "xelatex" - "EARIN_LAB_3_RUDNICKI_KLISZKO.out" 1681756657 454 50b668959753031c85a7636eb970de0c "xelatex" - "EARIN_LAB_3_RUDNICKI_KLISZKO.tex" 1681756657 2911 e46de053342f55766dd21ffa226b1f81 "" + "EARIN_LAB_3_RUDNICKI_KLISZKO.aux" 1681756905 1319 29ad114a76f2d8d01aa31fa0dc1b211c "xelatex" + "EARIN_LAB_3_RUDNICKI_KLISZKO.out" 1681756905 454 50b668959753031c85a7636eb970de0c "xelatex" + "EARIN_LAB_3_RUDNICKI_KLISZKO.tex" 1681756904 3239 1c19d3382eb02eca12f28f266179f0f0 "" "example_halfway.jpg" 1681756460 43787 f0809821c60091352d61146053f795f2 "" + "example_summary.jpg" 1681756506 17901 286cc778e6a6b564c8027d51b98a968f "" (generated) "EARIN_LAB_3_RUDNICKI_KLISZKO.aux" "EARIN_LAB_3_RUDNICKI_KLISZKO.log" diff --git a/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.fls b/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.fls index 8abcf0c1..7891a553 100644 --- a/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.fls +++ b/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.fls @@ -498,6 +498,9 @@ OUTPUT EARIN_LAB_3_RUDNICKI_KLISZKO.xdv INPUT ./example_halfway.jpg INPUT ./example_halfway.jpg INPUT example_halfway.jpg +INPUT ./example_summary.jpg +INPUT ./example_summary.jpg +INPUT example_summary.jpg INPUT EARIN_LAB_3_RUDNICKI_KLISZKO.aux INPUT ./EARIN_LAB_3_RUDNICKI_KLISZKO.out INPUT ./EARIN_LAB_3_RUDNICKI_KLISZKO.out diff --git a/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.pdf b/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.pdf index e8cc85894792ab68ea67b6569c299d1daa9ded53..00c9da20e004aa5f44042377ac59af0318f6e815 100644 GIT binary patch delta 20376 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 Yy@!jv=O4g-RZCwF#;>ewfwtuT3&rEeuK)l5 delta 10465 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 delta 10183 zcmaKSWn9!<*X}Ld-H4!sAl))ZpBK>v#}rcx#>QB4h^as80c^>_aG;t%9{x$7SN zi@7uK_TCo~bUXj|?r3~ndi^d*NYB+A5)cq{fBvxldrve867Xj}m_yV(tpMJ->5KY8))m z67PBly2wj{c=ONQ>8spsPmL$|HYMA>=D8ldXj{%_gcLsA`u#Md-T%)`3L{%^ti=a` zt%^I`JAYru?N^BYZptb4me#n;s+8IM)KA`ucjje$+yxAVO#PspG62hc+o&8o0C4dnicRfTtWWE=pKDj&HyUcVRL z7#ut;AKPlb&I$=>^&fEaf7P{5bXk!w;&wy7=i>{3d2m7W=}V=AD?mGY=$rj*jcbGV z?rT)*e*^AMHa8RhR(>Qk+8Py(+dz~b3`XDhW)1lVw%?qO+(t)J{xu=Y$+@c&T(`LQ zs&BCKhJ>6(bYJu#Zhzht(8ySSX%ZhF_Z??;$rgxST^EDQrDf%iXvxR~1r4-b=!eYG zXNr%kP%%TkivO9PjVz8&-C4aqyO@o>b1gDq7W~HeEcLEnY~vHX$EFN;q-xw`6ER47 z-UZsso^}5WX$~AfY5bk(Rod%jK5}X48GZ~JayHNeAQ+cfS&{DOy2Y_U(8zRM!5!Pp zy3P}g-9&Ye-q!{PGOjME;xemUZMSZo_YZqFGk3=Cy+cGbd4HdcZdZ%{krC6diZ@zE z+_wF_McdQ&iYF|0?N^K~Z=Ut_;rg+?lL@+UyJ+Sb@Ru~TtA55@9a4!sJ|223{l-)Z zQvKJ0Fgxd78pT{yrR7k6dXO>45GS?sH>Bj`Kx72xYiWLe4Z zXFBT0kCSt1vpRMYhM!{45yGI|a7};x!#_W{ig47YCx>&LvVD3}S#;y;s&HF-As?qa zsQ2Xmd8Nwtz1#S@L4NL)ZfrOYcKY+B)J09ngJdm#?~^i=4_>y~0A$i%;`&~|-=dEl z69}x#bn)&M%BnG|OBujD$gpKco&Z}i+r?BGv%#>}oaQ)V<(4ERRM70q#MFpTq_t|@v@GYi zBouZ8B`>}QC3~~CCDW*&$PB+AsBQ zibcV|kqVAvo#56#hPYtW0KL*GD(A`%rOD)S%>hO3BoOBc{Yh+b8ym3(`972_Rcg!p z>3RFt4?4<1)tNzQp{NE3=?i2~X{DT%ZHkM)yOD*n${B{JnPTp|e4SQRnM!nvzsIkS z{d7}2^IN5hL8ZA3Q!Pe;r18jLUdLdIGj~@Wn)fdi>=Cv^*vCZ1M6T15WG7!2B)UX3c5}9T1N>`#lnZRCg41VSrxa8JO+h z_^lUf_7x%*07^{?niK;;VfZG1ExcxY%|ts@Y%w50Z-yvUGp_l{&aO{~I`t|oE2);w z@?o0&+DBuK&NKCmNu%)G(geFw5i4;&m}6(v$ghl-3Ct}h9-Dn!FbJ6WU7Eqhu?^=3 z6Pf?H=H?1_4~9ITsEPPy&oG1Zj6p)8ZYl`+r)R$yvd~$>!Ht$+kG%$dGGrexzFhDKK3k9 zqgg#Zca|@Rp8N39@QlXne~7i}fBx5V!umU(-(-pa11&||ks2M7{j2$8GU24y;wm&) z6~>6m2SM1Xznggn7BYOZAUZ0W`OxQ?C$!aT_o5R4rb z$r4TESjeqy9baH2ec!D%bhx>*Gg5R~r(b1DR4&V(%C<I1keKgoa`$1?4i)s5xy)pEGH%8TBf|kOU`Sq4~4H#rw$~*P(`EJJ`R+3tPWA}PNzhdm-w7n@V zEbr8p-&(e^epX^L{syu$o_PH9S|C&nL{g>H)7${L6ahYq3P!UeCX&Ct&$38}ow%Ix zU9x|?iY|gN;6I1d7Jk&j^QN3|RLH1QAd@D)BbJ(LIW#n$RfS8V@bId>mSuP(Bz`q& zrXQfeF)V9tW%_6HZT>;*Bs=}L#`AQ~W` z;~98bmm8E^WH)gYMT;PlXlZ5=A8c0flr1q7Zx0{r=8fzgf6LUAYcⅅwwvTSNGIt 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 AZvX%Q diff --git a/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.tex b/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.tex index 767458ad..2f27c4f6 100644 --- a/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.tex +++ b/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.tex @@ -56,13 +56,19 @@ To print help info about program user can issue help flag: \end{lstlisting} Results will be displayed on 2D scatter plot. There will be as many outputs as user wanted with incrementation of generation so that the final plot will be on final generation \\ \begin{figure}[H] - \caption{Exemplary plot halfway through generation with parameters \\ nop 250 sop 1000 ms 0.1 nog 500 min max (-5.12, 5.12) } + \caption{Exemplary plot halfway through generation with parameters \\ nop 250 sop 1000 ms 0.1 nog 500 min max (-5.12, 5.12) noo 10 } \includegraphics[width=8cm]{example_halfway.jpg} \centering \end{figure} At the end summary of results on plot will display with red gradient showing results from the earliest (white) to latest (bright red) \\ +\begin{figure}[H] + \caption{Exemplary summary plot with parameters\\ nop 250 sop 1000 ms 0.1 nog 500 min max (-5.12, 5.12) noo 10 } + \includegraphics[width=8cm]{example_summary.jpg} + \centering + \end{figure} Results will be displayed and saved in the same folder as code directory for further inspection, with file name containing information about input parameters \section{Results} -We have successfully implemented ES($\mu$, $\lambda$) to optimize Rastrigin function +We have successfully implemented ES($\mu$, $\lambda$) to optimize Rastrigin function \\ +Rastrigin function is used to test optimization algorithms as it contains a lot of local minima \end{document} diff --git a/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.xdv b/lab3/report/EARIN_LAB_3_RUDNICKI_KLISZKO.xdv index 5ae6240a228b450490ca8187f1be67de50e4dc28..e1db94cdb2b5634f5135493aac6e249f23d9cf07 100644 GIT binary patch delta 909 zcmah`T}YEr7=FKf`_XNX=D^PQI;n9Nt^ zZk3?X`mE+vzZf}CY)f&oM1?+!MCJlFxJgY4fV&zsGm*~p-w|PXjSe3VJvTr2{pi^7 zL?YD+@ZeA5&epf4kQuH#6j6E%T7fp-I~9!t6+*v=Ftm#7{Mz=7U-A0&7ys%eYsMOQwC2za z9%9)}qT1mGiA?uyaHZIiEe>iM8bFE}Q)P=foo&-h?(^-s%d0$=A7-DS%08E^g9ABM8;4b8_&H=zR8uu_RYw|J5XAG%YLSe1WpT}?6+6gj z1d%b6Imt6{pgOw(B3_6tf?T#d#U;KbpXLDyb4a_Z39}=`dZsuqlIvo61N9ZfIP6mt fmE{O%co&&Y(BZr2QGtIq{WJQ4k&c@syV>y<5?+Kfy*^CugIXlzc) zaAo9}{Fj0M-VO$q$$K&t`OO(}84?&A`WE*7We_|cGr6%)c(SjmfKVobJ%bTL!ZhZP z>c0&7O#KYplP?5GO|DC4pRAYV%Q$&*ebz^iNk$Jnz*3Tvr(~a*d|51WGGmGC