From c6034827bc3408bef53084294941720b5bf3a36a Mon Sep 17 00:00:00 2001 From: JQSakaJoo Date: Sun, 15 Mar 2026 16:01:30 +0400 Subject: [PATCH] Add CSO, 3D visualization of test functions --- .../Math/AOs/PopulationAO/#C_AO_enum.mqh | Bin 35628 -> 35992 bytes .../AO_CSO_CompetitiveSwarmOptimizer.mqh | Bin 0 -> 12926 bytes MQL5/Include/Math/AOs/PopulationAO/links.html | 1 + MQL5/Include/Math/AOs/TestStand3D.mqh | Bin 0 -> 45990 bytes README.md | 1 + 5 files changed, 2 insertions(+) create mode 100644 MQL5/Include/Math/AOs/PopulationAO/AO_CSO_CompetitiveSwarmOptimizer.mqh create mode 100644 MQL5/Include/Math/AOs/TestStand3D.mqh diff --git a/MQL5/Include/Math/AOs/PopulationAO/#C_AO_enum.mqh b/MQL5/Include/Math/AOs/PopulationAO/#C_AO_enum.mqh index 908eadbfd8691958234982a744d777addcd737bd..b933a6047cb38fa5e9364dc0530ef0de4e456619 100644 GIT binary patch delta 101 zcmZ28jcLYArVSGq8O=6NWIW5w>dX+#;6FK9RC4kX35m%EY*{9scAx?V1qOx5KW&wP>~e-ghN8(IO@x7pMK+t5i0Cr|&6r$RtULKpM#^T7 diff --git a/MQL5/Include/Math/AOs/PopulationAO/AO_CSO_CompetitiveSwarmOptimizer.mqh b/MQL5/Include/Math/AOs/PopulationAO/AO_CSO_CompetitiveSwarmOptimizer.mqh new file mode 100644 index 0000000000000000000000000000000000000000..8a12ef047bac315ede44fa5b7c6f758f4d9b8ac8 GIT binary patch literal 12926 zcmeI2TT>O;6~}j#{g6skUZ#A^r6s8;h%vxHMg|oHMvbM0iBwscqAUvmM--6&GEU6o zL*#9q^C9vL=3^!K|MohIy?1w?Gl!9kJfylBy7y(>Z+rFm&%Y>T2!1aJ;2~um{ij5Pl9-(DU~WUdF?OX5Q)k=9um_$EiR&k`H zZBMagTU_`BZBz2_UVmKCSZdeKBaQB87JAEF!|_fJz>5?NpG%^N*LIe8*_H5_mAb@^#LKoKOf4N? zKc5$T47S>m8{=?Xkah)QVyH9{C8qzjW}UaTRCDeUoRXub;^=jh`dv|jKcIVZ!LIbq z+oql^_TX_Nx1U&OE_YRjqvXuu~eH3N&W#kG8`)Z)3mG~el4|Jn}e5J$vP*J^^Nt~Y2 zJ}ma&N?!+uen(*>+PoY zGxOcKI{akJq6`%iwhaYN#h&bvNWLER{Nb{n(^E?2ktohDEHKGvu|i64x+saviQ7BX zRR8(5-tud$5gF_7Tg~HHuO)#^S&qqtJxv;3Njh(jp_Mc&R5PMrO4^yL?({V>E8K0` z(7`D9He}1hH?k+xl=zaCla6yf^XEbMO26EX)se-lHol(Zc|#Jurh7(wE{Vsh)qU}M zuliJcUW*c66!$&7-O%h!-Pd&gA&!}3u*9YYlDtcLc4Kzf7WW5H*Upjo#T`Li6a@(@QkC^qQ zzoTL~S=E!^+tX-RPFe*G!{V{R*9@wPu#tDi5o}vtg6uEIYYycL^gTEWY!;f~+)>t; zczHf*(ke$2cN5Y7OW%Jcm^<>stww~zew($;hj>R$$TH6x!*W8ZAFeA)-KqYhoaWhV zN;%FeEoRj*&$C`Mnmfaa;K zod@!&cNkQwRM0M0UTus9A+J4va&ibM{u&kK3C^i-omozQr0iuC7AFF#4f1x?C=@)xDAcknFAZ(jhvSAXyX@^ zb;*N?E-IWWB!uv+}ptHvp^)j(@~i1@TEHZLfl|&USDB<@OedCaR#8m zJzrycS7nQ={4`pwDl)-sSDeNx6eB0j2v{z5J109g=^8GRA5}CJ-hJ71>Laz~NTp)1 z!OI(REH!O2CP~+Jie{&wABPI85;7y}y4OS-ot2IL={4!_jYc1aKdNK=O!}g)wX8VW z)NQW4GGadH+pF1yTQzw7;^eX>m{vDpgXT{Y$99ArG&@kK#%uEMEG!8kQokgsm%@E@ z^ByR|{JC#Qthe1R7pQMnxdx*d)7f1{{X@OKIga@T`K(neaC+8gvWS*ZYZ1@RgY$x-?;rY0E}K;xoQjz! z)!SV)T}~yoZ$6)V>HR(bG@@|n$sSG3j`3qUig#t}eEnICr=anH-rw}%Q9Zoe=k=1) z;{N}CFB#>G}))-PzK^_hCHuX3xw&*cGx8*}oiIGkJd}s#dhUuf=*CVD^e9WcBMtg%#L1-7TY5X~ z^M>cn_m6xIDMeGP$4_y2OygWf|D+sS>PKVqgzu|xQgu*5xq5tlbU5ksu&la=uk2_e z-?gFY0!uB&7@3OW_BXGZJ^ne4vWgkTGjyj)ll`T<7ncp2zn=xu}Z= zr=_h!eg%|t$QwG$J4BpMU&=~2={uY<_D~!09d|u?7|>F013PCMSSRz5*1J6IqP99YK(6&*Hzn42XXSqPYHb2 z$uTGyV?KlwI7^eQkfn{nsf`ks=>40tppiMGY~1kWzvb8{$Azb*)!k3nb$Q_r)+hC<6i;q<@#wT#41%xbe2VEM^zJvPNWcAp zBmB&%=+5uohre6GrA+fLx8ph?nY_`_rB?5m(Plq-G(Em8^jP8?EJ2G-IZcE5+EA9y zStq~jj5aN`v>3B6$7PbsH8qS%Y}`3)@3cryW#T<_st+PwdD>=_YI;rfjx~v*c-kc9 zTmD?p`;xNpN|7(qNynb-FIY$Eg!~w5kUaNUqscV$!@lw7zd0dur@9PIhxa17DqD8F zJC0lJOy#u@-TG0!cjOdNDfTTY?oBp27*BahAR3UR95=lJr-Z6F#k#};-s9Qeg`V*e z{|+{xr<3FwkAp~oNJ&lOk;lE%&-mbiKKmVsW2P=c#%Z-x)`!`zR*c4^Ntau>vpwIn U?}a>g*gocMpHYz3o>edYFQ)Py;{X5v literal 0 HcmV?d00001 diff --git a/MQL5/Include/Math/AOs/PopulationAO/links.html b/MQL5/Include/Math/AOs/PopulationAO/links.html index 8f229f1..0c4c7bc 100644 --- a/MQL5/Include/Math/AOs/PopulationAO/links.html +++ b/MQL5/Include/Math/AOs/PopulationAO/links.html @@ -77,6 +77,7 @@ SRAsuccessful restaurateur algorithm (joo) BObonobo optimizer CROchemical reaction optimisation + CSOcompetitive swarm optimizer BIOblood inheritance optimization (joo) DOAdream optimization algorithm BSAbird swarm algorithm diff --git a/MQL5/Include/Math/AOs/TestStand3D.mqh b/MQL5/Include/Math/AOs/TestStand3D.mqh new file mode 100644 index 0000000000000000000000000000000000000000..c39db55cff215c871ee809c6493f620689272955 GIT binary patch literal 45990 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