From cd3107b0b55603898598cab159ab1292f8d6161f Mon Sep 17 00:00:00 2001 From: Abemarkar23 Date: Sun, 26 May 2019 13:44:28 -0700 Subject: [PATCH 1/3] added 3x3 input size --- bin/Game$1.class | Bin 1577 -> 1929 bytes bin/Game$2.class | Bin 773 -> 773 bytes bin/Game.class | Bin 6488 -> 7248 bytes bin/Individual.class | Bin 3065 -> 2990 bytes bin/Mario.class | Bin 3303 -> 4105 bytes bin/Trainer.class | Bin 1589 -> 1751 bytes src/Game.java | 75 +++++++++++++++++++++++++++++++++---------- src/Individual.java | 7 ++-- src/Trainer.java | 10 ++++-- 9 files changed, 70 insertions(+), 22 deletions(-) diff --git a/bin/Game$1.class b/bin/Game$1.class index f1d2bf43666071d91b2f513f090041a9546f6761..7a83639bf26908206d837ee719cf458b1c7f5e5c 100644 GIT binary patch delta 934 zcmZXS+iwhU6vscm-L0|X7j|HN8+F zPK#zIjS7{IQcJ65H+vLSj+=7&6uPw~aGX@Hl}?!K_|gLpw*!{M6+U=;{_R$MRaP8FiX%W$IE6s+cX7tOmmzQ#owWon@)1dz*5XUYxPqqu0P!%qo-8mh{p# z;Q4lsrjLF_IMXZH`K=S0`ziuC+v-Ue1qKu~lbF6_ySMf_>6D$D&Y)uY?t%K#j^A8w zlIM~p%4JcDRpctw%A7<)M}WAZxym(JrhhL(3w%*Puea12!B^gimxJzqk~itme=&F_${(##^{Q- z=(lWm!ALP$6)SX(kqAO#h}|)i9AirbvFi&n|9O!TdjmJ}j)TEDMoo#smE^(a6a1qk zx+<|$i8CXzxm6{4-jMr9zH`on_gt)S6D0~Iu9p}ZMHLw3Bja-QVP;E{JDDSPDJILP zVL1t6?4Uv3=qkEcEms=n3TtH8wG>&$OBxwry{I&a&IUfQkqlg(wN`pW3cWuEBD w61c~Gl;9#f;2}*R9!Yox(-L)!IRiIRCyd7u3h_iLAh=qwPvtj-r{t9HFFL5>*#H0l delta 554 zcmYL_%}*0S7>A!}ce}7o6oiB(81Wk<#n$+h(1VH5q*V|_K*bMS+ZBhFZtX6mCPr>1 z+)VZ)XA>~d14-Q&4<0>m(Z9u`2jgseU=H)X^UUx4y)*CTp-n`ve&ZVT*vD!Id5f#tiwb+6_MjIqVD3%#VdCz)eX zkWzkpV{?=R$$k2?x~%-V=WCYcp=6Oqf*vQdlcTvOELl7i^shKgriC{hv!pltU+ZBK3lo7R%vgayX-6jajO8+$*eFR0RXESyp-3;>?X!$*l*< zt4V6%@8n?k*Z3ulhkNEo?^R5adK_QEKW6U0+wnHC&6O>Ja3VFf(WdZ|gI!oKBBtWh z_{wY?zcCas-@Tmuz(|)ph)*XYyxNo-Cr#A))J zp}?q~)i_IJP)zVT;2dwr@{SzuIj=1)Xp@WVaEZ@Ma#&j&>%N}>2K7n*1dqCIw}Zhe j8YJ*FwK4OXs^^Qj9y3YC!zom1> diff --git a/bin/Game$2.class b/bin/Game$2.class index b8cad7c25ec5a44f29b22ab0c562bd7a21fba91a..440bd0e7be98ae31bb86e85280009300d1284b61 100644 GIT binary patch delta 31 ncmZo=Yh~LI$Hcf`ay(Nc?;-|PhQ$n$3`-ak8J12y%H#k5im?cZ delta 31 mcmZo=Yh~LI$HbU2Ii4w!H;sXnA)P^zA%j7YA#?IkCIjG?@cBz$z&OlKmr&8CKJif2oZ^Z>_h@V5Mo$_AsNERkfDUI` zyI#T8FTN<)6sswp8&`%`8~7D|EpW7j)-YLnS$VBM3$(Va3P!o{|J27GjWAJrQzXnx zLaoig4tiMJzJxJJh=1HFO@cmkk)}X+P9Pczus-LnUJ*QB2?8tXK|d_~kCxOtV(;g_ z*}z7W5SQhVmBE>zmZdQ_3->z%o0Zn3v~|HHmU5ect!9m*P`ksxo#-^@I!YJc#grxo zmIq6#+}Mr_(;&FVfDV_AKL|3dItNz8{Np3xNYsscvBQ85JGrZ@wzjr>jvKqMN5^hK zjoD@emkjHy%|{JZ4_!?CW{LKr#9&Wp#zFG|=V0ww z1JB`4=6lXT+6#D5$Dhq?&1-)NFPr7sz`R#km~k^_Pf_=~wfE9m<-oIw(; zh=y8Y;Z~K}Ap-+YqT}!8wOW40n>b4;|7qZDykqXt{H|Si&%pcm!2C!XUbYJ#8Tc6g z5*Tg4*rZ5Pds`AyN7>wDr9Lt6Z+vP_)+s-az$X^CkC%np0he z=3V~uvqf8|@+dKXY8;qYN!F_$w|y5%Jyp9fcqeBzlqnrYpg$ZWLb;^{t$irr|5G`C zm6t{BzQpXvShm2E(~WtJzAh~2!lFHB`p!=^GH8`UKe@<;7X#4;e&nMD1(=3H%tT)_ zpdaR=2m!7x;R$Sq)|p1?gfW@b&asSWoVg}*e0&mpO-4GV^s+G!MouUFfLu?MBURtR9sdFBxsGb~vh?so5r!rPep0zr9-PL{>%SUc?i) zqG7EjUM=oP+t%}G#f~Dcvso>-dNqoRZU^OsUTt$P`%X+RR#ti^&hqLMlU6>j{(Y;$ z3LZJpt5tdR%5^8ta>!a;yt-PkSMA@{bHF;?w>yrBoUN}&;Fq4Xt?1hcn*k`u$p8IzKRS?HLD-&o>mOvG;~ z=?n)@R7pDCK=bzWbmVu4tCs_r3 zHho9le~E%5AG(?cX#97Mo%Ogk7eUn7w${oerkuQl?3)S(7L;^8xJ++Jlur?UHIc3 zJZ>M=i98xSp1_lJzKWtQJhRp&Mbso|^FH}ecR!xbc_o3@l8)X`LpR=RjAz?c@V5(Z zCGZcWck#NtlUp;R{Hxr}j(1O9&LKj%LE#i6M2qF3B?Q%&m+|ZVHNIzkP!z9Ad|OlU?-?;dp~^ zyp7R#ht+!zGw=as^M=mFN4)wU@@gNpa+;!w!b_ga$%bK8T>LU%(ULihW^Iyr&fty{ z;$=Z+qf{pJVWKwTTw-mpTQ{&=-8HA2fJ5?*BclhWoWw(NzkyqqT$QEwC@X1GZ?(B0 zZ?;YH%}?@5;*x**{&maNJL)U;rbK%^Tbf`zF2Fn~N@Y8e@c^GP+at{OGZyc2*7*yP z@^f~LqkLtKamQEObAkjsiWYGqDjF^omzD8oq5yWWWX4Xck^W3Xzz^Ye8DQmPpiKtS zsU2AuoC0bD{3%Iwnj&aDG;pd;BN-|u(yt(Ep)N&YV`_YElf07+JWkPOA91X)nm&d4 zgq%9c*GQp=PiMW7&WjhVYubbJI*~(!2V0Atq0MTQW}cz9_Izv~-H9+?u1+*4QWRHt z9hHj78!@3<${M@H*GT;|ud`~eoZcn=Tp5~>s)ST`$ys}4xhfjq1;+8&uwe%Qmkftcdl2Le?H;8`P<7siSIi2L6j|7=qDZ)DI4XI zgCXSP2+Cun4<<=I>ZAY-Qi%CP?{X=|P0}A*sK1Bnd!^LEBgw#hh@ZSx`(%<#=8@Uh zE>l=!8{uqEajX_i7A+m*-6W}15a4nY%DFO?bympu6a&j8^8~M*qGAs_m1e;-)_M)qFCiLFmwIzserZ-wFWn3|&wM$5 z(D!sRWftvn&3*;h=CK09e!k2$YYIxU`u5s4M;gr5feY5C8xG delta 2985 zcmZ8j33yc175?w+nY<*EWwH|>B#=xb!2l70gh~=15D12bG^A38WFSM9Ns|d{bpWvx zMHDV-v9$^nqZF+OnM4B!R&7hsf`S#OR@+)y>4LRXp-B4QHj6Yw{~;K*L>1YE#lm&r)5uLBl#Fv@i4c zXL$W>o=!S2=H$wgX0zqH8aCm3^1L}~$$bKrneJ9kR-ql6u{Z((4`{H$X2pX7(aYT{ z+y(BH{(@3pi?73ut=Oi)h3(YJsi>&PU1-M+JYvPe0&xnvs-SbFw{2O$?D_6CPm6{} z@qOvGxU|PK`~W}X3EYj1a+{?<{74?Nq=_fx`95?f4iMtoYMlcsd`YM7SILo(>Iv#$V)~h>1zKNKRUO?#6kZ zRV){Qe`@#)|B|0ZI1Tu>wApXT#Z_Fh;y;5mpj(>j_BUzx5*z8a!`;^CYqerPHrX32 z7EKt1Ri3hsOpDNPiHwOz#yrUJ3@=YEqGVKLh9gE34iQV1SGZfcJXK5O&5?OY8VYS9 zfl=hQw=J^^O(bd}NhHh8$SETFwWfyiBtMQe?`D zk;TKa#AvI?7KqhdtID0(;cjp8HgsxYjL4B?+TsIywPInpO`X^zKZ!avqksgcPo(hx zvSPH*VJ?zUjTF=(72iY}+^npn7|E87)h%mbJAE-l<`VjyCO?ZQjVPt9GDMSsGO&t)D`j$56=%m zi?9M+JiQZzSjor@jBq4Yac9J8BFM*=NVdW+uE8YYt|E%yHS$zka^l(>nXcvm7RZ4( zr?^W8+6ojO7f_f6f&RU`$uj|JXb#c3T@#9`R)q`$DZUO<_K|EXO%1iIX zbAvoG1G@$;bVI9r5&PqMgLo-qNTr9Kj@AWY4ek8);?*F2riA=W58~%)YYO65Y865J zn(Krh-cbw1@9rm6MQBDF&W2MokBkEiu%VF^*34RLA;Qljtw0s|uO;($aNo?z@?k9{ z0o;vsv#}lPIY&2O5AMNp*ocF;7l-&JP-PuT>EUonYY~C-_$^&mvPj?8Q|hC`5AZw6 zR?E*5hTG2Cm}fPHGo0DB4~xuBb07XF=Qzs)_YrwNqOpY)^Z@m@BAfSxcnFiQ4dq;` zA$70SL;?%KUezw-RqaAvZLGgfaFL-$VhsMulbC2V3V*}jVWw@1UT_vnWTl3lu1=sy zO;ud975@+^F)=*nB{?c_PFgr^q&CzrOkX#~Rf>}57)o4eMB=wQcm)Q4x<}2Ypesu`S0R{9$5+528$`w_GYZ%+`C9G0XzTA2>t9DI)y>+`xuN4Cu9;QU^q2Y zPlsiI05hj115z>3N^;D%thi21gBr>-$;m1<(487aL08>DR558&@>J&ds|pJ9ojsKC z!R@Yt0aR^j=)vvXh;#J{n+|u3Yg7PY9piQnTvUzQq^4qxGNC47k;!S=iPC;yuj?0D z9mR81KwdVpJqv&K|bEaWbUUEH52DpTIaEltyj-h zTaOQ^{}KN>ox`(y-h&H65)mA1nrhdf%)^vbaf% zW&YJr9u1o-`WmA2nLI$hdP+o=U_zLhvsWPuoYW4R$QK22X=+wXobH^jL(0a9o8?Z* z(uT+i#dvulHTx^F31Z^*w5*tfA+REGiyTi`$`IKkF(~DO94}rdDuw1DxwNj`BKj{t*&&=PJ51H*lyQ$-Lmva z%TS=&hI=&U98pl88ZkUaw?+a%kAldwo~21NwUbZ2FUvbd#!S0r&OR{X7=@Xfl~JG! z(!`t^%-OV64l0QCrY+Mp-981?iS}{gY|mwkX#XE{o8U;%#0*GTZ+QjTCF}p^C zidZeyVS|eG%-#UwnAIf~4GFZ<%l$^mQ=p|vnjXRE(9nsE3`@^sQu>_XFx83Sa;x@n z!R^v;o#3cr=5#h^GBXi(#w-Y8i795W*7mZ)cHVQTQic^YCN4|7q)f5t;k>uxoJ-;Xu1@OU+jUDAa~$S70g`#QhA1k zyD&j+@^Y-jQ>ObS0& zWPH)MZh1!Z*FS^O7nY_pOrwEikj>2+`_1VYSEQzf!y=6w_Of{qSQ@e-h>2Osn4&8& z+c+As8RpS%>k^lYPxrf%^|GR}kLL21dTCJtdjnql5QA8H`dF$QfKr|1*N{VHI6wv zCXG8Gt0y!(iKjSX^nBj1*;OkOgXN4=fcC`jG@GYSHa;sGpHr}LF{aDntpt#r`^W=_ zkforGF_m0ojrF6YmLIQZcop4@-IN(D;@362A$-*oT-_n13f|JtBO|IG?`U`zbuuLj zl07lsD!qI{!~6JveaEyeGBOLDnnVE4WK2jxV4VB)o4m zynq)e9?N-7+88qBHmNTqYm@NKGUqh3b=PyK?JvuE2pdTL?|SMjPkvty+IVg?|7#FI zmCSRtRh5iC|61XV!Y8X1b$rIDtw#gjm-1}`?c_&oLgRTfo#V0!EBG0u0nmageTi)6 zg%NH#<{txWNnXU&$?6MOnfw{6Ct5C|^#ax=f5cjK9@iF;lx1ulo5E!@Se6c1O=a)#^j95wq$T3{0*DN^FWex-@0 zR&&oo+}~S7UrKN~iWuB8kJ~$o7%AdFXLS(=f5Ux69BM-P`1^>QD-+G5>G%hT2m6iA z$bxN!Vy3fZam5kIL&Rsb+b@OHjByR=ZzaEN*od{*#Cv)h)?+8H{0X$<5GinYz0Xl2 zB(w$*gwe&Qvyt=TGm+=23J=gqs0wt>g3h6=KwTXoe`Ax1QT{bIH&gGz^R0kB+6aBo zWD9Gl#9G{!-oUcnT*g*(fvqTJi7TaW6c2`2UH&^zBUwI6&~mD_lu=c)KozgiaPyGg zMZn6RF*nip@I^c-DCE3|#~Y6o@k|lVUygZe8Rp6bOpbsM^EYBjaJ$$e{Sz1Q(gpMi zlgSHsIbig)(@>K|yeV%#;_Vav{w1ddy5mK>H;y0W2y9(d=pWovL|9R#=K*o8* delta 1751 zcmZ8hTW}Lq82(Onvzvw;8VbF)2n+?frBtddAhj9@EwqIq)j~mq&@Lr4NwGy(`wA7>xDVePWG$S#*cj7uP7Tt80A51LaUAzfzUuS z6RnF!ll^s(!QuUJ#&5X%#|^xPI`$At_Qf)?!S@Y(ARClj4RHp64-KqE zNP3?%@Db(;Xt7jeFlkBmH4?1T2F~Ct!Ae=_mRLGzrBWQ39CYX5W1QFV2}x_Ul2$s_ z8;K_qt(6;laDhgFZCkD4 zV8=~ta?rg1J)>u#Ud>TWV8Q4)1ie~&YSmfaiEOUr>01B)mRv(rLaw^=wYc+F5Rpnw za~~mJgmQvj&1VDOn^A>UEJF{LV>e91QG*n5KSmUe6aDkV{{j(}+t3UxD?yk6C_rN$ zEJ75*DI7pQAuS-62N|M}uu8-zsZ75Y1GFl5hS8E^&p%Gdv&Csk&}JfV2ZcJ4I>O>M z{37%Z=G%G_ OF1qJ;(7$(uOaB22sX?Cr diff --git a/bin/Mario.class b/bin/Mario.class index cdacd8c61cc236afe8998e3b89db69aedd06d493..5ba8ee3aada5f6be4985afce3223ec6d1dbd0942 100644 GIT binary patch literal 4105 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 M0z~i@~ diff --git a/bin/Trainer.class b/bin/Trainer.class index 356dd6d2f8ef0b2b77f5790a900a418b2f27283e..98b33f2f513d39abcbeba84dad8a95bee91da2b9 100644 GIT binary patch delta 806 zcmZutO-~b16g}@v=}adBZCa`V0&S^SEK>YJ1QbzF(H0O8t)D#Fv8mLS3?sU-TbCwp zZ{o_hY!e3~iF^G6{sot=Tv~6Z7+sjjy!+0(=iYPf{a}1+*T4Sy^clby3N`&bn`qm% zg=Om)z!4R3hR_qSBT^+%E~MsO-EwyI1 zO!3sfU1S(kcO9j2)5?7V5AaYHlrgq0-zcwHSf)Jd)mPw9XxZUCuc3g6Skw1Zhp!{TFr122|^lWhA78~s29kujxJK_Mh|^49HxnTaRPm$+5gXWCidOv7=^$F g{ESFGuwTJ5dO|Cu*>E^S9;kRBLZy^yH;9JwALF+tLTasw3d2_8`(4{T@0)kf7M4Y zIe+}&3-o761Y;8)Kp()D&{q&=sY#8QoSFH~ocX?)^CR+!Yu|o<`3fM9r#sp7g#=x!p;*#Hd zk>e6Bi=doPbGX8B6-6;8C*v!)uHYJj{=)9q*@o?IWGipmp0mkO!VS@o6S~C^s5M-cfE$|3sgAnUm}Ap+0JB}imIWEZU3N8B=d zII=?*5~AdzkjX1h$vDCoAvCeqfE1<(sR&{kV_;-6;$3ijt%A_-g|UltbqpC@JAmyz zW-T)|*Taeb$^Bo85NY%uas#78392Yqz{w$bQv3|YYq_dk>*KU#>X|Oi^l-rp{f%Al z9tvG7$8Pp;i_mA>qp%!XCAcq|qKSbRG?MT|4q==&nZPUzlA6RK4hlD9jINTrBGCMOI!dt)*@CM4m>AJiCZ-v9sr diff --git a/src/Game.java b/src/Game.java index 67dcb57..99855cb 100644 --- a/src/Game.java +++ b/src/Game.java @@ -71,29 +71,70 @@ void start() { repaint.start(); } +// public ArrayList getState() { +// double[] doubles = new double[tilelayout.length * (tilelayout[0].length - 1)]; +// /*/ +// for (int i = 0; i < tilelayout.length; i++) { +// for (int j = 0; j < tilelayout.length - 1; j++) { +// doubles[i][j] = tilelayout[i][j] * 5.0; +// } +// } +// /*/ +// for (int i = m.tiley - 6; i < m.tiley + 6; i++) { +// if (i < 0) continue; +// if (i > 12) continue; +// for (int j = m.tilex - 6; j < m.tilex + 6; j++) { +// if (j < 0) continue; +// if (j > 13) continue; +// doubles[i * tilelayout.length + j] = tilelayout[i][j]; +// } +// } +// ArrayList answer = new ArrayList(); +// for (int x = 0; x < tilelayout.length * (tilelayout[0].length - 1); x++) { +// answer.add(doubles[x]); +// } +// +// return answer; +// } + public ArrayList getState() { - double[] doubles = new double[tilelayout.length * (tilelayout[0].length - 1)]; - /*/ - for (int i = 0; i < tilelayout.length; i++) { - for (int j = 0; j < tilelayout.length - 1; j++) { - doubles[i][j] = tilelayout[i][j] * 5.0; + ArrayList answer = new ArrayList(); + int row = m.tiley; + int col = m.tilex; + int index = 0; + int buff = 1; + + if (m.tilex == 0 && m.tiley==0) { + for (int i = 0; i < 9; i++) { + answer.add((double) 0); } + return answer; } - /*/ - for (int i = m.tiley - 6; i < m.tiley + 6; i++) { - if (i < 0) continue; - if (i > 12) continue; - for (int j = m.tilex - 6; j < m.tilex + 6; j++) { - if (j < 0) continue; - if (j > 13) continue; - doubles[i * tilelayout.length + j] = tilelayout[i][j]; + + for (int r=row-buff; rrow+buff) continue; + if (r<0) { + answer.add(0.0); + continue; + } + for (int c=col-buff; ccol+buff) continue; + if(c<0) { + answer.add(0.0); + continue; + } + answer.add((double)tilelayout[r][c]); + index++; } - } - ArrayList answer = new ArrayList(); - for (int x = 0; x < tilelayout.length * (tilelayout[0].length - 1); x++) { - answer.add(doubles[x]); } + + if (answer.size() != 9) { + while (answer.size()<9) { + answer.add((double) 0); + } + return answer; + } return answer; } diff --git a/src/Individual.java b/src/Individual.java index d5d8d26..14c920d 100644 --- a/src/Individual.java +++ b/src/Individual.java @@ -7,7 +7,8 @@ public class Individual implements Callable { private Game game; public Individual(int numInputs) { network = new NeuralNetwork(numInputs); - network.addLayer(40, Activation.Sigmoid); + network.addLayer(4, Activation.ReLu); + network.addLayer(5, Activation.Sigmoid); network.addLayer(3, Activation.Sigmoid); } @@ -23,12 +24,12 @@ public double getFitness() { return network.getFitness(); } - public static double predictionThreshold = 0.9; + public static double predictionThreshold = 0.5; public void play() { // System.out.println("PLAYING"); ArrayList newState = game.getState(); - ArrayList actions = network.rawPredict(newState); + System.out.println(actions.toString()); if (actions.get(0) == -1) { return; } diff --git a/src/Trainer.java b/src/Trainer.java index 8c81bc6..ca5b2e7 100644 --- a/src/Trainer.java +++ b/src/Trainer.java @@ -5,11 +5,17 @@ public class Trainer { public static void main(String args[]) throws InterruptedException, ExecutionException, EOFException { Trainer t = new Trainer(); - t.testSave(); + try{ + t.start(); + } + + catch(Exception e) { + e.printStackTrace(); + } } public void start() throws InterruptedException, ExecutionException { - GeneticAlgorithm ga = new GeneticAlgorithm(0.9, 10, 169); + GeneticAlgorithm ga = new GeneticAlgorithm(0.9, 10, 9); ga.start((int)Double.MAX_VALUE); } static String path = "/home/computerscience/eclipse-workspace/Mario-Bros-Genetic-Algorithm/best.nn"; From c8c58bd5d0e77af5f109af4c6e0043ec2be8296d Mon Sep 17 00:00:00 2001 From: Abemarkar23 Date: Sun, 26 May 2019 15:15:10 -0700 Subject: [PATCH 2/3] incentive not to jump --- bin/Game$1.class | Bin 1929 -> 1981 bytes bin/Game$2.class | Bin 773 -> 773 bytes bin/Game.class | Bin 7248 -> 7248 bytes bin/Individual.class | Bin 2990 -> 2879 bytes bin/Mario.class | Bin 4105 -> 4157 bytes bin/Neuron.class | Bin 4453 -> 4470 bytes src/Game.java | 2 ++ src/Individual.java | 4 ++-- src/Mario.java | 3 +++ src/Neuron.java | 2 +- 10 files changed, 8 insertions(+), 3 deletions(-) diff --git a/bin/Game$1.class b/bin/Game$1.class index 7a83639bf26908206d837ee719cf458b1c7f5e5c..71d8f1ea0ae52b2c141221dedef39e5f279dd3cd 100644 GIT binary patch delta 813 zcmZ9K*-sNu6vlr;r!CY`HWd;Q#2pYUiYqk|jV7XHQFdIg(gK6s=u8WUint-}I&Sc6 z;)A|ma3mTHPd@a?2NN;zk1#%IOpJG^iNs0nJ?DPsJKs5T?j6s3m+4CWe)AsK#*-=6 zXxfMyuR<-A66xW1=wLh))iTJZUZH`*5_UE0R}&J7x5jc*f7}=JxM-x=Nt1-@AF9wo ztAtYv==&n!fP`G!QPN^*wJUT`CE-vtE8?P%V+zN~66|chszoE30Q2coIEl}2*fvyj z5pd#{$nNtce1mRnKn?e}o77MsrqFFA%9?CB2+X~7e7RTNd zoLBBga}txtwZzko*DL}ICURb^4F71j##eziZ;v6kY{o< z6>OWplfq7zoJwImCa0f?pDik$ z){!grwYXSE9_#T?!U0NYrJPPSlEBR!HZj3wo>IvRwqUZAS@Bwv>=0TznWKuY?BWO2 zmtr7cF#ZER;a_4rOCLPRnVIv=%s1cUd@Y|X*M9!}vJABFx}eRJ z0{j>Oj{nIu&b z)-RWT>oo^2Po@kr)13)NMtf4>NX$!`ag~fEl#Q+|6V_%WpiByU*1Y2Lmogp#mDfLUqgWTR$=lqqc~C%5V2Nc+ zDWyV+IYFhgwd6H+;$s&f>NrNd{Mtqa*+Z5f(=^Fl_F}P*cQmuWeo50JiCS6V0N-h2 zl|yS(f#Qx-u|X2cZF#~|Id%nwIi69%bBUJW2~{_zR7|B>HoTw)nRzKEAnW|nzLHmy JeL{M9{sF|Fpke?3 diff --git a/bin/Game$2.class b/bin/Game$2.class index 440bd0e7be98ae31bb86e85280009300d1284b61..c04ca830f442261accb32fc1dc02d12fcc266007 100644 GIT binary patch delta 31 ncmZo=Yh~LI$Hcg3ay(Nc?-B-9hNTRW49gf48J15z%H#k5i#G_9 delta 31 ncmZo=Yh~LI$Hcf`ay(Nc?;-|PhQ$n$3`-ak8J12y%H#k5im?cZ diff --git a/bin/Game.class b/bin/Game.class index 6b338f45c14dd4a8301f993e9fe9a6f5246eb13e..8eb7705d701f5426e983d372367a928031d91991 100644 GIT binary patch delta 532 zcmW-fTS$~q6otPH{&-28dyI`}5RT4Z4++LVpbS%@Hc*c+BFJO5@{9_evzvaZctNf5 zdInVapsIYSiiWwt2tB;wKCgMg8|`?@5ToX(JD&SaZyO_nadjUjhY4~uE@V>OPq9OB zFYm2>k3+UhWAItGI760VkZFDVE5*zbvyDGQ_(wJWRrfM6N#=y4&@O3Kr8g>JI}UN+6DNLg5fC?<#Y0GWSiF=< pCQ;cymH4QUY|cv#U9yoL&G%}3K>XI1%uk{pV8nM&GE9F~a1{bUheZGY delta 532 zcmW-fSxD4j6vclR`j?hCo7%`s29eeb^^jl;1j!^#+e8tV67~|Lg+*ceYD7f@75ITI zAoUXZU?lz9pv59uHJXQ@mnotm(g<3~NT@?k=bXEJ=U%>CDwpc(4%ige6UcaJ#xu`- z57ZTA7{dZ4u+Xm!&an2i6wpkN7NV>p#(FAfrJ4<-*hpHqgiS1^jg@R+4O>;Yjm>PA z+R0vaag^O0XAhlHXV_0K?Oamsj(P?-#0w7dk|Vqk4ypPR$4CH86oMNL4SFXS$4U1$ zTDKdW4>?&&;6^V zA)A%QAqx<*AXOG3VPR%kgp_#N%E;J6vKFPm k%4xDV2W=9kt%5GadzHUoQ~kH)dD92zk2PD7tBNQ80Ta=NTL1t6 diff --git a/bin/Individual.class b/bin/Individual.class index 5c6e23cfd29379f51ab3ac989242143fd8659dff..28841db1c4b237f4fdece2acec78f6883c1fc99e 100644 GIT binary patch delta 1071 zcmZvb+fN*I6vscmo!Ob$=}58SvKSDGv}qSolqiWH4 zjT(jJmj;Rjsil`5mz#Oh<1OA+xTS1)mtQVqOC?Ev%fQyr1n;12PDv;3$riF@|7hP# zt~lqHC-WYsx#4z&U8v-%-WGY!W=S_$DRoA7TZgQVJf7iMecJk=xsiIALQGyIr8dZU zy~w99BdlK^vpbueRoVj5>GQN&RdFS1MaKiz|vXFm4892 z)GeLEty&%IFt6$Uhd9&`|9|4aFn^Qef?V5JCucJbEmHbMZjqAO*d&X&nY-D-KDIJS zJCk%!6z#BGE!Cv27U>B02#2HA9p;EgF*2eRwxY_7U*pCFJ1Sfa=AX2!w;7Ztl}d@i z1X+D4(YNkVA!WVDF{v%LXPc~4WDdI|tP!n zoDBD>$(opi!`+>}Oz+r57A~+o>{|K)$E)3Y;S20^z{}y+c}|@9`}fdkm3uwlja5#X zN50`?dU;3&^KN=MN}->fEb2ep{o`jjCrDV6gVAJUY!++#WWC;(xE}~=3cDCB)h3a` f^y3ol!(|a-(ju@TQ2xCL3DJ)u=@UMU?$7=KQi9uT delta 1231 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 A+5i9m literal 4105 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 delta 2178 zcmZ`)X;f5Y7=FH)J9F<0mjPi0Su_z@hG9z~N=U@SWfI(l&@@Jv5J3iqK~b}@#8y)4 zYf;mTGO)}IWdJFm-E31cv;Fj=bNb=$I>%Gc``sBue>5ECe)nCU_kExDo4=C&NHU)v zK64g8K7KoCj$>IetPIg>T^n3EExx*joEcuPYg1`mv(E&E7!@)UGolfzA`bD~q)X%L z*-oCVo6OR9l`gM7ODM7#^!D^};c};na9GTkf;<_y3>GbPgR8MNr_AMBqv9^4Fc`hA z#v0E$V=*BSACV%oVj7D0h%Q-)MzM++xQ}P(OW0iAq<3dU zqfEtoEMSnD>o&VJEKV7V7$QdF%<_6YUIk0IPD)W0Vwr$l&U2)AiuizvN-XD#q{KT4 z@Suv70%BN=mbu*3(Bd{>4jxib#dk@GbEn{86}4DHd73;M84UK4lJpW`vQ|YsECge* zyR^kPy>0XFbB=tD>3zEv=yBTU0!Pt$ev5)$hk+GPW^9jgG_V zb9-Gr57|GC?G(Au-Rfho+S5x%OIxsdt-IP+C}Ri1m{GB_(dVvpdrf!}Ps@1fwyrMO z)a-MwQ}GO*r7}D%6w_A9|1`v~=lFur80$!BCZ;#{i)-~3O z>Ab|}8{=*5Sf*ePgDx}CjCSl(@hbN7t;Ry79j~c4h}Zd$F}dgs9Fpnh!ns0O|muD;=j{>%~~!ZyLu`e#Mk#imuEcK@V))XwICR z1ci(z33JUU97#lWMt_u>zN1K!1D&QbP_R^9ZBC6PgdtrKCDW6Q(UI0e$_{hpQim3b z5q~p6MuRXwBBPm(USv8ldXVGj!(=P+>mzE(%OQaF;vT}JFX}?Pzd&0=thtVNd}WKhf&=zl$16;lscE5q8SE}n)in}{7&3YQA{M$ zVV+MPB&I{A|@ij3YQhth4%VBxT`(RF60Nbb)AT`qQPEo??WSr zCj`aoJ7J?11>Jm_7eAm@`8Q}2i>KAtNR8HEJk=`tA>A^?L)f5AQFO=xW9+|>^=#sG zWX2>=<*i7(*?~>kgpZQ9m}0RbfX!uHNYCuYqYOi6EA7S;18A?LvUc|2`Cg2FIqH=F z_6BeufDSTyi(%i$WwMHTn*@Asc((rtArzAthj($5xe^^^dJhc=f}l~Fyt=p7sYBi{5CNW!MTpwBnjjE;a` zGn8uj(4Q~cjQL6zDu_-~O|d5Xp8c@K8Egu@Ys7lLq6>G&nymPMH1R?s^4OFcQx^KM zLM$@eDsEGlO|i)xBZqBr2%%KdF|u7GnkvW2B9kRfqSpXE>cYfWIhZ3NPJsPH6RL57 zE#e#}#Tf$lj1OD3`9H@UR5lfk^K=s2y@oHeNhjkRz9g9h2R_7C)I0;S=;HXArf;Mx zt_k1JNv2<)RT?7{I8llV { private Game game; public Individual(int numInputs) { network = new NeuralNetwork(numInputs); - network.addLayer(4, Activation.ReLu); + network.addLayer(4, Activation.Sigmoid); + network.addLayer(5, Activation.ReLu); network.addLayer(5, Activation.Sigmoid); network.addLayer(3, Activation.Sigmoid); } @@ -29,7 +30,6 @@ public void play() { // System.out.println("PLAYING"); ArrayList newState = game.getState(); ArrayList actions = network.rawPredict(newState); - System.out.println(actions.toString()); if (actions.get(0) == -1) { return; } diff --git a/src/Mario.java b/src/Mario.java index ab4a8bd..a222d3f 100644 --- a/src/Mario.java +++ b/src/Mario.java @@ -35,6 +35,7 @@ public boolean collided(int x2, int y2) { return ((Math.abs(x - x2) < 48) && (Math.abs((618 - y) - y2) < 48)); } + int numJumps = 0; public void jump() { if (!upButton) { if (inAir == false) { @@ -45,7 +46,9 @@ public void jump() { y_vel += 7; } upButton = true; + } + numJumps++; } public void moveRight() { diff --git a/src/Neuron.java b/src/Neuron.java index 176bbd4..989fbac 100644 --- a/src/Neuron.java +++ b/src/Neuron.java @@ -8,7 +8,7 @@ public class Neuron implements Serializable { Activation activation; public ArrayList getWeights() { - return new ArrayList(weights); + return (ArrayList) weights.clone(); } public void setWeights(ArrayList w) { From c1c9fa6bd1704c8d4ade6d1bf5fb9e716b0f8d69 Mon Sep 17 00:00:00 2001 From: Abemarkar23 Date: Tue, 28 May 2019 13:48:15 -0700 Subject: [PATCH 3/3] stuffz --- best.nn | Bin 155 -> 3614 bytes bin/Activation.class | Bin 997 -> 1053 bytes bin/Game$1.class | Bin 1981 -> 2053 bytes bin/Game$2.class | Bin 773 -> 773 bytes bin/Game.class | Bin 7248 -> 7286 bytes bin/GeneticAlgorithm.class | Bin 4037 -> 4180 bytes bin/Individual.class | Bin 2879 -> 2864 bytes bin/Mario.class | Bin 4157 -> 4157 bytes bin/Neuron.class | Bin 4470 -> 4545 bytes bin/Trainer.class | Bin 1751 -> 2200 bytes data | 30 ++++++++++++++--------------- src/Activation.java | 2 +- src/Game.java | 15 +++++++-------- src/GeneticAlgorithm.java | 14 +++++++++----- src/Individual.java | 15 +++++++-------- src/Mario.java | 3 +-- src/Neuron.java | 13 +++++++++---- src/Trainer.java | 38 +++++++++++++++++++++++++------------ 18 files changed, 75 insertions(+), 55 deletions(-) diff --git a/best.nn b/best.nn index 1544120a4a3b461136e5000e4242dcb99bb59ca4..5367429cbe19d0d37abd4142fb553648170eca60 100644 GIT binary patch literal 3614 zcmaKudsGuw9>*sSG7yp>CTLM{v2>4Os}LS_5jf7EAXtGKr4&6t2@**pKuE$%t=yYolo8+{lwaJ<^ zy)FddspVM;txk{34%sG8m%F9uRcbeXtyZ2DqSEPoGd0NTAA8b3GBwL}YL@HFtjtf$ z3y%CCKgvN^YZ0zawOuidu`{@nEL)d~>_Rw`|6HcE%VZJWRLYd(qVSmW)kCr6)A6`* zD*0p{zI=;bl`hw-Qj+zEAjE%0`Gz29hC-E~)K3>=WopPCR#ol4Jfe1K5&r9WOk6R7 zWNHy?I<8utoZuQb+4Ua>HF^Zys7gpmQN_^$Tro!wx%~*`}1f6$#<-$5_!S zPZtw!mUot$39sgGS#dZi! zwnermgPSxUzi@WwIY}tfKY?}ZM>}P45T4?k@Z7(1wHM8kV`Y6+om~}7|K|ScH&9(G zgvVdyZYsH1ZVmF!^0BcmJ97c>WaW#Pid)eOAv`54Fl|mE-v>NvC^a!^RWaZxPIG1W zXXZc{FOdGOx^PGd`bUo%6S@-8nfwnrGrc1&!R{X+;pIM!I~_yw`192(7M(E!1D@dI zMR-`8_Cfr~u8D!VDpLo@kF1#pJ@s}r<3D`-y7Yrx)({>a^ljZ(kV3y7FtT@%UaDFU z&-kM|3clDEu@u4+qMYS%hOh#V|6$sayn7zZ^Gl$_`$OyQo`mp}An+INjq}A|{cHl2 z-5PrtlfNx^pCPXrx_-Pe-ih+tW1xT3G+SurR5QaDx!%C6y&?Yis|KI4hAVeyo_tj5 z=W=MHlD}yyqs;xM?5aNwX?qe5 z8qE`;s%BoHdn}V*lD&1DC=kJTfunm$Ru0&|_<%Ncvv~YI;3=+$wXnNn5W?gAx`f3m z4Gy$F*_Z2hha1w)@JQqALig4h2v700nEw-9^n~fZO68VQJj(D^3TsbZkPyNXqGO!J zn!!lmKk_lZWOLBW{YYGF|?yl&=Lv!3DLbF>BNpF5S|h^ zjzl>h%>exGkNpqWNLv6;j=Tu9n!sS+PyE&DSZPo@c>eL1XfVH_aAy6inoQ#P9#@%ZApbhkY<4CFJpB6Lw7ytEgSh#W#0pTf@R8>;uJWTVX#oOwJCV!r)SayrjE3n=_4&?dYnhTiYQ#@u;Q!#4aA&! zr>aK-z}vT#p)|6I-4g4oS?-xVScv{%e;EuuEQHN~ z^y@h_S7?r~GsTNsZ`K1PIWr(Vc@W$O{A60M-G_dl3O*L!H5luaL(jy!{PNK=6WKsL z!oF`0zgR*mil3TvIolJg5t<8 delta 20 acmbOyGn;Wj3Zu=$R6P!caux<4r~m*wbp)pX diff --git a/bin/Activation.class b/bin/Activation.class index be807e67858eeecd50a103611675a43a0431c2fe..12c1dc12b65c2cd01e1e732b4d77f543c3c3a3bb 100644 GIT binary patch delta 555 zcmZ{iO)mpc6o%j1X=kS6qUu|zR;y}?s&8UJ(w%fQv6y8=QySHUkA#gMAQny6;x8~3 z8bYl71bhEN#5q^P$}HyG=id9i=be-JFs@DO?d$Ocz!KK#R-vOkUpv`3C^`G(YHfeF zzMa>@65Z&j-=y+=5&`HYj35LCB@70WVOYXs2r`UH1Q{%bF$oJguaXjNkoC`u2shFq z8J)t6foXwIrFdG*9uyDDS?BENxKx$MVzyBc6@5V>hsDObxDt9}&lkJc7-TmfG{jz% z+E0Dk(Lwf|M3=<;l%F8na7cSV*FAa_^!pVIC>RPTh$tA*6+{)p3`(YbDFknMV7Dof&?>#Gg>7 z3w)JDQmqZ7`4ee|ldxOzB^o@*&(Y^0;cjX6i@VMV3tFU!%+#&2;2b}8;x|K(1~}I; cv8fF=v%!|z$p@e zh^YA={02J2%qD^c7xsQL^WHwsgY#*7AKx!y03CGtUblaFB2x-!Ec726M_C06(t+(l zU{S$la2QGo4ui|Eq~JpGsixpzCMt-gNJXcjE;r!Y*o>}4)@-5`-H9u?tFVQ3^d;_v z72O)OUb4s{ijW{rg<0~MBf25x=lm5SOwXG`BnQZ7$R#x7H54ojMGa-Cp<=(0$c&K* z!bFUG5Lz*cK`3KXf&r?} ziK~u=5VV!vA#!_H=Kb{)lG|e*ksUIavSz diff --git a/bin/Game$1.class b/bin/Game$1.class index 71d8f1ea0ae52b2c141221dedef39e5f279dd3cd..1b8d0e8e7368aec10ea67ee9b828b6b8ce272a69 100644 GIT binary patch delta 1084 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 delta 2819 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 OF%BIT(H%iN?EV9l8GX3` delta 336 zcmYL@NlQWj6otQM>U&Q_bAUprj6mpN%W_w(i-IT!k)ViZ;VN1LZ6vUPqD`+qAT4TD zI7@+xa3Hg}f8jr9p{6ki#~yymgb+?JQxhr?x^I5j7A z^F|v}nr2HgtSyC6Q_%xvzpmzj`hrcrM8zi44Rgn}yRN0X^=o{Q2jVd!k5OW+$kuA4 z$ayf`Z5y#XVd2Am9uwOI!da>kej16*991JyAe3d&`&4AEhtGl;S#D)O>LNZf^B0vmQq}+f diff --git a/bin/Individual.class b/bin/Individual.class index 28841db1c4b237f4fdece2acec78f6883c1fc99e..2713087bded45badf0ed0a5247b4c8bb2afa34e5 100644 GIT binary patch delta 1500 zcmZ8h>r)d~6#w01lTFeqAdiT=iaaVT2#OU&(`Yb<DXmsn~}^S;EpJ&^%CE+t`=d zmo2@tDE9rOGo9&(R+gDEWBF8P`cL#*|AT(%*vGlM879L{=H~4Ao%1`-yTAHZ{J!7+ z{pA6GZhXJsGu1z*tY_ijO?6v%HhV6viwPDKci33lL5?SJfI*pyM=yE7aG1jjpAP{9 zRXjz&Ks2Fq9K|uQ*U{?kX6N-0BQ~9pA;vhKms({eo0yY|agH;h*BS76Guc$qvJ;n` zKSpO5cFaWQqn+_+GS)eoNg2slZ`O!U>M0N64CN=2lg7L;nT^H+Q${AKr_+b)eK3&Z zsKhKoMN4F>|B==)Y4IvY3Tbgo(TcMSEGTssr0$~FP`W$@UgL;iTKuh4CpI|}7rwkY|5z0OeZ)#!#)NznN8Sii}*st=i(<< zC0i1|xlX&k;&>gGMU(rXsPnix9JB|Fny{13?Ii0^Aa%R6HB@QNRn%zfs2i_dL;Wfm z#4)v^#}5}7c*wAmmcfe(_)w3>u!FRI+Zi2%$!8b#Vjoe<5M5$f?Z|D<`<0>yWd%OP zn?A+ZPwdi%c8^Y(Ru}Oy`uAw}(O{zc4#^IR2DmM~-(upnO`eI#7Tf-;k)kSOeKAJ_ zJtmGsBvG4*&~UrcMBfI6ObnOf)Y3APyUt*N@*c{UZiCx?BTBGc*|fJIpA9|N?%Dzr z)h;6sp1w=L6-qcKuiZ9!siqohskS;a;&C*g0Z)*0h@_)vMhLqxiWZ!KhB>t10`^!H zYIYU*3O$6qfETSAV|a-q2eFLcW$LXHXDN!Dhix@sTQ!o|1Sz8g(kT8xlZt-&Jwgqu ztRb6oI4_30&AYp3%KHoEBjdODlvIPBc)!S+mJWtDEQCAWpfcgW7ryf$=rGv5Fo!32hZ` z+7o%}2dJ8fcjeoCT)p+*UoxzXy>H@!d$^%Y{EQpgN`y8+Xe(Bdz4QrNByzc2UEp-~ z(sCcCWeuYWeKfRwTI)U<$_ez)XDx)>Ai)uWhe>s+pl5^myu&oLo47^vvh5x?Yn@RQ vizOktipx~RZPF@)E?T?ZOp@%Di*o;RYg_0`N02Psfv>Ie8>rt}!gv1zFV6`J delta 1533 zcmZuxYf~F#6n@@hlTDUape0um`F~YECF}4!x%;{R9Gn~o9R-;;0 z=ZIpI!5LR|hU(T~f7EhH#8UCj@tH++R_~E9&QN(v9ZBbA5~_kR9Osz8A>%hk?S1{2 zkUnH!NYaO7)QxL)CCJt;@$Q7(1?$?$0=0!plaBduMMwZl~37(8H(=we;Ra@;OMB z?ubz)*EY!8Xf_cDTt$;-8y&Yqp*0%i>VYPBD9S@o`)FmnsD^?@l%Wlrmhd)&QEug_ zu~Bh9g5(ccrTsWSIYsUVjFjAwuPR_vQ$$TkOhqxKf)G7c3~g(HZ;)`AU?4b}IQ$*S z4vGidmcG_P;@FngW3h;_fl<*G=sZvH=58)2lXKCK`&Y{ z4nHQTqYG$98XZ%f0*IqTz`3u*c>uj=+t13KV0DW5HPSHs`xa8tf`Im=1-N5cH#Pk_6P> zz|z$2w{3C7AU^Oj_Im=1syBi#rmykw^d3b>y!hBqkBK zhF9!~y#6)hfQd8W>nheR{QbK~Yuny2@$NRxN~gZZ*}ztmhW$}s%OXiXIBXEO*qZp_k4AFcBX%@pcj1k)I{4sJFC6_TA#qpA!jTCrCXv!CHiQq-kJ#aQS wV=^`>!*mcorYb%mtwh!h>-e>hB)a7y?w|g*EzE)!g*))M_5K3#mzMC=KYdaSivR!s diff --git a/bin/Mario.class b/bin/Mario.class index 9b507b5684725da1a0aeae83dcd6d5e23d98de5d..8570c08fb6638aac2c7de94d6812904ab0c98938 100644 GIT binary patch delta 436 zcmWN`O-Pdg7{KxW^E`=Lfwqt+OmW^8QP#k+0#ovoWS>@`r!rengs>2ic8Lhgg5DrC zOv%xbMUAqi$%rgH7+KK=_JvfM9kxSX1Rlco`unAdQbmaxkF0Tac=lwiB}mZe_pFc{ zXUtRKDuPD|dB^s}-(Rx?1IGq0{HB_iuBjnni492{rESq<~%c z*~@Bb*~o!={)MX+MCvdOlE)zeG*H4}_R+{`ju0orBuAOz7}Fdl!wG)VB+ChlpHmW` zO-eW~LE5F1i_*v?3FAl$m*pH+q>~Q0MyK4OOYU=39?~r-dSry_@|QlDBdXaEVw%HE z_0g|+#I=gsx|=(?pM*9rpdlXUNs`*ipmsB)y$oxVl*V|ZaUSbkMs$>?`kGOlWlYnI z>p!09f1aC{30urd%jcC9^VU}K&ekz$TX}D_e6V^x+NKbnEX-$XX3Ea+#V+vGI{0Qi g%-9XSTbx-N;D-&7wkKq4oS*iBU-pJS&e`1LJZUX-RsaA1 delta 436 zcmWN}OGwmV6hQHF?=_q$C?`Y;OPs)k5+Y7$7D1M^DwGTpadti$iwZ&uiQGuEND2N0 z+QS6xVI!oOnBqhz8dxYj$jV-nWI?u2Byb^q+uwl`OO2)W6#691EAky(6C%V8ugkYZ z;=FNRejt~4b`l_uBzBR^9&eMsJh0bkzSDh9_d7l4G{x)ihl7V)Im|i=*+`MAN7za+ zK}yKvm^+m91=ntmYY1ahkVqxzRFOrsi^sW0geWz9-~`_|$t%*?J`1#EYT^;+|~F79_V_y zG{8emq+1X0NQ>#wQhK$LevL4oXLza?7}VPgX*!tB z%S-*wD_vpI{7hK_uPvE3wvG3e!L()b(F*uvCCpfu&$c_l7pvu~o#(qX^23_>X)Vm! h9e&w8<}Au@d%_;g6pQwbCGXOPfmND*bf*9S diff --git a/bin/Neuron.class b/bin/Neuron.class index 836049130a5de659162a3b6143b625129a4bdc9f..ca10f3f5cc2687672524de1bd1dee01e8cbf8ec9 100644 GIT binary patch literal 4545 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 JCo036{{^HZ^O67n literal 4470 zcmb7HYjjlQ72RKEGIuguf`m!P17%RClY~bRiAs=HqBtcyN@&s`AeYG{T$tCIxx-8A z6UAz)_HC`L#ZqEh5o=`XozJFI2K)*a?Y9nEOA=OUXvyY1`|Y@EAfOP|qfUBB zubp+Qgmcu|ldu(xL$))t&&?^+_vjUQ*GVi{o6TBBdYqiwsZi7F45chLpXKV-sn)FY z2DQWPbe?8AS8<Q)F@ao0I$xlTHzVD_vnzj0Y;$aecn7-mPO^uT59Q_p;q z@2>QqT?0mK!ay*D1~eL&tuSkf7)>;xS)n?fNT(QMxa6rKg9I?6$4S|n^2t4RcAJ;F zx}J30O7vMwCu1%S`rUmFqYn0Xgh+t7iU1p5y$o zfVhc4)RGZ4ie%au46Lah3*8^?cLHPoEm7Km{U#0|K`)s!rC1&9?iQtOK*~f~cKf&5 zJ^8@uV@Kay|5W&95lzm7t9K-=!?NqjHY>F+aNaXbnFX98dA?jeNz)m|#y}QT zRzta=Rn}81<=R7bmfgxr#BC;S#~mzQ$F;MTo6fRiO3gsG#aMB?a~kf#-3E>+)J-&$ z(yWPlq@S=-4zu;%t1xqdyrRn*+=tH@xPOwodynK?J89zccz|h2=Y1#&@0s{Men9o@vvQl5aa}aqgE-AX4zWkh~5 zjCANAo>RES+ZNGk)t#IvJ()Q1vQ&fTgZvQ`8uL9r7X_+v?> znhtMC2p1%}3wYhcU+`DbE!9N=xt9%#UE7y*=t8k(>nh0fcJmajiKmkprgK}G4XjLB zD|>XPH=WPM?dzFbPI)9O7OpUlf%*8W=Cw+`BlujyJXG|j=Y&Tb@6$L(raA7d zn29=$F6XF{*|ujftAP6RXn2~hRcPTg;7wr;pUvX)#khoTN|ISNHBX!Bho2+B^tN+o z7-%2CrDrkghaB)}V}b}oU=o8EZ15JtGstcDn8trO=R9XJBGf72kXOOGgu4W9HSxBc z;X@_TSrtgDi-vi`VNr4ODnjvbPoVAcvuG1&-fj=tY^JfX0$QL9Er7)ulHx(Nq-bl5 ztNpal)i#2Ux3!O;F`v44&WZ7V zPvq!QW&miW;TEzqhdH{K9ACmb%*6`c*YQnq*XFq{1MHH|7@e0ctj7%u>oV?$@yUlz zaD5%B#%aWFKpEJen7{_E=BH3Gm}R_sS!FOE%*$nTwqVN4Zp0?K^5nEx=uy{`uxdIy z*mXi_6+u%Lc@$1Vc1~|MGuU^iKk=3=ka2mp`OHe zyAGFjMMXW5XfU->AWM0@f(p2j1T3ezJFuGf4Y-;gJS(sRo%{^A7DxDbX&*4sm^Elq~3_g1f4-PP4Ul_%gNAUH!M+$hffNvLYlB=Fj zcx3zn7u7w<0pZt+yFqicp4M+5zV*0@SXMLQiSk^7r?e#NICch46YT_knG;)rf2Ig5 z2%kY=89ehSm>N8TA8`X^QPo0+)41$yLVuR55~$p?G71BAqa%2J>>Sj<2+pnW%bFF{ zzK%eBpt#&WIEo*481;dU;4u1GM%UCd)CHtMB$FaLc52AHJnl-rH0yB)0Hooq`tQBb?l&9BxN_FxO* z*u^hZ3pVy+FK)#U?tsHDquqE6Nt{NOInCiYes#WtJYK~?9yN#Y7KQX53QcI+OGz=$ z__c1+^7Ja7q_*G2Z?qKW<7NDoV}4?I5x*mA)kHFe-%|tu;>qAOJ{gqvE-l$0uRZt! z_X?vc^pjDRfoDUCUSzNgp_cbCQ@5E0^&T3OdKYtibKk)%>Z2Woo>7#EqEZyq91apN zzXm*^ps(1W!{=~;YWUN}g)Pm4{@n%qxq0`KbWqu^ZzJ^EbT3 zL4y7}{=r=e|HQwFK3-#((xZ0P#)>**o8Z|;IR+KG(HY&LqEW4$k8Dyy6HQ8_d}91H z-KRtaoYKw3JNLYvem6lJ$1L2-26G>?e?MEueb|f#sE3Di5MEE;S#BabHB0&b dw6HZvPxtFwPlNAWH1b!i<}FY z1OEn}turZOXB@xk=s)oX_`$KBXLs8sMKhD^?%n%x&bjxw`R$*deg<$E-x^2=823GC zJIXVV6v!>f6|n88npb`>^0Gil)(Nn!A>{p^UAv~=W9wMb1hk$Wgh(;8&e}8t}MEc zH<3e{*n&md7s!-j!o;7fle$1};mPalG@b1Db4xV>+jV>cM+HvqXfWvn%JZ6yKrL)L z8F)kBLg>>B>{`ik9jobi$_Yy2&y_`+>$Ewa5I7h*+iq!mW@7tImUQ#_=d_78HS%;o z9V&7~Y2#TFZ)u~UjklEUko2k~*7F}E1Oy%SRsv})Psv6sPPZROFEG&0hR33BYo5CP z=kNOSM;3i3Y3be;NEOB=CyTRP-)(MgYWuq;inzqe1zH6XRjJ#sJJqm(_X%r9k5SK) zt7Y2{vbdrd4&$nU5rG4pvR0L6;u@}#IAxetO;6UQRiMW&i!t2N{4QlMiQ5J~VZTSMz+REMPbSKkB7%xt zt-Cf8o8_ICtUHDo6L)Zz-C^CbTvZ;`EKIh06=$_y#l(F)pjbXTxC>x>l8Un#Jj9%V zM;%A7vg!w_ZsIYXke=IQD-T8NI5Bs41_Q<`Sr6fSX5w>v!TGMLAcVt_I9!ND3&(L= z{!lh)VjdRr(qE(M&^H#&00F18Y_5~V0;(n!VN(^x+^{7p@Ys)Kv5dNb+E%YS!I^O2 zGNhsL)_B^Ig)u!eUDBgsF`r%d=+0H3yQB|%N85O6dpi&OYGdor_eJ7#CL3v+hpn-> z7Ap44#B;0)>>-;8&#h0`dYznYAE2%NyoMn>lH)a>0ojV%^eh!coAGiP(j(2&OP<`d z91^{~cxUiVf7vHKo#$15Qu*wUFn{1(0{irHXg`Mip+(1YgT*l=UUgJ=-#QNL4oQU} zX5@e#9He6ghtSK!hk2hSoFh1f<6(J8Yl7CE4T!mQoGkaZaEjkEFE{_9xhuqyM=}gd z;{Z(Li6j>m(J2{S3x*6?u)(*vpax(2g_dux~-XyMbY7QXxi zSE9>83r|~E(qJR0&WF^F6T}G$b&>#1QJ&KnBCyLigR3};N8H}Jt*0YUF^M$pqJggn z`W!C7gHIX(y>us|cTL_2z4`g81^hmyRTO0+e1(FlNwB{L_ZxqX>k<8W8(Tlq>Jb$?eT*jh UVwgJ`Pi~8FJOy6RHGyyb1r+Pl%m4rY delta 933 zcmZuuO;giQ6g@8?O&S9&l%n$40&1Z^p(#e-j6%Rel z=k$=4&lPq|y;#yRx}oX2uVz?OD4A-}lre-8B8C|}&(yLS%BsdzXz7Kf7tBoFP;e3w zgR4-?7-q^;we6Lns_E7@HZ;j}25cq8&WUIn7b(j`47JeTZxtNA%0#*olWy7V+(S4X>^NJ) z^e#1V4FPS90UgxsfwwUh=%Sqc^$-SSM4Us!rbUz_a5ze*HhnLN2Hp{ay>Vn8b7}YH z9xlX#?m!inYPb?~R8eUJRVX!FuOiv8Qo|~tPk4~9;X1(sIfFC+I7Ut!r}5qBp=Xc= zjiL`z=qDiq|M(L5Em6iKRBVu>DUzg7#8JFSTntWYUFz){ZgeSxL2q+02AvRxC%*uQ CMXzE2 diff --git a/data b/data index d15196b..fd70488 100644 --- a/data +++ b/data @@ -1,5 +1,19 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 +1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 +0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 +0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 +0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1 +0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 +0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 @@ -23,18 +37,4 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1 -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 -0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1 -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 -0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1 -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 -0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1 -0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1 -0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 -0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1 \ No newline at end of file +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 \ No newline at end of file diff --git a/src/Activation.java b/src/Activation.java index afb6d94..7287264 100644 --- a/src/Activation.java +++ b/src/Activation.java @@ -1,4 +1,4 @@ public enum Activation { - Sigmoid, ReLu, Tanh, None + Sigmoid, ReLu, Tanh, DoubleSigmoid, None } diff --git a/src/Game.java b/src/Game.java index 19f49bd..6706b5c 100644 --- a/src/Game.java +++ b/src/Game.java @@ -32,11 +32,13 @@ public class Game { public boolean play = false; public BufferedReader in; - private Timer repaint = new Timer(18, new ActionListener(){ + private Timer repaint = new Timer(0, new ActionListener(){ public void actionPerformed(ActionEvent e) { frame.repaint(); frames += 1; + getState(); if (m.y < 0 || (frames >= maxFrames && !play)) { + //System.out.println("done"+GeneticAlgorithm.numDone); if (m.y < 0) { fitness -= 200; @@ -44,7 +46,7 @@ public void actionPerformed(ActionEvent e) { Game.me++; fitness += m.x; - fitness -= 2*m.numJumps; + fitness -= 0.5*m.numJumps; //System.out.println("ME"+Game.me); if (indiv != null) indiv.setDone(true); @@ -107,7 +109,7 @@ public ArrayList getState() { int buff = 1; if (m.tilex == 0 && m.tiley==0) { - for (int i = 0; i < 9; i++) { + for (int i = 0; i < Math.pow((double)((2*buff)+1), 2); i++) { answer.add((double) 0); } return answer; @@ -131,11 +133,8 @@ public ArrayList getState() { } - if (answer.size() != 9) { - while (answer.size()<9) { - answer.add((double) 0); - } - return answer; + while (answer.size()=0.5) + theBest.add(new Individual(numInputs)); + else + theBest.add(individuals.get((int) ((individuals.size()/2)*Math.random())+individuals.size()/2)); } - mutationRate -= mutationRate*0.06; + mutationRate -= mutationRate*0.0278; Individual.predictionThreshold += Individual.predictionThreshold*0.03; individuals = theBest; diff --git a/src/Individual.java b/src/Individual.java index 49beccf..74f245f 100644 --- a/src/Individual.java +++ b/src/Individual.java @@ -7,10 +7,7 @@ public class Individual implements Callable { private Game game; public Individual(int numInputs) { network = new NeuralNetwork(numInputs); - network.addLayer(4, Activation.Sigmoid); - network.addLayer(5, Activation.ReLu); - network.addLayer(5, Activation.Sigmoid); - network.addLayer(3, Activation.Sigmoid); + network.addLayer(3, Activation.DoubleSigmoid); } /** @@ -25,22 +22,24 @@ public double getFitness() { return network.getFitness(); } - public static double predictionThreshold = 0.5; + public static double predictionThreshold = 0.7; public void play() { -// System.out.println("PLAYING"); ArrayList newState = game.getState(); + ArrayList actions = network.rawPredict(newState); if (actions.get(0) == -1) { return; } - + + boolean turnRight = false; if (actions.get(0) >= predictionThreshold) { game.moveRight(); + turnRight = true; } if(actions.get(1) >= predictionThreshold) { game.jump(); } - if(actions.get(2) >= predictionThreshold) { + if(actions.get(2) >= predictionThreshold && !turnRight) { game.moveLeft(); } } diff --git a/src/Mario.java b/src/Mario.java index a222d3f..bd4124b 100644 --- a/src/Mario.java +++ b/src/Mario.java @@ -46,9 +46,8 @@ public void jump() { y_vel += 7; } upButton = true; - + numJumps++; } - numJumps++; } public void moveRight() { diff --git a/src/Neuron.java b/src/Neuron.java index 989fbac..f171f12 100644 --- a/src/Neuron.java +++ b/src/Neuron.java @@ -12,7 +12,7 @@ public ArrayList getWeights() { } public void setWeights(ArrayList w) { - weights = new ArrayList(w); + weights = (ArrayList) w.clone(); } public double getBias() { @@ -25,10 +25,10 @@ public void setBias(double newB) { public Neuron(Activation activation, int numInputs) { this.activation = activation; - this.bias = (Math.random() * 2) - 1; + this.bias = (Math.random() * 9) - 4; weights = new ArrayList(); for (int i = 0; i < numInputs; i++) { - weights.add((Math.random() * 2) - 1); + weights.add((Math.random() * 9) - 4); } } @@ -63,6 +63,11 @@ else if (activation == Activation.ReLu) else if (activation == Activation.Tanh) sum = 2 / (1 + Math.pow(Math.E, (-2 * sum))); + + else if (activation == Activation.DoubleSigmoid) { + sum = (1 / (1 + Math.pow(Math.E, (-1 * sum)))); + sum = (1 / (1 + Math.pow(Math.E, (-1 * sum)))); + } return sum; } @@ -96,7 +101,7 @@ public static Neuron reproduce(Neuron n1, Neuron n2, double mutationRate) { for (int i=lastRandom; i arr = new ArrayList(); + arr.add(123); + arr.add(9); + NeuralNetwork network = new NeuralNetwork(2); network.addLayer(40, Activation.Sigmoid); network.addLayer(3, Activation.Sigmoid); network.save(path); - System.out.println("done"); - NeuralNetwork nn2 = NeuralNetwork.getFromFile(path); - System.out.println("done2"); + System.out.println(network.getLayers().get(0).get(0).getBias()); + } + + public void testGet() { + NeuralNetwork network = null; + try { + network = NeuralNetwork.getFromFile(path); + } catch (EOFException e) {} + + System.out.println(network.getLayers().get(0).get(0).getBias()); }