From 1edb5b7e4e462c83d1ad3ae61ceea8ab87214b8d Mon Sep 17 00:00:00 2001 From: yfzhang Date: Thu, 22 Nov 2018 18:15:42 -0500 Subject: [PATCH] more efficient; remove pyc --- demo.py | 2 +- loader/__init__.pyc | Bin 105 -> 0 bytes loader/__pycache__/__init__.cpython-36.pyc | Bin 146 -> 0 bytes .../__pycache__/offroad_loader.cpython-36.pyc | Bin 5399 -> 0 bytes loader/__pycache__/util.cpython-36.pyc | Bin 1383 -> 0 bytes loader/offroad_loader.pyc | Bin 3723 -> 0 bytes mdp/__init__.pyc | Bin 151 -> 0 bytes mdp/__pycache__/__init__.cpython-36.pyc | Bin 143 -> 0 bytes mdp/__pycache__/offroad_grid.cpython-36.pyc | Bin 14894 -> 0 bytes mdp/offroad_grid.py | 6 +++--- mdp/offroad_grid.pyc | Bin 11545 -> 0 bytes network/__init__.pyc | Bin 106 -> 0 bytes network/__pycache__/__init__.cpython-36.pyc | Bin 147 -> 0 bytes .../__pycache__/hybrid_dilated.cpython-36.pyc | Bin 2271 -> 0 bytes network/__pycache__/hybrid_fcn.cpython-36.pyc | Bin 1728 -> 0 bytes network/__pycache__/simple_fcn.cpython-36.pyc | Bin 978 -> 0 bytes network/__pycache__/simple_nn.cpython-36.pyc | Bin 949 -> 0 bytes network/hybrid_fcn.pyc | Bin 1932 -> 0 bytes 18 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 loader/__init__.pyc delete mode 100644 loader/__pycache__/__init__.cpython-36.pyc delete mode 100644 loader/__pycache__/offroad_loader.cpython-36.pyc delete mode 100644 loader/__pycache__/util.cpython-36.pyc delete mode 100644 loader/offroad_loader.pyc delete mode 100644 mdp/__init__.pyc delete mode 100644 mdp/__pycache__/__init__.cpython-36.pyc delete mode 100644 mdp/__pycache__/offroad_grid.cpython-36.pyc delete mode 100644 mdp/offroad_grid.pyc delete mode 100644 network/__init__.pyc delete mode 100644 network/__pycache__/__init__.cpython-36.pyc delete mode 100644 network/__pycache__/hybrid_dilated.cpython-36.pyc delete mode 100644 network/__pycache__/hybrid_fcn.cpython-36.pyc delete mode 100644 network/__pycache__/simple_fcn.cpython-36.pyc delete mode 100644 network/__pycache__/simple_nn.cpython-36.pyc delete mode 100644 network/hybrid_fcn.pyc diff --git a/demo.py b/demo.py index 1ac7ef9..8f9cda9 100644 --- a/demo.py +++ b/demo.py @@ -77,7 +77,7 @@ def load(grid_size): sns.heatmap(r, cmap='viridis') plt.show() r_vector = r.reshape(n_states) # convert 2D reward matrix to a 1D vector -value_vector = model.find_optimal_value(r_vector, 0.005) +value_vector = model.find_optimal_value(r_vector, 0.1) policy = model.find_stochastic_policy(value_vector, r_vector) past_traj_len = past_traj.shape[0] svf_vector = model.find_svf_demo(policy, past_traj_len) diff --git a/loader/__init__.pyc b/loader/__init__.pyc deleted file mode 100644 index 455274693f9286821705fa3fde8631155d8a6dcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105 zcmZSn%*&;BU{_Q!0~9aXQj7HC<1_Oz cOXB183MxxDfWkJp`6;D2sdgaE#X!se05qQwTL1t6 diff --git a/loader/__pycache__/__init__.cpython-36.pyc b/loader/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 84d2cf7bc3cc75e597ed31cefe98c2227065cf93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmXr!<>hK)S{cm%1dl-k3@`#24nSPY0whuxf*CX!{Z=v*frJsnFMIur{M=Oi$~67- z%#!$`)Pj8dveb;st<8 diff --git a/loader/__pycache__/offroad_loader.cpython-36.pyc b/loader/__pycache__/offroad_loader.cpython-36.pyc deleted file mode 100644 index c7c060177dff6323ed6bb74f3db5c7e40af376ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5399 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 TWr+?Y9I!5xc;LT+S?cmH5415J diff --git a/loader/__pycache__/util.cpython-36.pyc b/loader/__pycache__/util.cpython-36.pyc deleted file mode 100644 index 888b02f29b11892415209c26a060855473cefb1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1383 zcmZ`&OOM+&5GJXIW$$i~c8kUV`XJCt1te>%lhZa03MA)Ta&rSL7>crG=;0-))-t4% z7ie=xe?sp)^zZbbYftG<=&3VQw(Axxf#FcYA^FWWpB|l@O#Zn4>$ksog#1np27~oC zVCFGQ2}x*978E?oS>Y`_iZL(ui(nDJ+E0ROvIvtf8G#=q^d*U-cW{!th-n{H8=Do` zPQf}5R+Mvz*W)+>3&7xcVyO9?3Mmn$aEn9mn zYrWP_SxZ`)vLtxxy<)Fe7j$7a`jHILHfY0?{mgzMUDQTvx+mQjZt~lx9ZyLTp2E%D z1hd+4J4t=1SYx z@9DOuP0zNnXN~-YXzbRXU(Hrkp=M1wTW0oBt4%fgPOUPa=wVUWtSTR-l~xjH0={N> zB@(4)waxOgP17GC&`T|ntTrcDpA!Pxec^aDSC<3XXHW79GR@PogM5i1!GYx9`V`E3 z0u!{FwhU$9+U$WSyfxXADR3Cmo%$C&B44W4T4eH;sMpGVuT(j(2NJ!ZOO%O=6-tyh zLKv7+2^W^jum2_x#O-4m@+S2NVCe{^p6M*68jE%O>0=Di^aF6lwVd6hyZirFe~Q-% zy)+tg<3QuzqVM2@)b*qH2Yb)dMSOJouEqxz;r0?SEyBimJ;s9*Jm_Ug>$|w3dNBeq zXGyIb!W*;>=$(H8!`BU-B2nZY2Om>TKcW%+km`F7lOgWFz`_ylGcYrU$zq3sDgKiF zl=B|A_)c2dGyK1EaxDgX!QpTjrY9JqgXcr7q8+cX2kej)5?K!QcO^n=T9Ux=O* URZ{2bDa8kngNPo}V-`*S0(^)~H~;_u diff --git a/loader/offroad_loader.pyc b/loader/offroad_loader.pyc deleted file mode 100644 index 3916929ccbf8ddc7d9066f22ea1977e5baa7b81c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3723 zcmb7GZExJh5uPP=Z+f?4$x`Z~Oj;vnq?VEZMH|6ro5pQ{v`_##sL=}of;#S-2@a)h}G^tfQ|x!Qe@eC9aEJJu6G}Yqy5Z z=c7?o#K|A=*lLkD4Zyxlo`f`EPZ1%MTQX$mL&01Xi4I$(3bFNe+fQA9}UA~ zWS`=xj}ZAKHfLl9UZ8Pe0gc)FNR~6A`x0os-H`;q+L()9uvwTPn<6k)lWQn zUHLM`q!?<+`9rz%<;hp?$W>#}l1ZCmFvU6CyIhica52x18%!MN0_Fo`Zc&2nystbx=c2BSk!FFxfOS3J{@L%^3@k|h2Z}1E$yLPAvoRE zWLb8(5N1Qa&4nK0Mb&&{^VZ1ou6g$SU-Aq`(Oiq8lxLOVk@|;d##NdGya>T`R=eQX z2KLP6K|Y%v+p6xv;vm7z(FWJ2KDdbU(d;0tvPku=iql-h`n}g1+uEtEojrASTB`*mP4c<67d%MOrrw2wC;;Dsq5*T%boa45@g7BKp1LS{3v&G~8Zq}x z&$P{|*Yma@t(hNrTmGhb&up0;{Jm|4Oeq6mhzeh@B;h*8gGadT5rU9_40QPNnwKwo zz6WpuiMafLCBVEl$8OVs=PnhCQ7E<>!^eEJFcB65`?h6I;Q_HDdur1HKw#5d*z|5} zmghFz#%5(I+^n(@&@fRrmodnOJtezTKZFF{SzM)YKC}@D#jW1fkPCQ|6$X_} z8WY}Wb~s8pP@s=1Yx8ED_rB@UVu==19cQ!o8U&U0Fg}Ki-#>q)-{)`v>G(XY`&?V~ z8gkR6^{pbjR(qug456HU0mMkVevB!V?bx>cnzmxOmX#0Zt=&T1DAPn%TEvMk)@ z0P|_j%Q#O!nA1Akq02osWDiYGJaa`<#)%di;oDS`jM6-@=QnfYiu%}mY(6v}Ev727!=o zDT859wE$QRp8#YnWPp*?|3I@G%ztr`1UT>{&BsCi=#!&|fhz(6jPFxx%cg_9j@?Nx zO3!Vwzi?K&`XnxGkXxJ7^g*$qRzaEvMTHL%m9yFg$FUop1a&+uGc2~46zu91|L1Vv9ByBAwOIw6i4+VY)ZqKNBZ^EqV~y9<_7L0&Vxni z5PW^5oX{tVZ$7%Z6=i}y#Q=I!bMQn*tO=Y#FZ_Tj@&4p-93^29Y)X&M;6 z))`2$%ETyT-K2uGn7MN1-tg{)AHn}KJT=QB>GXhv2j;H%f!Q`qEx|2CQ65ii6zN`~ zXj&w*j9td}MK!Zw03rMZn?p97^d@f^ZQCo1V>hk$2eq1 z)^bHPJlUVQG^_VnV1>|0NTe&H)WfvA*heu&5T%8(9ja$ceVR_=vE9e1<~0u>B)mhK zDJkh)Y1ojQh|+u%{*DejBFvK%Q)N6&1WxosH}ZXUt}#Du68cMp V6KQnSY?@WGffjFX4>JDz{{q~4^d^`stY^ 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 diff --git a/network/__init__.pyc b/network/__init__.pyc deleted file mode 100644 index 2adc604cab3c47de4cc0dd9d846fb6d09e565d26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106 zcmZSn%*&P5bu=oO0SXv_v;zhK)S{cm%1dl-k3@`#24nSPY0whuxf*CX!{Z=v*frJsnF9-dM{M=Oi$~67- z%#!$`)Pj8dveb;sJa7oI7@2U}a=L0XN%JD=SNhiO(xRT{fVn#*ZirAeryIUlC^uu!BbavaIB@Tm+% zs$^1Shv8645mrSwN_R$5g;{)f?&#D-9;cfmLWoBRz0;uQDyEHD2Ar{qRlH^kYiunT zXEoN5T|1CYZ9%$~H*R72f-g9p?V1y)3mfY|IKn+4tuMT07kk(xxK5la7XFfj{~C+4 zF9@r?@`XhQkz9j6ilmKQ{|2jVM6?`5ySD$2R&esLXu)?!FkD`H>lA>n)B7X{pr3nO zx6*u;#fdz%puoE?=w@*piY$6v?Us8psT6H%KZ?>kt)fVGhBB`35|!y(YI{GO>#k81 zdsU;e@>~boa(7SWRT^h{^|2ggxL3ITDHgYd_8t`ZKAz5F`NJl-W?NAPTicp{!rB8KpwVCKN@Nk2Km*lw@&PM$rrQ^3leqn97aA;l>Vv zS8`Tt?8{M_Wb)Rupnz_HgffZCD$RE`a#MF{m{_zI&jGfxSITtHesoJgWp|#CwmpaIn zxqL)1KF0zYdjlt3o9sZ6|T1Za~q1?x}ZZlRwj~GjeGEoD#ZoQTiZ_w!sqh z9-TDeeLB~|9UR0;e2$lr?wMI1@xbb1dfd0>Z!d#)W}OhDX%Jhf_ziZ{<(_>>n2q^@ zJ!DTl`Q19=KnrbPjKZ2&s#7^*ckDsaqLMzbINR;~3cQ;9ufu~P-^icGJztr`SMqo& zMU;%vOemSFn=qiFAaxX}H|W)&3ehW*IGut`QBLhG)82tZ6RUc51Cm20v^_1vRTw&^ zz#8lFD>y9a78t({3e9gWV{qB@f<)BniBK0nfD)XjLTMf|B+LjBT)iRBf*pZ2V?eXu z=#Pv@M5{9(bQ|Rml@*%(64dmSZOrlmh!p3ZtTzyYs(j)p>aP56Yu5ps+<<2i?b+Ju zf1&wA^ZhHCzYI1-np8MkO=60Lr#0e>lw zZz${lf}t0@Y57$1AO2_f_&AYQ5u}PJ{HWJf^pCHDC;~(FGH^?GqG)$7&KjoaRuqXM z0p+MAsgFtYNf7aM_pJ9NGRt6cQD?XaBCMivGyR-CX5#f7$65*fuJ0N>+O2O&yr1WW h)QWCddq0|BjL9pn&B~OpzuAO)j|!)xe9#o_e*wqMGJF64 diff --git a/network/__pycache__/hybrid_fcn.cpython-36.pyc b/network/__pycache__/hybrid_fcn.cpython-36.pyc deleted file mode 100644 index 43a073072db42abee9b3d6f628f537e70601d7f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1728 zcmbtUQE%il5VoCcl1+DeS$%uAt9I>|TL1IZTmW5441%egs4kv@v0V zP8>0KMKUTp;a~JYKM?&3GU?7-^1A}*QuU~_2t->!~yA-+C1JS)QpMt6>Y5uFxI z9_@d+A7zDVq^|A#tSIF?X^J$`QYDQPQBh` zO%b>j`GIgn?-IG&Te$llx9c}_+W~mc2m9!O54YYsWbJ?_|9stFJO7CbscxOt2iu__ zkRbn1dl3EA6C?=6k1;iVQ7%-HN{x(o$MovuLTb(6WCG5MvS>IrgG?q39C%%vNyEz0 zgwN#3QkG4TD0Anj%oL;ulJ-L)9tqbVx@P$7o7D72%)>wb6gtG z0S*5}_n1rffRA@L&+cxUU~~;%ifH0M_yd>+FzXx$R2ekwZ%mLincB5GA1wTx$ zsdSnfCrujtHZWpO-$OoqIq^5Sp9I&*nGCj#3pHUJ$cBCZ(j9pZ^?U&NG|>Wor8)#c z*oQP^BL)b)b%W4GD#d=qfklYzY61EjHZMOzV5YPsUy+J;0`! zdcg6qAukyvCxf2>lrH2wu%OX4giMn-=wjV1lerW;%?l;8EcLq}fVGZn&h-$FE*8Go zoh8K_%7mBrDJkQfO89!3*y+G=QNuX%O1v5V!1hfiZU566Q%~qUsFAb#H}T&Vi`_0o z_z!CYp-WbvKZ3mpIfr+a3OqCe&QF$!>iji6=b}o%ajaM!A&F6Axao>iDh0RO1jW=w ztT9iv&+)Aq%QA3Xw);U4S}rtZV2ff@mKGEJK3es@w_aG08=JQ>A3W~-`~q>WF&JnX F=Wl@Iq&olr diff --git a/network/__pycache__/simple_fcn.cpython-36.pyc b/network/__pycache__/simple_fcn.cpython-36.pyc deleted file mode 100644 index 13b76c27e54e549661237304d0c09b44dc0dd7b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 978 zcmYjQO-|cD6rS-<985wB^Z?!ll|;1L3LzoUO`An&Hlu?Vld+i@Ly58r6007h z7wI9q?TRaO)%Q#SJn8*szW3+69}eT@`=9icN626Df&#ElfbClloN%g0NmJTcUP((o z4L%a?asQ5RU(hmK`Du^Sb217Z;02lHC^v*?NcI4PAc&KCoTfgH?nyzp&x5g!5f3*PS& zMpD-*%Z0%jFnMU3S{MU|A#I;AsikAA^|Wr|b8*!OjZL?`(@I~z<8AOoeEQagKU9@p zj{G*TLKSTckd0$jE=0RMlbj3PIZ$njv0P==GWMJNJDbd^xtQD*lM5(fL|si_2f|nZ zj?_hEaxsU3Y_pFI2&ti`jAWaH}1G-bnaxO;gsJ&+~kJ`e79 z(tw9Nx+iJ)Kmw9RfHijGg)D0&=JQn>Cm@euqD5;m1*W;J%vF-f(k4xnWSl3u(kDu4 zkr~4x-sS&rC;Ypd*wbT~_+`LL`oi!4$6ui)IpGbXEsT;wEAFN~OIQOx6 z5VX<8+IQeIq@f+@y~67WC5>MMpkYTlulK-( zDLEH<2qx6+FqW&#TE>2nzaM9pRVik7%h?4KF`}+!KvftkAdq@lnOu}mkZmV1+l+T+ zhaE7jr}dpd{=1+SCqw7~4QNawx;ol!YPzM7BP$fNs2@OwXB{a>M|=ES=zKyA;!QlW z2gcDK<`C@TafCM`Xbm@a41pam>FV&Q+9nAoxSh!e$EdSXz!+o3%8IuN{XNF6+e~dT zBgS}@Gd8d>2<-MZv&w~1ka+3=fL}n~U@OC(LU1fjVH^bB!FagCvJDLIa;mi%K`uSs rhSO!M^F~%0_833&=_eO`8M+$~{ug}4eEj~g|5N;0EdGmPy667`2Eg!P diff --git a/network/hybrid_fcn.pyc b/network/hybrid_fcn.pyc deleted file mode 100644 index d8c2173eac504e30d8a545e4312ed415343ae6ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1932 zcmbtU-EQ1O6h33`I?d9MP(&M~URYe96+%U{HwaazA_yS?d*Of(0W@+v4FH<@KGi2?oITL0`#o>61?|P6?j;Gh3!$5xS;xvEq!IQjp zO|)H*|8wW{d2JyP+kEOyrnbwQ^5RO7 z8^WY}$|MJ=I1FApSO-|)P!UDEik3hmp;^MXsHN<6N^wB5q0o$QxEbv#Rs4601CDoa zO}3fHY=H9mVoS+h5AmzoR(IHSy?xVFT*>IcQqr>O!+6C}{C#}^q#Z9zthU6D5m#NG z?}>W`h+PU2Isa#+G0vYjK;9oXf7X4(Q(|g)jaM&ptC2P z4FQFvHFW2act50L_Lq~ zCQ}dS-OEHIP~0eUMVBZHl)RL|4Mn1K^YXO~)>2>9<4UQ^foKFp5kTXRmc#WtnMm_R zPQP)dlJzm8DUcS|>5gqzO+~6IW5G!tbCd;Rjxhz%)oyZ-?5c`Qv+wM(z|AH3;_EfU7_cj%FMj!yeop8Tfdg5Y z9zYXAVxCa9x9-RpCI^0@{eT<#L@D)rkMRBgRQu68DLAPTZRx<#nD;$KZ-VpXsWrNq zy2f-Ua~{!JS4|lL`hrEZW)ZCmhE9r?nbVZgmdtpUE%(x zfgmiI2^@Vk$dY>xwntK4f`=5^W E0lgt>xc~qF