From c7555dac3fbe848ea4d2a092f3f859d3460a6402 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Montan=CC=83ana?= Date: Mon, 19 Feb 2024 22:58:15 +0100 Subject: [PATCH] Add comments to BoostAODE algorithm --- docs/BoostAODE.docx | Bin 0 -> 18270 bytes lib/argparse | 1 + lib/catch2 | 2 +- lib/libxlsxwriter | 1 + src/BayesNet/BoostAODE.cc | 12 ++++++++---- 5 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 docs/BoostAODE.docx create mode 160000 lib/argparse create mode 160000 lib/libxlsxwriter diff --git a/docs/BoostAODE.docx b/docs/BoostAODE.docx new file mode 100644 index 0000000000000000000000000000000000000000..ec04a7098264233664bdb50f187f6582144f4785 GIT binary patch literal 18270 zcmeIaWq2ezvNl+zHZ!)Fnb~eLGcz-_nVIc2Gcz+YW1G3n%*<`(^_e?o=ggVe-DiJ) zH>)zUl%Y3Nsf-9I6(PwA5g+E8~qK&c4 zo`J%cWrXeo@;lzUcG(#Ui5Zwj2JxrXJfCwYm~l2E)701Hkh7aAnKe46IXMvMqkch+iNQ7=I%K(7%dv_pvps8)uE-PfL3e;XZu|C3rWN494#-| zSIos)dPb#U+Iq?-p`Ydqg^+>{{+EV}fZhs5&loau*ZOq~5@Z!njl+eITJPKb&Uw%?#KD7_}Q$2OMy9{^>nCX;X>BY#Gp);Ib#aIT1&=i+KUR|X%7nKznTaMQx^JUS`=`=Ld<$cw1;rgTrX@WcNk*(e1r+90$IOX)es}ReXb?4I zE@UX(i>HYelE(XC*uhs`)=L8Q2HkBNtPE}bo6kn-KlP)&D;x*xlhOnN0AK?kfLv_s zjp+VINsMd^ovc1vvOk)zKNSY(vmN`){eSjW5kK*V9S^(=>Izu$p!sGc2pQ`@;iskf z0A%FxCU|F9Ag$5uB`ksTBjN&R zSE~@=B@oP%8Nk?gT3%@N8)r_Tw3eO(?3xY;V<`wICfC5W3Ed{FLs!`GxwXMi>Sd5a z%V`0wVUX8B`!Ct?87X84-gm3N@jjpZe~J+bZM8xUJOHqw0RSL==JVN7<;KL>tQ^Jv9>><4!Q9Oc7qgj);(OTvp++@RBss zV?dS}+VKC%*r+rU^FW>%oV_;6jN$S{sE|uq5U22n|1~r`k4fN!K(J*I8OIv&D|q0z zpM2yrAwoYP!AT-sKVe}Dr4l5AggH2UkvdWg&Zp?cPUzRe*d8i^j2NyKn10MAh_rn5 za16dTuP+gXvSJ8|j}6oyy8#a@YIk1Wq{tXE56w__*$~lb@xbHnd|dv1@7X@bS%%KB ze(LJMA}=FVm}beLzCuJLX2KstMY; z8p5R?ZwfB*YPMbJdBpeAq;VypxB9u6UNPsQa-mOB9WZCd$5{M@oA3g(vuE9Xt@! zxVsDXEc?XM36e$*x*le#YTxx_{z9paI<bs^28qqFM zlJaCTB<&xlHqCzTKz>1eIqh4}*33SMTS9A+e_up$)-1pZoKUxnUzF;vLmhaM+p`i) zTdLY1r86%&lM!~}{T)rQu$;@D;L07ZPZ3w;;I1j==cW}K!FNXhz~+QFj@#frB-dl~ z>bq`$Pjaq!d^L&&!zLek$=r34k1w9p-c9B(s@UZ39SSs-0&T&RYgq0iX|-B$7~VC5 zGV^+5$m4ii1POe7w0D<81`_MwY9XlILd?FJ?{5=~gM=Idwmtj`fPU4Hx>8*}Mcbdq z5{g?-Eip5JS4=jZ$&hAUHgGcyC@rrqEs?TfJ}D|ajVqM?dF;K17qG9H1lw2yg4!k7 z?xU&TXY$k^jiFiM9Cj6e{qozEKMI6VgIRk|&a30QNZ| z>Wu-uN)-k)MQHTU$e7}`f02BQA{<(cy_$VYK;mW$a}PDmF61zuH^cno5d#T$DJe42 zPVw3~t>N}>;JUQMzHG5!1zTYX!c2Dr)N1jRS{`dLyS-9QLzyYQ5YeNi9 zY&)Ipg<)HIZV6oQGMYb|_aj9f1#;dGyi0$Gcw@f@yPhf7{a}!j5Cb;~1U{>b{bNQk zU1*skcrkRS1 zO67t5!V7tF9))X70w0!&?;etk8I^*&@-+PpP;Y+ThX(V3(%DKM@>AyI@6I5&?fG~) zR=af3JpSTABcCctvXb>GBWj*x$rxC`1fq-t!Le4`@5QTj*YBUQrRNOhNOYHg-8K(T4-pRk~%fh|2 z`t2R)6>J0+Ejv+2q%v=@z39>vfqv@r7AkKGm7s)gt%D9n8edywW zgkx!6%pEP8?Q&KNq^rO^1fhu2~X~!-B z^hr2*!W5#>mT`H|j>i6cke#qy*l)P!xmz&6-M;%{i+!sLRyyK#OHdr)uKgk5sE4v3 z!|IydUle_*c(!>^!qNzl>>^N_PdFMaFv5EeL0l+C0!{%Qj9E&6A^6>W@_}4$+ ztnJ@doD=Qt8P=)5cEJ~!X(HmNI`xv=`3Ha0P-UT^N&Ui1{yCOR%;h(-eYol!fO8F? zJr_9sIW6p9+D@4-6f(>`%^yYbEWy3aL0JaA@TJaIT<&(6amPZaA5f{HERfH+RT)d3 z8!_}N7{ndu07~Y2mrw`Z($e>;BR;zN#Iv!0zUpnWi=WP%+BjhO#e2h*SDH;AY=N6` z*(Q%xHIKJ_HgMOpB(g-0xN%)+@$*3U=+Yoxkso=sS?3{p zgR5u+8%xGTu@QM9xG>2+6OAE^yFtcUDr1ezUqP(}~IjI{aq| zc=k87Fx>Y3k1QyM+oJW9DT2(Vgo zS_b{FR4kMwBP96N%{$Sv1%fAPOhIq$=;rbvzbsZ!dI-kSejDECo%nKa@5x=@Z`i_s9-7KdL*-n*{g~NYxcpV^`ZjrohS%lOr3NQYWgRqU_0jbOqSsblY-B?3VoKVP2h6UO&!oQ;;%b z^!vyz?lF<1`#Hf;((E4?_?`P0*I>p;yH=@D5w)ajSElVpa#Of5W2{y21`1D^8tXo4 zfaiv4%epvcd-75R#XY}Qg~k&RjIb9rO>W zy!zc>W9!a%=#EJ|?>NFNHb#*lmd0UA@b;vV;<+UnFS@$*mu9f9Ko=me zpw}cxMWW1&gQbUqPwhpNs>l3v!Y55M;Y{`UV#*QAe@{^)otG!WSw|zj#88#nq!Fs zBEdNbofE^#ox&bdwAx>;NhGf1KH`e>7Ol$H1#dL_TWnNjxfFFPX{{>VYLsB z(+t_L5TI&3`3FF8e8=U@lg&1po=-m%tTHV%RJ85#oG}@mf7*_x2950TRU{^3szDoo zN{UtMhft4T)6?e&g^ulT1-v8}wWfmYrGp7?*!Jt3HoHQ4n4AZ2^8S)#tjp`*HE`LN}UgvE0eczVU6Ri`VU8U3>vP^Ys;qa)4-d zt!b!McN!5^K0WQb=@RR?y0gDbt*P5jF{5E)vQDjS)Q{cK(X=A@s0uViWdXQi#W{XY zwdSK*n4x`HUKSM!i!$?(`pjIX9?EQ;{vsY~B*KpL!`PZ~Emk{MbW3EB`WJ|z?k|B^ zk+hfjRA@W)*V5{yM5=Qf>FIo4g0pKd`fXuuHO}uU2s-#|mHF$l%P>mX4(p|(51E>L z%F07#B__>HFv@dx_kt|4GMZS;t{-$0AM2h54;4?-&^95eUOmrBNW2tFTz1*Dpu*GWQ)N2=$gXV-YvSknV^@#95^k>%aBI%$L%PJ$iTL_L0-!P{X*{=yUBvHX3^D zipssDyS;zo=b8y*dWUURHMeW(TAe&s`q>#JA!Rk6u#mM^Lt<*dc}|mPn%DXII(B#H zY+K#7O>k`&JV?YpACH4j`BX1gUJRoOlsEOB0Gh(4)EN(QoJP?4yWlOUg`tn;johO}}ksPto*lMe=T;p92!4CIyHIJSFS{NB86M6 zMLH3LA-E8I;(53N7z`p?55``iy))YRhmcov=qgT;KpcvFGlKa3sA7`4fx`|#40gYQ zY-@gT3cx8-iv83|VfPA^&ZO>2tR`3G+f- zkdURHcPA(Hzlwound7LWTlZ=U%Pto>!C1j1@Mzkw8Wom*9^NLi-LbtksWMz)Ch(}R zE-u;Jwkd;D^B)^Jfo$4$I_Fz%v5m+MKy&4Rt?1jj48jT-%%k@t>}mR%h{gJguwx zyx-0N+c20oL?o>mLT-%1Nvws4qGyP9!$>QNx|Z*Q?{YfcGJcvvbfL&oyo#E2#L0|vwZEF#4a>OU_GEtl>9(HQ%Vggss`D+rp>j6H%xX^gqt z*y7#eR-lF5u&dZ>AXXBVC+$Z+g+@DpLZwLvgTGeyr~1YwGDL{sw!#aW5xFs&67_Fs ziOGV8$W3DrO5EQx@CChvxh(Mw;#s1-TX6i{P zh~h6uSwURVDyXFS3^b^@?gdZOzkYam-p&ZS3?dXco?<15Z*eiik;-SJxM2_*YoH0E znV-)M9WlKj8q%Z4E&{RkHXd9Ys(%x48!2a!$Zb?V0c$o`W-$~(loO5>ZpgqUa1R0I z2%R19q_LCQ&+c!TexRwyWaKVL%9c-~Gh${@pfEmH)EM6~L1gHq*@zoF4M8=3aPOMQ z)bC?cH&ifw{cSj>IVm>uEz*j~_h$+|bPCW2c}w*4!4A zTOoFyV&G?+Pf`0hFvsP*^`i7`6=~ExvL3csXW5Y)Yd5;P=D1JYGh|QQz)xp^CE01> zqpNDUDVwf5bvkA8_K)NMx>|*4}`|%e|Cn_LDXgJf?JGip* z>d)4SP<*j>?eogr)bm0sr;Byr(~0iuP`AdXalUb0SV*lSQb@+op(}Ma*huci=zV$m z`tqtL&2`hd(AC5JkbF)II+X}Olfy^fT|nPE5jm9d%cdH{i&VZ7cvi*@YgpsgE&~_aPbHQsOhAxIn-co4jtr5< zKDUf2#emw)ehm%E-6W|ejtHmS(}$WBJboskMgRd7Wn8$i#+8&<9=w`?lslAdQ9Z3hh1q_-yNx%*~mI z=w6r=qLrNZNlt~wv+_jVZFwgcJ#`g8qv$`!u9-Og!ii6BxhUk&Xu>mgHE(=*D-T^bfjl>rGT?RlN4N^VdCbghJg^zCDc;sN8X@l&Dm`RMv<_Yf7Th^`@IB zcRPRobb$QlxOSe*8iN=p08j+;mvLtDO`Ba-7;n6q4}zJCk|?Fd z;Bqf9KVn1}&TS&5bA_o2ux`~8>n&fB#z2CX=B8yYk0s>D6~ZCwIvtb|?LU+uDl5px zU{ZjfeNr)x54346=vnXA2uXgll2++3!>CHQW=BjBfa!?yP>>uO+!+0`wGqeVZG#*g zq0t#|*rnGFPCFVuAlWzjrEv=^2?;Jl9t*$JeQ290Fa8qxYTar^&ad?_ZQgBf<`m-9 z6x7ZyTW5&jl$})1ZBlS_@%kqj?k}>1@J+PwuYT0Ztv;yXHaDCzO=7v+amAFsA|9Ri zg~{58P92DkCCiF}F2rbK%slF-zN!#6w}(L|C_;csn1UAbGR_?9isgByka#oNXM!I> znfz3pTt14KQ$v|1r`OY3Of>_H#@nz#QRIjjMN+UJ7w2I34GGpEhxAs|AQ>v|&{&kT zi9U&3VAdwYZabr&5(n zkpx~Ts;5^h)3sU&1xG_QhzYYPT1rb+6WxIL{hMj_%V4`{0Jh^#eF12N9S<*1ET;nY zfGxH?DjlW$Vi8K<2$RDPBL7P;fE(CUcCOh)G|MEt0&Kx?W=3lKFnQ^s5CpAtIg-WU zdPeLy8ni864%(uej?h)W$PKIriB`nrUUTdtyj*Y=>_sj$o!4|< zFO3mWg}bX;8rLTEo(F?z#lh1foGFYoXDE30>`O=UA~%YY+wpJxWD`w#Xx@;e5eW^1 zRPF~WZK+wB`f}4(us2ZIwcD?POS?vWN7x-i=z#wFTD>vt+)Sbb}pePWMn@5tlpnglt265 zF2)9mf3Z9nv%25==n(){54~N2Bke__C=@FCFhe?ndaK|e$MeA?t#RSy7qgcur4Ek< z4{;w4yR-y1`;*Ii$iQE3TQOi2V|^FZFuF$uUREvWks*cmp^aw*Y477hBOXhC_-7WYm4>^oJA~UtM`)14lL5{KS z8NhvYLirK>%X;sOj{X=tg3h-zSew_-nVwiQ>s!&$p_FVC#bm|@iNhB;#PG6YMxKpw zOG9O)#Jm%&KyPtrnYE2Zmp#Y(hHH$umAaqRSy%leIBQK>KC4cGOHQX&kOsYYz^7&z zPyVREFTSw+G3Rx4Xz9s^qFKYd-6q$t|IO@|obq!=eAYkYXZ<67dc{9InR50vwhnZL zHulE<4C(q`SNNx3M#M?We7eGe9>mrNe)BZOCqd;gm%O47$n%jv{G418{4Rz)#u|tV zVppI8LuRf>h+x3B`*h&;I(WV9k>zHS6G^@Y0mkjm6;rV#Fe!S(n)&!L%#QE#2bHsUq0l`F_4C~n zj-A*j#GxiZQPPg&s9XiHl7!>`XZwBWYTDWB6GKmq`$?7T+1Vd$hJwoP-92^G%xp5{@f;BW`Wob?O)G12 z9JY=kk(q5QypUU>W8JiGkg9K(8$x%cac^m6v#y=KCURR@Otco38%h_?LuALGBm|J) zJdkgCbR^*N>=6*9n@h)=PzR?#@A2CFU(rMo_#!+-W%97^Y$k3U6t z=Tn3c{wl)ywzmH(!Jk$3&n-i-*Lsy6rW1aN7o&?UY?cKUSY#l^;7DH+&NA;g)xBZ<`G7-H=E3YP(c7(%g6+e~(pd<@*Gm;QhSYF<57*ojY-${h@j$ul2Uq2z)gGHnlA#v70;hV1JOm* zo00Q*@B1k3w=s1pfPogUXC%#uAhTnfBEl{L59XpqYQPbqN4N#L@)DWbDke7Jl7+F| z1Wrt29VGuN=@yXkxAjQI%3dOx=#r5k>Qo!9P4z4 zKAyz^clck50(SctSTBucQ0ZH!&-^FBb|rlZ3Br$S4_0S*&(I9pGkwc~ZSxr#@Tei)c_!%EyJRUL*uxq^#OEHQ?o!aHG%@%4b{ z60F<<-WShnI2T_t&6-bIed_8`WQ$&%zB?Ycq6aq<`+P?J{ik~DnOz>hA$+#5MF7BO z+{*t1tT;HjSsMSNTYsj#YQM^k_vxke;)oCwg7rtiX~)eh(BfTkL1O;r)25{}o)fVguL%oKPy zmu@Bww$Zjfo%+2(m1~}N#+c)X{T)juw_4q;b*DSx=ziF~0jWVOFD^C?uFMxS(sO^p zLkGm)Y>ZlTZgE&I0SQA;@}$cG6?I7GUC=9?Qu)f1f?38VImvc@%|?W!dclT(1{8ft zCXOlHvVdA{M!8W>S2G@(UDzH5xGe~Pl)$@hKYJqv_-I`e5h3`*lmi!b$P zJ{Z(~3HBn0)tG&g-f~{luw5o+)fR5DdqmRq^2@4FktG@x@ql|y2sBL1dpD=|+mPoT zyh%GxU~jYpbS%u~6^G`KTTyq>V(FVjcPg(c<4FD1dxUW=0$W)?Sz@6aY?nu-kwK34 zHuadUsXxnm%QPOQ4`h8u)02RZfo+av$F6yv_j}*YO|N_{#Y_GQJ#DkriHwz1xVpWj z_3mt=WzgY$jZ*rVo2#|G;&GQKvkfXc^MrOZM;$ovGY+)Umf1|mL_ycf<;~| z%sQ%rqaNm`jdWo%&&qRWy;zL&x=aKKLzP0(^2yX7Poch0Eg)krZ)1Qe5TXT@O?14$t+ zp9!sD(HI@PSi>_A-epfYWX^)wMd~_T= zroc&uV@897kGr!M*-EE!mJA+<4{?2z5Q@u@<6zc2gr-5_-Jv$No-*Y_)bXY2?M7F{HwZF)R&j~SU_5#%tZ10Ow@khKEKA)rOAZ%R&VQk zhFI0!jPIB!W1Xi2kZu{1wsE8}ydPS2N+rfF+=;YD*pnW(@&q#uN~t|7X`hG$#mPpx zwX4vmkx5lo{Ev9%lhJWO@s`UTfV79Ch(CkDy=sjJ;f_=gF0FaIA*}Z#ic{V7%m8#o zSz{z$iz-3i&)IlhzDa}YmJ_qP5p%9A3hfhsI8#87rUHwL2#HywQXug&{=n?;`8||s zWG)ooocVi4BRd0`KxWxqnVJ)#p>SuXGmICsoFL$VE(uB-Jr8Lf7E-O!GNsbA`=-XH zRP{NIe#KgHpzZ zJHMUeIybb+`&94Bm~`xkGYhK+DaPtgg1?L~>e?yAI7-Co8VGKART7;%Z486UFFv{T zMudv^_3M|2Fh~#);Q*lgogUvEPg<~X)_LOgU0Ndvh0#JWHiq6~5KskR zD^8S$&!h;cDCl;`d?%PrQY}lgTP0%ekyFEMMYZHF!g7elcGM*DR#r^g7-Q$(7oAg6 zJy_jcwmD4*bcfk@N_SJ%nkaR%s?^NJZnqqDi|Y=-?b?R}j`Pay7xhVhe4`l)^cu5t z36M7Asb#BYPV?G}Rihh=>Px2}&A%8N%x{hu!!pu{V51798QYCYs+kzE9-E+a8~a_5 zPhxq~kY6}+oMfDiyHRsnHG?R#@>)E4jXmk|>p(cs&amDpN=coybxS-Q-AbIq6({)F z63D1H-DK^4{pW7eP|0wle{4KfVSUvaf)(&fq7S0G$q=aYtd7$iXvm8R;yQ)>dtH+7 zy7y_I;zN4dMtP88+;tA3>D=4Td6fjaXv0I>-QXi^moo`E0GrU^zAqLqjS_?(nniS?KNc{FlHLW0 zQiwkqWgs6ksz6Q<6uKUJu7F2|TyAHy96{LU4y93o@IR10^PIFcxukhOqUL>OCzuup zLNLosyEB0Q|AIjg$O(WQ=m-Rno8<~XG{_NvYLpCA2EPjg-TzS}UakPjAN&6h{=LXR zsPWD~DEa>>>ksV2NFVP1Z(IoLM?*2WcJea(wX*CX>dU&U_Oi^IMt5R69Louu^8IM! z{F_c7G{vR=AQrqR>E_WFLX+BD%HtU<)HWD?bsMS21btI{P-KL!Hj_NuIc|}BeYiK4GgMvTYG#jc? z`w6VWXIKQ;`>bMHO(4KqXmA%{qCs#nvNiBru#3f=yeRn09ELFaLa}luXb4n|*@OFz zB+{^QsXVL$tC-smQOky%UFldQ3Ap6DI-W=n@1RpwqQ@xFAauJD|z=LmtewfY_I23H+Up zNqbSFBnV19j{x)uzRJVwdHiJ7Q5r1gtrS50Rr(Kxu!w(Tp(_K5;Qi#5ZUHeb(pZ{j zDIaOjViKhpI1gioY(Ig3p7A{xcUfU#g-NrFz|}-DraaC;t4WD$B62#Bn@vC!a~*=5 zCzIaQU|r5Ec>R<8Ze1a1*;~+wNRL9~SW?CxX_Yd&Wd*AF7RwQ77FtbeR525tK6k*7>Yu`tp}7WgHLu6@~YDXWS`gE{zHT3L_HZzt*>0M8o>ssLWY zlN9d-L!dO7TSG*wrtdD~&FGO@bq$Z^yM_C3DnHWuTX-dz5EFUvaHDi1X`|@EI#mWv zmoM0Ly%ZwTt)9d4f=v%JRo1?hkDET*8Juj1B0H?2rXO-~<7H^{j_&wL<8}R1mP}$< z6**1cTDqjM@t@`GYFxd&)T9eoty}AWk+JD2(fNXI;ivl6hM6rDp_!5y`8WkWF6L9O zt{a`_OIrmMIMKd4dNY3KGK9KnVdK>QG7&p#V|kW)m7c%uU5{v3yP1U2U1tjW&0Xay zd>7Lcrh3t7ma^sPzB*B{>9QmjIoJ1FFIN?g6}YLDecqR=IHGo?Rd<)d<%KcHK^eN* zpHrEgc268+ytZi+T1T4H;2_I+L@K0HRdy_0_hzhUKW&b+K3%!R)qlRY(!^6|fq zWGBAbdv+JCJxDy1##^^f=H$HGa?HSrvqW{O3gcxS`Dl}S&-$1@jEdLdctC~ea@&NB z$-kzx6_T-Nk*f&4L^z6ypITI^0CDYY_4GQMhE<l1a#z4TJxOmO!$1{`#=Ztqnc(3(foi*%TK(sF)gtN&;Ceeh;>X$%MYI< z!sN8tt~edPd8=P7P6#nroO{zci!xhkG?s98?pC(fF)fqjfFDRG?QBiKoTWFG44V2; z>a{p07m)&-5*}-aDPq}q@iGI)0A2*OzoRG6??;pNMxn&7>%ljpeN4PEt zb9wr}umowT$o_3_+_^-T{W_*v-7?!tH)5QrMbBW?*g=hMbhm5QoTVw9#jbUKX)^at z*}gVX&DP4DNPd;}J=@f}&1WG^xh&gcmVE9catTF)M$c zK(`gF4D;Ul;~MW@TZknij?FG-*X|VOM~JGEh;v5)GJf+$_Q2VQzig(*fYJlGlJFidVbfbDJBQGES zydBJFpy^80ehz-O(Rc;*zMXTLV3s@QXC$z6tm`+=&b&|GHG0C9>J3vnUidf&O??Y6 zcC&y-r8X6AckW?C)!312%KOSwQ$$S{bBn3;=FZE#O{-p}C0t~oW<-j@g`st&(DQD1 z+VV@^!&O!`dZVLp%;Z~#rXV}R2TL^n6UEE*e-DmXPTe=q{haNa$OHf&{W)}C?PO(O zZ2##M{6}O=+N$*~D?;!k^eqkyP^XkormNd>N&~)+C6#F?1!WgndaIh0(1TGR3ic0s)28vDD?YQ3_RoJPOM1^>Q*dD3hGWwfm5HO z*E|>kFGC?%zqh+i6j|_|d5V^uJwTXI{8xdR9qAPojMQ*^u(0QRns26BDnd%iAi2{{ zu)vSOj9C88cY{uy6rPfW#R+#XiB;|--YT2CL&Ax06PoYH?G{fokp~#Dc@b$Na-+Lq z;yjXdcgMa?=AO0-d}u?!H9h7`HmT|~lIMl_=S?fYur-lScN^Ocb+7C*z%)0SY17H*Hs08QXWL<=`{=7<`Tl$oM7Ffwy>71-hx)LwB`zebHL zzn4Kvpx-SarV=Raq2&|{eZZ4?T{4dRLKY%!-`AjQ2FN`;wFzEFkGNK+;}&Nw*hF^} zN|3=+wB=TXv$`i!Y?xB6!IUPJ}HW)!Ru>fmx`ZFky(|J2PQ&!gbYJFL?^bCS(q z7(`80wv9uF5gAzIxH$K0KWrV@|5^--v6B`NIw|27Sp;UV2-8c(AS@?Fo5iHY=dA}q z*8=nw`#r?~bZVCH$sdi}OU<|>l}S@t4e5h+P=P^Zg2pz9m1!{dGMd{%DY5{XA?B)x z(L&CMq8rB#S_I&0XD(=NSie@bU^l})cshw83>kda&wlEs`*mW8ZehReqq*c*dZwYI zt)4f<42kd+WnGY{MpDrvhAZiL{@O3)`$GIgT%%3r=Xc)5+)E-k#ETy+`b{6+(ion4 zao)B!NvlQ0Zd*2tfaA>1VHhNdYf{I#x9L?Iy`m-vdeRRYiTicqAo&9r@?{ghSZg1r zwqMRrbPYtj@Nja3_$EPn2iL4+4@ay{wZ)P6*z>NyA+z(BO`_wwTO6(21_AsLHc0PN z9IcWI#nLx4jaHN_n&ama@xyix(SB%g(+jO#fBV}gbo97q93SYlt;q)}L#N9}EQF{* zJtf5^Hi53))i2(RvWiOJc63J{ULUF~kuqA>V?gEU3?#y|{^_ESs;QeQt^%|6$00*j z#Y6-_C0i7Gv8DPXg@rnR$x|YJb9+~4zCZ!bOEI!l&nGV%I{GIsTIuZXa3B=?hYc5(Kv2&gU+j9o4R;ybqiN*M)`Q>u1h z3aTZbPNm>yY=0w@~Q| zuJNY$s?5rXvKpDyAAFiJ8|KSf{u@y+oa?x9 z&|_Qi*v62T13=@0nUuqipdqu=Ov&JkV1ehCl;?qm$?m)f|EzzvvdM4K+DS)0&`HX0 z-t+r8*HpFCKIYhxsl4eKee2}En`6FS42h)AG2S|;znEi_&qWxN^bIWk;jBAL)U-*b z#|XY8JLkpUY{p2&#!OV)CId2taTg>Lwwn7h5nG~Vd zT@Et(N|{-XZfB`JLehBHb^yf*ZAI*4YoStGaPZK^W2mt(7g|^nxH<&7OJTuqfD%Rv z)%zG=@_i%``o^%I3g5z5QhpW0$^*)(Tv`WfqNP!;z5+9=Kmdn9d<8_jH=?P{_E1i$ zJp7sM6O|wCU0j+f zj7pkI(k8@fE*U{=PTn9ILDN-{z-p`T1$E)}$3h3I`3QP`(>438J?#Z~)aHefcP=0g z$&?+m$ND_jJmW%B3I$?O*02v5u{=#FxTMN7fbQzA_=sdyNPZ8ZE*`m$y8!buQcI4a z?2Vtr4~x@cTg`2nZ4RRQxo9j5)v@9n$@B=(PzpCYOD>=IYa6&RYxY_r)b%1%_Lxd5 zJLM7;wQZmIFI%-O?4cf(-NDc-BHnxZ(sF(xQd{CBUS=lxz@BBxB?v|%p~J&We_ws&i0!ic!E33B7`4c zAVasKE=2wIdn}B5syGzn#qhbywcEBgqW6cN38--re)xFfdr+d)H=a>FNuw#Y`LQXU zhBI(Uy?f@m8Rakj&>8D5NX$)%_g!?gX7OKA3D~YD3yJ*cp8E6rUzQb-ll*rE z|Gw10pTIxP*`GeZzbt(4ci_Lz0skwo`!fdk|7}M2-#Pt#8t}h(eS!QZr@u}L{yY5d zVaNZ1&tv=({`Vl{zq9yzz}CN5Y~cNq#b3j>{to|p;Kje-%EbSK|1AvT?;QR;bl_ij z0AQX30QiqUg1^K6-EI3KR}-nDk}6x>i+_;`C#n; literal 0 HcmV?d00001 diff --git a/lib/argparse b/lib/argparse new file mode 160000 index 0000000..69dabd8 --- /dev/null +++ b/lib/argparse @@ -0,0 +1 @@ +Subproject commit 69dabd88a8e6680b1a1a18397eb3e165e4019ce6 diff --git a/lib/catch2 b/lib/catch2 index 863c662..766541d 160000 --- a/lib/catch2 +++ b/lib/catch2 @@ -1 +1 @@ -Subproject commit 863c662c0eff026300f4d729a7054e90d6d12cdd +Subproject commit 766541d12d64845f5232a1ce4e34a85e83506b09 diff --git a/lib/libxlsxwriter b/lib/libxlsxwriter new file mode 160000 index 0000000..29355a0 --- /dev/null +++ b/lib/libxlsxwriter @@ -0,0 +1 @@ +Subproject commit 29355a0887475488c7cc470ad43cc867fcfa92e2 diff --git a/src/BayesNet/BoostAODE.cc b/src/BayesNet/BoostAODE.cc index efb95e6..3b1d0f1 100644 --- a/src/BayesNet/BoostAODE.cc +++ b/src/BayesNet/BoostAODE.cc @@ -121,6 +121,8 @@ namespace bayesnet { } void BoostAODE::trainModel(const torch::Tensor& weights) { + // Algorithm based on the adaboost algorithm for classification + // as explained in Ensemble methods (Zhi-Hua Zhou, 2012) std::unordered_set featuresUsed; if (selectFeatures) { featuresUsed = initializeModels(); @@ -132,9 +134,8 @@ namespace bayesnet { // Variables to control the accuracy finish condition double priorAccuracy = 0.0; double delta = 1.0; - double threshold = 1e-4; - int count = 0; // number of times the accuracy is lower than the threshold - fitted = true; // to enable predict + double convergence_threshold = 1e-4; + int count = 0; // number of times the accuracy is lower than the convergence_threshold // Step 0: Set the finish condition // if not repeatSparent a finish condition is run out of features // n_models == maxModels @@ -191,10 +192,12 @@ namespace bayesnet { } else { delta = accuracy - priorAccuracy; } - if (delta < threshold) { + if (delta < convergence_threshold) { count++; } + priorAccuracy = accuracy; } + // epsilon_t > 0.5 => inverse the weights policy (plot ln(wt)) exitCondition = n_models >= maxModels && repeatSparent || epsilon_t > 0.5 || count > tolerance; } if (featuresUsed.size() != features.size()) { @@ -202,6 +205,7 @@ namespace bayesnet { status = WARNING; } notes.push_back("Number of models: " + std::to_string(n_models)); + fitted = true; } std::vector BoostAODE::graph(const std::string& title) const {