From 64997ea8b20c70ff1c86d270e43e3950b70cac31 Mon Sep 17 00:00:00 2001 From: KaiSD Date: Wed, 6 Nov 2019 00:48:32 +0300 Subject: [PATCH] tried video support (not working) --- .gitignore | 6 ++++++ Taxi-v3.dat | Bin 24161 -> 24161 bytes ql/__init__.py | 4 ++++ ql/play.py | 2 ++ ql/review.py | 49 +++++++++++++++++++++++++++---------------------- ql/settings.py | 1 + ql/train.py | 11 ++++++++--- 7 files changed, 48 insertions(+), 25 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b3af41d --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +video/ \ No newline at end of file diff --git a/Taxi-v3.dat b/Taxi-v3.dat index 141eb2ed5f68fcbf2ec32da678a3b6b8c6b870f7..bd423a6db5c158f72ef6e519a218621cda14b364 100644 GIT binary patch literal 24161 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 literal 24161 zcmbTec|29$_djkPF88|EJaf&8GLbC6$OMDYJxBhRRSOLzF}sNamuVoJA@m z%9J6MA@fY;`0d;4EuTMr|J?8W6iobFdqWnH#Ip zPDYbS#+__e-Pr#3w|1UBuJ$-Lb_*s328I(G+&FeJ>|_jf<1}-_DeYvoU_^JfxN+^? zz1w&R{r>)ECxfROw{55%97X>~=kL_s8ty+$Y+xGdwuk=#6X=Z!aM-u7!Hd>L6|ER1 z2)}=|QgrVew*UBIdwRG6%q;8;=vOYM6nmDMu(;1qk_~yMpP#Ix^tM{}KFFV;d`*47 zQ#+KCS{SL}829ydlB)_LO65%SkXNg7q??`D?7V-sMKms~=KHSmjOzS*^wO@G~ily1}i%-9~e1byGay6rFC|&O*m0a--QcIV>RdW#6d)zP>& zX++rVrjX*HF9m!o4-KEXkb#h9y-IG88&XL=54h#V>; z9ufc%|MxfZf&^egt$*XL6e67N(RoO!CBh~4xRPDyd0*J9({j>@;PphAQhEaID{one zb)Y2O-+NN*r{mI+JXK@6|Kgt|Rq7C#wP6HZpU{;UTR_*{xds|bOG4B?H0fE=q%NPo z;0>F5_FbOC6tpPC(pqC!#$Z&8Y4IH9_jCsX=Q?@N%+UMpcZUi3lq@4kfAdpQyLcY8 zPH|A>9=msY8B9^k;x=)^PEIPe^`*`+J|T$r;?}u&c7`%7?j)WoSVIwwJS@`E)raLW z-}vm6lS;7-!3AIO>Bmgi3@R?U%EGR5OFzz^pTp=q&wgKitWN8}fz~+ZLVN=bX8YRj zMmXVMMzK@U?J5&w+enqkQ>c2X2Eri5ISyK3@Gzj|fba+nbu|Ie`5h&eZ8C2L#wjynA|+4KkG&8)@{X+|VCu(WUOP75Tzd$Nk}5T)T|ly=60 za56*%jA&7jd^JPoeQQGkqz-LyUw?-HliAtl8#DW$Bqe@EN*qqkhUaSR7Nz@pIrZmHZA0&Wq22lClRtQn z-x!_ro^)8Q^PHZz%`elJ#v%? zq|Rp#3|)xuLrjbzfJ+=GT=gcd8>NAr&-Pp-(hp9Xgo`_6xdHckLUq?ZZt&Y$P<*6; z3mTsuFj;RW2C83opBIx5hOV*~6iqaLJAVemI1)jmb@Rti2O=1IN(4pw6QPvP_TE_; z8Q7k7%=iK${rY+DG)E3!z!F6vvsIJ%IwSRVui0AbOGA{lBW_uXNPguV*<}x$?8aPP z?%F)fRgR6++_yM{|3E2tU%@#x&IIbuQU^JdnBnU0$Iet7GkDrjc?Wdxz~nl$B?u+CdfqUUK0YbWfH z;evBr3G5-x($MJ>!f{?!nC|aA|KOS5H6L!!OI#;88O8;2r)ETH^GgQ^thI3Df+7`% z;=nTk@bSo(+KGp_YVzw}>+q1Eqg~ygAp`t;R6bQrQHXV+ zelu23R?e* zb*1KpaYS&-9I`y}0PSmj6gC}9gzF(T=htl`gRAV>`~$ZIVO65Jq&|}O)*okN8y?_+ zJ?x%IN)#TJ+VN8@4R{dAtF150k^nXL?Y`f0rQmZOW>5QG6%!Rg?io(laZ%McRF?yC zF8N6w2TriO_&DMP@?-QkzuwFx3IlK5&L=c|NKJz0w}S}~RgqvQDnoz=srqf|sRXzq z=C%;GN)WP?W6trj3evs5#5Gs8PJEfBtaAEx^z^+MtbeDHi2B+&%$9qvuf)q4?3Sx` zk(4+)Jc_zl2uNQH|NLENRbGef`#dCn<4Y~Z81f`p{TQCQe9iFpH;NI=M)}D~z!Z1PEQXFHDbwVWV9U%HO^Npznu>XExqSsJ9R9kr-eWI@-_oR6k&jZ+R?O727Y_Jin~ zSBLSi$6C^#8|huM0OQaegdf%!E3VC8ADHg=o{&zln??b?W-XYT4N za-Rsl)rpq3N@QT`!gRX`p9Gxv;+E<I5 zx#+5Y@6bCuJUw&vw$n8NB<*rwOvwwc3gU%eNh(F+JmEL{=nPL?Ie*4 zBKctB|`Rt8eqWMScl#5Sr6JR%6ZBg_n9?sc3?sX9%Kpwxgtd_I@OcI#O z?i8V?`68jgqAeX8Q0Cdmbwn1%RFzT;w#kCKbCm6M z;op?jS`n{++rKDpJ%rNDQzq6b=9YT(To2axA;-0}qz(&;C>x02uc6$@ zlSo%DTf%OJeqj!ZVT2eCNt@0vMkwefU|U!TfYU27usJLUACrGQ)2`>IW~6N2%+)c1 zv1~9C$U6ERvpRXPYUtqz=Bm{8@mAClR{hvdWQf2?_x@H+X!bCp_^&DPz1)5j4;F07 z;2A{mp?+V;$P5~<+$vDx*e(m-pElbbbCQ7^)rqUp1$Zb6`L5wjC4fl!46i>Y0lvJQ ztu#S;)oFI^(qx1Ha0%CR8^_DQNa(cddUQU;>{F80>64(>x+3m~74l!*mMS))`^N;g z=)Ji>29^rOT!#e6#H4bhhq}elrZh9-7)L?v8&u}8ML?|ciXAd{B>jqPp|eCGDUX9XMV<}l>kc* z&Azer5#Yr)EL9J!&(Olgz^yT2kSu*i#zIXH%mrVjU&7FOSSEe0tR;bS?#?@Z-jaY+ zRHEXK?td=ERS?tBIU~ESqpC^K{k<(YWSkXR=Undq-!f#+O9JOLWl_A4QB;>lyMHOf zZFQ!r2&CriRGxUM0OJw~n+?%>X6fK7Gv@JNwVpX7r3??2{Gv&uShT<2ZKNC(+^P^I>U1&oi-kzc}|%5+?JuH?eBa|GjV3+GGvI2C!>c z$`9L*&0$Aa4qkiZwSu!SCa&lFj&PRl{F9Gef|;O!#VBMJ#m7fKEI8BT*1e~BBP~uo zGPUl+47$%+r4qaF{}V5l4vO;4o}R;Y_b}TJ9!7CsP)fkIL;YCohz7|I z=-mDf55gJ#iKrEsp$JDc41D-FLvgQGSz@ner*>bnjCOr00Us1UJUw`|oWeloueP2k z(04oTpB)Mhm33p-hwR+sCc~>;Y;c57xyvG55oGRDs-l$?p=?%NuHfOyxt-bmA@0S2 zer%)M%?X|_Rg_sno2B~**C@Ci@8#xAhL6@MJF6O2-zxLWY=#uk-KM!25-1O}H zE*@C*W0Mna83AVBUUyq%DF?qQw12U@q~Cx3c%WH`79YIvd)`iA#Y6GdjYE(Oz? z24oR!K}gIfbHE=Y!uQ$C%(=@%@HP`Zxe@vIHN$daYpsdUZER|3%q#~{OWOoJHR;E% zat~{)($tjtA3mi@U0ZDGsEn>B_=fXnxE9}m!RC&oB}#Yty>ke_`iC#UnUGf>o#wEV z6up*BnV%@#QoU9rp?<9ERc=1xd09B3c(3YEs4OUJ(tc9Zq799GhxT()Wr8<9VqM^% zen?19yoB*nH;75DNti;o;4|NFu`xU>>-XYgGnQ-h`mz2eQe8PNGZcIS-{7$~Rh094 zLN<(Bk-^W)DuK!7{@j}gC)03!GBUCIEu~AjZ|liN{r~*RZ>1ghlX9|<7IxHGRZkXhpI!&L z?7+cYvmdb{!oAjb?!rJycA&Tm#I9OzpeJpd+}2p5v1J? zWBaO!u>EzBt*8PCSgrcL_6N&>)s8Rs>t4vxZI71c4{4VYyN~SA#ds-R`AH(!e+%M6jz(^_NFJ6y#$e7%=mII8ENesj2d+)aBikg#Ipy9)CnC~44=u7HwxZWoX zb@AJHX!>D+Z{&nUB@b*d`h2}Tod?!@Oj`(gPk>X@RS$|@Nkh*Tr{Zf*<>>xi{`ddA z|BT@w^21vM$l!3;s^fs{C~t=S!%>6}TjqzCAe`u?wsq9TO(>o<`R{!`)Q#U}I8210 zO9YweY##WPk(qqj0$uy*oML2CfXcmz@5fUV;GuuZU;U64aWFT5$OTzOHBTxo;((IR z!+nm(4YLaqyIDfTkzf9!H+@?C-~8<#qc|AMiExO&aIo$t4+wDyckMMLLfDN*gCprO zpyZ)4&{jx)d}N;6T*pS}r5K(rIe9~wm3lsYr)AeH7d2!f4RMyI%HmG$Cf*&zb_q$o z?dTuFqMY>7Y5voAdw*RewuEgF8YM7Xp2gIdzpL5pTg1rrqt2}6LQwuwqJRB8et6@{ z;a7t2=duh_*Di%t%sC#JDoiPkR^c}6g~OxCWVP!jlDW8K^|L!f(qS96{Et6#s5MOsdM zB|_^nLMvZ65&XMzoxge$q4&YBXKi2Q;X=6DeQE_6^6q~A8}D=#98F@$zyX(Je_;SW z7i7QI(lBP=gvs9Nx9K=(U|UChq-84kZ@=>Un|D=hCxW7mg!0lJB1Ft-7Uo9rfZ`is z;ud##$Xw5RHU5?yoLz7AtYwe@_hdZZKeWREmHglN%T`m}lQYi^n%6_fW+h5UPOgew zt5Kl)do}J@@wD^sfQqdRWu4{9{3eH3%NdYdTHmm4yPl;8zt`hAx*3$f=Nsvfaxfb# zeod6yG0O~N5zoeGxOrZ=()%PYR(SQC|MFumA=m|DSR|SEpC7~Fx50XN6bD8x1GCq4 zT>VPLc`Dh*8h%2LP{Si%8$9W#vT(V!EyWX`NwaG z@B-IlyZ8?2!;8F|2?ywxU!{PZfAvF!eTMh$V?;PhaZmO(Ai^TMG{0aM5BSb+${I&{ zBv*1*S(^Zo8y11T{=ojsgq~CD3BclP7<)sP8xB?l4~wwifp`DTV-m>zP98hZCYg%x zjm~X7smEBMSdjVA`C<;Z=3hpU6l|*pRZgqR0QZ*v_A@0! zHRU++n@vSRtvT)SFmr{&*u(}8LLK$rzM^xs?sQLG>Jt6(8-16Hl_oEnE!j;{HjQIj zPF}>js0?A@GxOiDt;5*bBK5N~?YywXM~^3BJqwU8b5C#`?WBxJ$XEwCv|;=3hQ__> zQq-C78)RsQkJ50P39)7 zQ2fCc0XrrL_|E0HkAsWu^Q>R{pS=@2*sRh?Cc(Vnv{~Xt5;#(=N>4o}0`vJ7UYcEU zQ1Y5^amGKe}J`=Z3&T5sr$$0l0f%-`?GnhMYQC#=aMlV63%= zD#J_!%S1TVmrDd*_4C{J=b-U_dV^cLic+{u9vVuI+|InG02!SuPEUSw!vXx0N)=J| zf6puV!$H|R%MB-2j1c4N_2nkVCcKru_^Sv|MM?C)UW2SmSP8mhr|ud zL)=i7)%&ThNfEeW*lM(q9IItqYE`H}arpo8)VtT%ZVu)j#J1R%Bz-7lg4}CR=7yJp z46=}tpQ9WUe7Ujn8lDrb?`^nxzyuEgf?HfX_T&FOPmEnjkKvFs*qk3dV}|g7Wq*J- zW_nYS56VmHG99f9M)AV-v$|rPL>PB|Zu>h{0lFgmZXaQwUtcY+^TWL&u>u_^pL~1{Ay-~8CrF`>8H@lcng_IfJ;4@x=`ZNK>Nuv#rWHEx{@EIk_h`C^QIe{$Jh^}D_y z*Rr+`v#q|d^M-6c=6Hn4d6j>LLh$4&mh&Wo$-2v5{SjVaZlE&$+i!_tw{|{;J&Q=4 zr=^9FoxWgSltkLZL|tQau;gXj81}+{cjKh}*gw3Z|Cckv)b@UCL)Lsou6RG@{Z`|) z(}@`han3{1-H8l(-1k1-^&rFh$kl)SZR?YGRxbUon14{CWe@2F<$a09;VywOir-na zhxy_xP}sngu5xODZv2_;+x2P(6#tQzZcGsZNx?8@x<@ddG1y$}_em)xJiWLMQ2{jAM)<-SXQNDO&R0U}gTg^x<0PICi*2 zh*|4pfrB`ZR8uOHgJB~k{WVA)83Q(3T~l5B7ay3`e^8|uPh+!{Tb+IQ7$8uDI#sn! z8nTjy-I^lBpzcIL;lNLX#}BmehKdp3eyg-~PCOo>Os9Nl>*M`7-p#323OpkN$E+8{ zVM?p3Mtm;`0%Ge9Dj>b>cSbqZ8Rezb)C_OaaA^_QVYY$Ka*$F)%;kF`LihLPzuwfc zFOLY0f3jMi6G*WCxnrhVB@q;^*%Z*$|1PzoIVOR=PT%TA{My!#QbKy8VdJd z?z1(o@R0aJfAMT5H`LcI@T&ixczM@o((gY=eh)+tU#p?}=Qp=uizrTZcoLe7WSdg? zqmygs(*I3=t46uyTuX%oN1J_0d;7q*KqtUj61z&NRH)WTE zkP~bkGCh*u-J6oU?c<8Pgo)>CWH#gAyA}B*u7eZmUx>CmHzH zNPx5bet=*``e&b%{2Y9J*il||H0b)RGh|qQ-eUjfVfyv+l(rP(vj7svBf(X-m=ivuW`fj z+={(Z`?|+BmL1{K4;NAg+3?{0*x`v0!VQMGFXk7UD8WET`3{^h{r<*sek@z`Rp%0# z?_rA;Whc^K>`I?|FLbj3|D3?Nnj}TI@nxN5b&w*&sSn7o>?1-lzZDO&1o2<|!^$>1 zHgTQ@V3XR{K{-j#h%+bX=SaZ~hNOJkK;(zP z`fEOuO%iaIW3=A{`SI_w*ST3}AU??d;%)PLEq8tl@j$sbcT#f(%EJww)a;I+-+xwe znMelYuP)nBSlj4B<4fJ@iSXAz@)*$MEvczFf#Djx?$X9d-3i|wl+WK=6?E+)8kg;N z&>5NRUd|ed%Cm#L>Oo|%QFOPyg~sK1-&{$2@iz|sa?zjmysgp6g*183+H5aRoA-{v z%dNDrgxtGz2Tu)U>3){&fI!VZexiTJ__TfV45ijrA!4pv0(`GcCVoXD1D(I#LZ`P* z2>)A-Gwqrje~ux3AXVP}`cFq39E{(6>eVeJxb5TBa{iMNsF*QbwkTWiCvP>APpQ9P z0*&>;kKFK-zvEW)!x&J&JPe_CWD;$f`jzW&;Bs=DcS-@0`YdPhm}mqutQguzdDZo z^XxZjBfoc!2y#UpH+S)@%pbmShA)bR1QO389@s1>L4OT??l!j~d=$IbqF2cc@<#)| zhyPePpMo>b_Ah+phQaiLV~;K>Ku2OS$Hg5Au5_~*gb}^oH#f?G_``M0E*p4YJ@eJvi7h-3{ax>_0Ci$yx75@6O)EARu!mr9%4dXB4{R1L@VKZinA=I`h+IKznM<+wOE%!S4!mh3y;B{P(nbLo8>T4pHA{7b8Vj-3+d z+Vr-%w&Z3Z_#@8vK^Kj5iZ4UBg@|P;!l{-{Ut}|LMf|;_@~#=gYg@)4UryfE|E{bA z=Ul(cd&?-p{L==Tgb6m-w14Bn5mk2hX&RvEG_#T)^1o6+$@?u2^)};!rab89whFp zf4g6e9b!$xb?&TT2e#;@@jndg|Kh}P2Bpi|G4k+jPRlafNdbEB@`ejni7>~V?3Z{E z#k((Z^OVrIy#DTnUIyZ-%5bcvg!%FRL%iSXo7Q?(j|XDPo_c4y@<8vp1+DETSLB9y zPh?I&o+4a-nS0fZNePDQ)a@Ve;9mN7Odta53#9p(hDExkB@E(#WdMg&QNX<{-in8%}`#d?zpw@ z|Hw^OkJW@3k`t!h?`dpkygMx5=7RpNye5&Oub-c~EMHlYAKXk4E{%(l@zh3tr)A3f zej6Gq$k|nW@6i2o3Gt_!W+>IW9+0#C&-^>e1x_DAf9HCKXKpVV_m|cXE+KuQCSd9O z{?dw^uhsj&9*^YSa@c%U2Fdxum*00-ppjnr4F#J|JQu#o$VTMyFkp#ML; ze@~v%hwRG*r#v^4YwGd9cP~3EZi@`8`LS)-%z=J9wwmSIwr^VqQ0lv;$-#je!j$>s zX!*;M%5pJj#520};((1@n-ru6#r0KWioxc*5A7)^f4Y1wrBvf|K1$AGx}1a!Hi%~; zJwNs(zfB(ACpG<96D0?GHte3=Z@~qdpR!gAb!Ae zrh8^T5pS)(rsko9gCcxkkS^%MrfXKO^^VeibP(l88PIBCU@6W;u%kQLei@fOrQx%RN_(FP>L^h5XlL9)V01{o?qMj=mYYDSrb1E*br(cf|PUPn&>&p^BX;? z?CMAJ?$>Ed>_FqPzb&~_X@4>Dv)jww-hPcnrqJ>oG`}9FF5X4+vv2%yy`zOjdgXTu zr|U_X9f-gGv(oA&!b^nrR%lf%5y41j?r$FUv#PRe(hC`gh>U11-6#S>Ox91Y8*{_q z-=uBNT)83Lh2>{<0T+y2AH6??&iTIG3#^@80>FQC{heHKF+0-o-~Pa>(1;bNG5^&``KT1P?X6%0&8HL193Cw2(Lt2+2u>857?wu&#*pDo zpZC-Da6B}{7Voz3Kx5cLh2|cV2i5v7pS~&f%+OhFGBj?z_(R=H7Q|<>93$;Wpmme? z-6_OZi4>fUW6KEF2JHt&!^3h!!Pjt}J?1heP|xlk-t?3UWT=VtiG4T_ z+})v0r3S=7O7|tP$x+oFG$1{#E-! z7#^8TTFB?n&u`Z?cez^ld>#|Ep6y(?IgcIPB~oNkFoiL+Tt6Fz>}jcV%kNgiXLap= z>ERJXgoj&sxoC0hvYegW;_!}!XW4%(A=BimtgLAbO}^fADjuPYC;YV(gyv_kQwx{J zXFe=ovf1_cX1f9G@lD^Sv^=u!9u|LX5nhNoy5Xj^l>l_EElwJg;iOvNO>MQ-aZ>HH zjH@&2`2XpN^Ng#G)gitm??j~Wp=mtb_LpO!q5hXK0SJF^{4_f>_)O$yt^ffpcX&K- zClbKHUB$`gy%YrZ9}aHlkcPq!qfPzgEMVl0TcFkbJ&C#bu;3;$T)+3IL-G--SCVR5 zBhDfTs&3h@i{lXQZZa*yzJVJynNIx8^BbRdNM1d`1@}$L+GG~FpxSifhWsniP#{P8 z5dU2gEcgACPO&Dz&h*t0H2igMArxhTE?N@f%A{oZBQZTPQ3Q%=JS8H*a0K->~ z{LQ0owMY(%xI%yftG29i{Yrqx3H2{O%?QB2`Jkc1N92Eeo0fx|FOFOFV`Jn#n*(<% zDb|nPkQ4o?C|O_MPQ)TSpO?|pv;7eHpFQHRcU5rNhV0!FytczA!j+EJ_)a#nfwpo$ z(5(PPNZ^0-?D=E*?a{K|uvtYVRIh^#Myd}R%c1(s#@!cvE$=gd+<>qLqlp3puFJV* zZmR%>8L1Ca0*G)7bNs7c@8OTTmmuCov+fyID}*~a-u?L-Hz)xyaW;vI`qFUt*%8bG z@w)3PTmIt5?`J-8l&5n;_qn95xX0XJJN?BH+NGhJB6-*I85u;~!%mWliJ-qB`0xCx zvL|o5qPmK2>eDsOQAC(+k;}(A_>vf`(9JihoxzlNW>KKr{- z1{&{k+`{mdm)K@dMW&&**;4HuXo85&Hmk&!a_h7s{(y z3+QlPaF&Jt>JC+@Y;sd9G#-}8Rh=WWd{fIe)A2<#c6M#|LkTF#&h;ZqG~7B+CZubh z!U|t;?5R<+w!kNfrbpke7b71j7;Ez-c9ds2`X`^0&6<8Z)_IC=Z=yI6gf0H#-K;yg zX7<-K4~)f^R+R?xfLji3>x0$O5R;pG3n-iQO=T*2M{o1YM66AjvWlDygNA*E#I5YKpJEdSW@{#iEYn*T<;^to- z)>Vh~PE|IXaGTQlpiPJqBBt~>QzNATC-Ry+kU)mOxU;`cyRZ1OTh5Ge&3X`_puFqc zetyI|Q~ex$GF}nv7kgse)BkiovY=N zhFt+p+FTpBAT#_w|Ki<1@9)_%PH?VP;Tf^QL6t#9sB{4tG>r2TCq9!QH=S`(?gYZA z>?TC!eiFb(-01If!p7X!yf)*3hyAOM9L`2OlA*)oH&gW6-}+9~n~%-gHe>lZUfC(jQZrqH?!G!tY1j8=RntQY*Xsn zgJ)^D@T)I>46jdPk6G8=K8A2LN2{O%Uw)uEpG*Uu9~G0>+(4}PT{OQF+paGib`x0X zr=D%*yggXf_I6)>R44dcFk{|!locinCX|Qte`8x8hxlJ11r{DCTs-Zqd71#0#%4Kq3o=B!XNf;*F9Wgt(WroUk0br~q|4onw}Z~C%-{RlAV^A? z2y6d*v^beego<$GuLcwuz`NYSSv@4f=4;G8+VNZ<8~Nj}|L`p7@TKHp9DFV^yEr({ z1@B9BetP^6hu3@C?g`mQ!|Z{o95%$eQcVB$cYW5B2FWTW;UFQ^-h-W&17iH+aXybl zp#OX|PgIRKWM6+S=7;oEc~tMOeTYA3J?2vO4%s7*w7@o+e|sZ}gmpTQVM{3aU?B3( z8R-0Fem6)9kVbj;@8>NPR`EdNn$TBvUOe#Jl`Wmd+vM`}dVWh-20V-YSf;%d1FeBw zBi3;Q(9QghC*`#(>y$RCBkbC^DslB^0`%s7?TOZsg#L%#d)BU!gWs}u>N;O?f~0uu z-|u~zX3MH!#Q`mMcKf6aal&PBN^n}N0DR5s>5`%GzI}>?=DAn!v$tw~yE91y=&aD{ zNmby1j~p@vx;y2dtS`rT$4mO{uVCHxBWikMSb3N}=pcM(pM1Aj_pTvqUSV|NS5PbV zYV{?jZ4xXHZV~gwSCn)PUDQ!;KoYVo#_w|Lij;tZF=n` z`;!AIk1nJYIFDm7pc-)v$$K(otcW9b0xNj^j=kJz2rJyd&9pjr5j*$$Kv=07{qp-# z|FO0bsvBJ90V%KPX?<-@f)w3f`8N=sPaRtlzmuo{t2rCKRUedriI1y_wxN2~WnA*t zboKj}&k--@j8mXPBo~ml>kXf*CqtFtAJe_-q@eoj=YzqBFChCrz7_9PHeG$hXYN{5 zy_*$?>^}3zgY|1=K-Y$!d&53yxL2zrxYmgPamgYi+WFFu`8hhW8r7qY=CH1=M0x&= zmtuUHg`gNaWcsdx{`!Thc=x^g19(8`>}v^+K0F+du=%T3zE4m)!~+Rne&W%m)4#}I zAo_zv8}aSa1~)(H-Np$U-2UT@vJFI2&wgixJB;BmPh{A^q~=TAiPMr$!~d;s$8|E? zPTY6B@-ZF+4s`yN_fDA_`KQr%_+EBG_7&of?LO9iVl&F8*UDXdyPYTomREV*JnpQl ze^063ouwNHPkdBZF8Bd5Qz!Qq6o+Yfr#;F>zeq8;l0((>~Cwh|u&kQqz08TD15TVK82o-C!0>VTH> zxQ~M(J5BEnW3P;SnB>+}QwryO#P6IVgTJ7JwiX(TFHYsXwpz*SY`XCv^71Ess#4E4 zmK&%(VN2L+jdB$sAf_y>dZ#D^Dv=h!-qe-(3%!Gi{=^Pq40TWIu5?sUmKFksrVzjD ztJ;s&eU{{Z{`Qq8W{tG`Go`ArRSoG01-*V{n!nx88Xhr&{A}$G>V4#!Q|MIB3@xRv z#_xKNAo{^Z*KJxPkh@`I6^!%@uhoga@u7F?TVbQ~^00{e%&ymxFZw`j_c00!p3+Qeb2f#d{vrMU~-uqpC$na7$O|%1-2`204!= ze4j=B@te7a=@_av8T#JMXCVV#BGT*A#bjXyUn+B-0}nYb{^R=u6@K|cP2>ilom@I| zSMd;0{rgZ}tpt2+y4$!G^}C?=dxd1!tN3BXpBx;YP78I#L;q9VW7{GSU&^p1|LInF zNE2t$*@OB8$(Ts79_nF(y>44S(s<7@_IorO@>pRsMmqY?5q9X45ofnR{>Ev?n_ROO zC19U%6{X=m0SbKZfAIvinA66Gk^JUwZiOsV_oH=dX=F!|41_WVY`_L3LFs2yhWH~A zaG%S3xeo1veRZf--7ONlI;`<`{heJ){mp!2pt|U5X8HyCm` zeHjd|UMJ0rAUl6oq?6Vs=TecSm{5`=_~q^}6GU|buUz_Lz20*`@2P%9@g+`B^u1ZB zFvbB-rduhrI&5x-d*6BnL_mBj`?2vxDUf5o;2Zmy2|l`i4{GFKhK!}*;C(xp;7sq{ z)@=wM`N_@ng>ac4tfISA4%+hrUd`jnm=Mwj{vP2s00$e^xt{$h$q8>${;R|O@@U}2 z;T^K@gE~K*dXE13Bhw#VW#85>VO4AO&b2L6P{ckvG~!+@VJ!jpqzfran3nRr=?4?s zuy{#KXjKNP&$QTg`_RV`%G`AXQz7}{us*nREzdCJxXZy$i<^ch4OBK}&H`32t_aJY zI6i|VapoPUFJlCvb!3FP?k5Vq{g02`B}O>2sMpJ&F^fHtoMWwgOag5~^_kWp#ACFR zvl2TtPmwx2ah-;Tg>%%{mvZz`sts~%Yj1H=zb{-?eL`i0im-ju4~dI(&Z;GxZ z=sa^KS_YmYvO@6HA3QrOS)q)#@^bqbJbb!#e*gtc5OJovw@w8Qo+a*Ajr5 z8Dl#k2^ko?#l`Xl)p=g(_mMc@^ohc>FDzN=_6$Yite3HK$Vz{(!3VoUJ98x9(0AW@ zm0TwHgyWaHhU`&YbIN2Ks!P^X)sE6b_|meyTHuN|dcIzPZhaLSyak7vd0=}ST{rNe zd=C3;O1S#9Ijr2@^!+1bFPC}UTYR-A&TfX$^ws?U93gyh?6e|(pIAra!E z=Hp|Ky@sC`{v6*X1DI56zw23PxaMV)oB0C|wJf(B?9lnCzpNd*YYq?bd%U*le8a>3 zy=e?@ctk+n#POioDiLU8Zkv*rME$i!Jo9M!T+(jf+bX0_@-DR2&W{m+tw?i0&_Nh% z@RxNxPtzYSL<>msUtGiaFOPdq|LZqt3MchKQAqf0TTW`-@y$K!#Dzd6@?f6+<{66o zo&v>}XnmH~;m-S~CBuGmSYo+%J?_FBw(&DVxHRg2rSwJ2F%a!bt&ZOXTAgsFUgC#2 zWIwyAw`b6<|o zpcV5F8LUSfW+XB>fSOUX!xQOaFJ|qyHD;WUzdy0i5$RFg>b_b;sD*mB^LuWO3xV*J z?4O({-dWRuAJ~KTm+gJ~7M&eD;2JJo)QsZd8vmJ3#m!O>#ko^mi5Jz;KEGBA$e%xP z_FzyZ>L=5ldPcYejiYIr=jOMQU{<%IyY7@2^!SuqS2Lu4f0cax9MITE0*<4cTA6D| z@bg1FmWIZ4&u#_mM!fH@s}ed(QQy5gF2WJ-_R2u`=wb*F)!i)KJr_wq?@vhC(M=n> zIBRpf?NGd;$r0dfEde$`H9EDe(!j)`7y0!h7dY2se?N=X=U163YpDnqn$OdG=T98e zrldLd?H7g)Q{3_FJOX@Dw=RqfC4y9Z#9usiSDV{GD`Y2kk|bYD-9Y_H&Rv;Tlpupj zfUWXIIr{Zg{|l7_aW@_~i};YVc;s3tA26Ukd7F9{*#B7aKydG4w=FudP~u}8YJ>VT zyk?p0RuAL>;|&rUX?3~QJ*yASgz&&_D#3GPoCjLF)qXCdqq=VQgaSJwX(%mz(fXhm z@uk0wH%B4;Ts|3?6r9WjhozeZW8ZMWY{(Gmo+AuR>i23@Wo2NmOnP|;FX|T*K%Cu$ z=Fj+H+jX)Hy@#-s0v{_8CL>4nYvaYBl3(nX?Hc;|&&z!-G?KHdTu!{h=Kb%RKYuoY zE#LpoUmL}&G?kuBn=N7X1&2hA_|IbM>)!p*c0%`OHKI+&XR#*p=E;_@xqo;RLHdh^ zw*ebWP>Zj5y_m!#3oPcnkGEpwm$sS=X#K|G<#HYTdM7bMqeB|=pV=VIcVEeQDdg8Z zD)`v*c@i7A>Kv5IF@jwJ^K0i4CNX=(m$jn(lmF&l#=YqEC%;XfAvhy>J-E%an})+C z5F>|FuMxqlz&!SqAHuQB_Z;$6lmyQC@=Z^2#2`ei;vnlYP6+)R!aR@ics8a9A31+; zLMgF-*uaAmJ{MY+Oo{V?SBe13eY^zJtS&BDgZe0HeYXgr*)PUb+*k0=kzL28yxH&Y zz_XHh@eO^#U{w4}xur+~3=71rZcRt|;!oLs^Ur%#M5FD(5NVhMI0Wu%_m>JBn&%-pRxw`6G6q1 z{XI302qV#cC&Cauu*Gjkf@Yuk!(!Sad86kP!!8y^*e;oN6 zahvPT+~2Zyf)!j+@;Mf=^#!NLBefErp~G`ory*LFAJpmEz=74;HY zhc{BD!NsCbdN}gdK2cF<9a{I{Gs3rX3X4=}eK)hV-O*1?-~oq?^0&j@@Ia;Ym^Ra0 zgwOL{+W2&h2;Kh1vYf&x9qA3?&6uS@w!eek2-fj5ez#-&Ft*Aq=wXG|a-XSDZ18Nt zuDkwo*xdsO@4PMo%v ztZx17BQFk2VNO@oaXAaWF@q*Ymn}+D|KxGGkDXrruh*yYC$MjY2S>DYCa~q}vi$6$ zeNvMc$9PU*d&Uwr_F375jWv&6#iV5lA`^$?wBd%v_L2L%F1%}|Lkzws~^K*?#T5{CBl z6J=wg0x)&|!^JR8)X&NGKR!t0(U*gI1|*oO-+;YAaoLHEzO_~ecYcUlRK@+0fe&Zj zh`&UAT5mII?meN&1NNa&wFl6c-%Sxnu;2l5%&9xEw?*OD!MukuL}W|o{O!BRmRVQM z16ysp?yX1Xx3gTRYUThBBn#ixQV!*TgTGe!9A)Q2as4^>$1SLD;@WH*_d*WXd_6jK z8l6v1g}r(w?Kt2hxhZ{V9@Tf^*4Ia#6^3z!z^B2X0+1cFBoKI<0B&8!*&m?w`DJFs z#D0(f?Hi-lU0zK9>r>&EtC%HWXP0FKyD}eaJaYL4&jS)<#p)(Ip?tTezM$BqCnN|I zTZ+$2BSH6_*^=8R&y;e&+(Z2Tpt4oS3OoE@AXE0w^wobF?)viZeG&EeOqAZ-2sptIOhuy3EHB@)AA5(3($mVBMOkTNig*Ds&F( zCun)NK4gNu>t2j#py!;JbOwKD&UA65Bn$e*Wkdl~o(70o-?R{T}hEf2n#49#J$ zH}JG)^Yvqb`a6nmgvi2<)8VmTHHTGl+zNOQwi4G6K6L2q6=bJwS{vxHS9*r>*fUJm z?xh4=IC3;mq^Oc&wsuV|U&u-yG<~yt@%gWF*yxUy5RYU17!%jEAA!eFU$a%LXY){; z@oa$TK)EVk)pFS{%}Pm-OwpGbx$K96sC(CW(U4e?vi{5WHM34IhtRek6^jB)cb)`vTtxmbuO6eOWF-fL7RhPFqx^t2I*bPn3BaegvX5dm!Z3K` zsv`Fb0yH`O(Wb3WOwv2qXPpE%!uP0N`622*d;RXkhDzi=#OBGi{S*VosU1y%og~2W z2O_Vb^)|3r_%t#^f+WKY4Q8KEyl}R3e-kDN{6m5g!>aV#U$Zp>JFcPiPf89GU5ong zcC^jSIiolspr|3u9j$-p*Vf{}9tkMd?`YpYED3$K(Zz2~*x}dyt4H8HJ7|b%#;J=V z9GbE1f;hrE-VvPl)tK_b>dAyMgAFoZplGOzJHLeGmBv&XyDeg}=O1MbOEALS(o<`a zP~T&l1F8*IT=?Ku)5W#qEFloTC2ROLk{#-Ua;|Is;edx<7W%C0IN{KXlpz{ESXe+9 ziJn6J5TdkB8ye8RzYVSZmjb34z`(tuSxlJ`+DmM8az_|I^0euk+hQM9SD0gZ3*m!N zSk|UR908X5K!zV3>eZ-3xO2{h@Lkp~Deg>M(@Wn5uqMZX+cy`O{-;MqF?MNvD%qb;oypA8LyY@X;tXQOs=Lo4E soB2)Y70ixI(#BKyl2}A({cQh}*HLUdF~O|Qu?KU*|9>kf 0: - sucs += "+" - sleep(1) - elif rew < 0: - sucs += "-" - else: - sucs += "." - prevSess = frame['session'] - cnt += 1 - rew = frame['reward'] + sess = frame['session'] + if sess != prevSess: + if rew > 0: + sucs += "+" + sleep(1) + elif rew < 0: + sucs += "-" + elif prevSess >= 0: + sucs += "." + prevSess = frame['session'] + cnt += 1 + rew = frame['reward'] - print(f"\nSuccesses: [{sucs}]") - sleep(.1) + out += f"\nSuccesses: [{sucs}]\n" + print(out) + sleep(.1) + + except KeyboardInterrupt: + return() diff --git a/ql/settings.py b/ql/settings.py index 137a2d7..18a9db5 100644 --- a/ql/settings.py +++ b/ql/settings.py @@ -15,3 +15,4 @@ max_iterations = 1000 # Render settings use_ansi = True +use_video = False diff --git a/ql/train.py b/ql/train.py index cb0de74..454205b 100644 --- a/ql/train.py +++ b/ql/train.py @@ -1,6 +1,9 @@ from . import * def train(training_episodes=10000, resume=True): + global frames + frames = [] + if resume and os.path.exists(gym_name+".dat"): q_table = pickle.load( open( gym_name+".dat", "rb" )) else: @@ -9,10 +12,12 @@ def train(training_episodes=10000, resume=True): episodes = training_episodes percentage = episodes / 100 - frames = [] suc_cnt = 0 try: + print (u"{}[2J{}[;H".format(chr(27), chr(27))) + print("Training: 0%") + print("Successes so far: 0") for i in range(1, episodes + 1): state = env.reset() @@ -41,6 +46,8 @@ def train(training_episodes=10000, resume=True): if i % percentage == 0: ftext = "" + if use_video: + env.render(mode="ansi") if use_ansi: ftext = env.render(mode="ansi") else: @@ -73,5 +80,3 @@ def train(training_episodes=10000, resume=True): pickle.dump(q_table , open( gym_name+".dat", "wb" ) ) print(f"Q-table saved: {gym_name}_stopped.dat") exit() - - return frames \ No newline at end of file