From 31a4f82dad86c9a5155612c082e35992114d81ba Mon Sep 17 00:00:00 2001
From: Jin Wenyao <wen-yao.jin@student.ecp.fr>
Date: Tue, 21 Mar 2017 12:12:58 +0100
Subject: [PATCH] go

---
 __pycache__/agent_afterstate.cpython-35.pyc | Bin 8395 -> 8946 bytes
 agent_afterstate.py                         |  16 ++++++++++++----
 puzzle.py                                   |   3 ++-
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/__pycache__/agent_afterstate.cpython-35.pyc b/__pycache__/agent_afterstate.cpython-35.pyc
index 76885ca5ecc92570533a76bddbf7a6eb8628c6ea..868c7462c3ecc9b239e39999006428952923ed71 100644
GIT binary patch
delta 2059
zcmX@@_{o(^jF*=yo9kkPh0I2-BaGaf3=9ko3=9m#Y>bm{GOE?5a4@v6Gej{nq;N8%
za51znFhsF1q;NB&@POH@3@N+}DSTiy8$${|Ly7>H&CZY_$dDogW^*v42s5OJfZ3c3
zDWVK1Vqi8GLy9;<iUdQ7Btr`$LliediWEbNG+2s<Aw`BEMV6tZo`E5Xmmx)tAw?c6
z!N-uIz>uN{X7hvfD>0-fGo+|6v@kJ52{5FnGNh=1Wd#{h)EQDVz-%Fg6itQ{EihY{
zAw`=ZMF-3l0hti2se6k*F|8!EsJJAtB-JrJHLoO{0SYF+W0H|6VrO7rNCt%rNEAeK
zFfcGMgF-25vLbV4eGLag3KK&%6GKr8Lk9yxmH<OD1BekX$dISY0Fq?}%Ps;5W(gt5
z@`FW$5h68g3`M6HN<<h+M8Q&m49$!n#0WB145m&TEC=J7$4fAP^zku*^hq+LurQ>s
zf;<S)BhKIgF`=1}fw4rAp`C#tjgcXRjUk0~vOJ5ZhZNW-X@(kzH6U|>LFRz;N`Y;z
zVFM|NmjRJkvLGigrZ6xBYqI;j<Y8c7C}IQ=Y?F&vN*R?WzhK$Ks{#rcCI$uuP6kc6
z$;(;ujM?H#N(*vQZ?QrsJ_t8HF{LaqFFEy=Fe*R3Ag8o=vN2mABj@B+HbrhDkOgWW
zLSyn8Hf1RTP&6=dGU_sNGI26-GV(Bjun;2;<L0Mqvl$t+CpU6vvZ^yMFlbL+&k+&i
z!@vLv5RjkQ8B#bH(pjLX8Iq1cTyP?WBwt9vO=p9qT1a|@q||gakltWT$;qjl9+Qu9
z8caUQsWLf~OLKA*SB#J*0|SFS$m^ig!NADR$Upf6m%-+L96K1rwHO!}ToH1jj38L0
zJozk_94o}TuethJjTsmiyeHRluVS@fU|<NEtjBYo+Y#h%3lL#GS%O!W(}{tB;TB^`
zk=0~BUI|tm1_p+R$=ST;8J#9u^C>VUPmbYpRrUla7i3^y&}1r-0kOdXLLi-N@tJuk
zsTE0^kMMCbPCh6o!YawYz>qQd1%E4u=K$hmgB%KtKlWQpc?CuKAg!#4MMa5~x0tIk
z3yO5X0$`(xypS!Ld{97wF?I4SfxXV&AT=yG`RPVQ8XzTXNNxf9f+aaWH|Z8*QIQqM
zjUe|HfeDa9i#!+@7;-n?5>#ente*T&$W<6@99v>hdTwGx5hzNF%qNElJF|u`FfdeZ
zo+s?YXbvj4ia=p?i#4+(HMjT{b3uMV5hyH+d_h+Dfn3C#o?4>G0db2vNYrYwxTrZ}
z{bqkrK}OzCkV~10#6c2alXJyX8K+I2EM_GDvb`uABnq|qu9&2oKS(hv#Hb{YTqMW>
zE<|Bc6buptc}kP12&@7e9Uu?hVvjFLEJ{x;nX=hNyblo-izYvou&D>7qf7yH28Nga
z|NsB5$yWr9!DNtWV3&X$0rnFpCcsfp1kNVfAQ!L|CFZ5%=iXug(M8H2T_6L&(FpT8
z$f*!hK>=8l0@BBllAo6v#aWOsd7dN(C^@i#f@9X?{gN}}5b8nRL5e7lqt<OMm0HMH
zZwRs}5kx3~h*S`Pa3nZ(^gv=_AOhr%TP($eMI}fsXD%)&DiQ@r+k(QD6A`wz*osoi
z6N^$HE@gv+U6BMxX*|g7jCn<qr^=`>Zrr>}rkzpW4kQ6`T2Tau1r9!N5n>Kf%vn;D
zm{(koUz}P5c60vZ0y$YFP`cM-M_5^u15(Ra42i`&1_p-72LwepZ?TmYq$HN49-Mqe
zu1z0oGAIiafl?PrhC>S|kWDuxH_B_JixzQ#9K{VHz(uGThy^OJia>=(5va5%0u=_3
zv<u4QkSGQvIB?D=0!JD+sKKEOil-v5ck@9;m4FDt$-D}RJfOmuhfz_MM}&uMvW0@R
YAUNDPGfPs7O7in_ii=z(w<x#+07S~CLjV8(

delta 1838
zcmez5dfJgojF*?Io#|qPr1VCvBaGY}3=9ko3=9m#-x(&~WK^qfVPlA5W=P>+Na18?
zVPJ@2VMyU(NZ|&vSs7Az7*cq_Y&M1zK86&2Fq@qrMSvki5X|OaND*R45eBn48B#<T
zQbZY2#28u_8KSrtQp6cjB*0SK3@MTfDN<lI4?~JHLy8QT9mdO$BFm5>2j=jB^~*D)
zC@`cbGPE!;MDa7EC^4icgJlI6QdAgHRKaXPh7>i16m>9Lh#^ITAw?6+76zFRtf@8m
zF_W2iGRUtC3=9k)8ibia{`Q<~%A8r>!N8Ek&rsCJ0AdI*G&6u0@q!F_{2)e_5JIGe
zjiG2ILy0g$i3nIqkfE6ogcw0OMPcg1z;bY|I0H!ATd+0>h7=}-6lRe7Kw88YT$&j(
zK_)aaGBB1%Ftjr;q%kt2uz=LGf!&cM2vP%5(!szGF9|kUilGK#Ey!Ra#u8z$s3b@c
zV+|XK6E6)Svt&R{VoYIR2-alvd&x6-BTFfx(qwhkO}xq=?=vwlFmN(x%1(a9nkUB>
zUs76-lNz6xQkIyPoO+8D%)P}15uV)67Rbmk`6inpn;`=OLy_8KR(54E9Z-leax&^N
zax!r;aWe8Sax!u<ZFXXx&B&-V`5uQRt0n^jgVtmo&WO!Q-0K;I)EO8UY(Z9oqJV)>
zlu>l@OD==S61+{UMhpxL&Xec!u41)jU|{f??8kSX8<aSU%t7{<O}60I<#c3VV7SGY
zQe-(fk6(gSn}LBLU~)JAc}B;{(E<vL(UWTgT$MdQ$^{u17&MuRWI$}NfDlM0TYP3-
zN@_*a<|hK&jEokOKM0C5CQRlKYK5>TR|{|(YO>#A$}1?+1F2_CEGkN@yv1CVSx^M>
z>Md5V{vuCg(<eU^l3<LT{7Y!BvlmDcOHO{eQIQ5n2^*3Fz)ojL&d*J{#aL8i333?7
zkwstv<hmkv1_p-I&A)_|85xTw%Za)QgN<WLEK1K!tSIsZ=`fpIChE)@%)r1<xOtzb
z6Qj93NE8%6w^%bvQge%MF&E?)6oCS;$Ok0l3vv;2dTNO#2gEIIAW_T7=Hljz<(u=x
z1sQomKrUq}5(i0yPVSXZW$c^0S;9&HWP4E<NEB-IUkOP!KagTph*60kxd@O2T#0EV
zsYS&li6yB;K_F3(r!<+0z$(CT0P^51_V|*-qV&{~p3O0meX#JKHJMr3rrwT$fgw{s
zoq^%y|NsC0Yw{I=BP|JJ7T6tNCxCqfiU)866oJ#B7RY|KqQtzE{M=hCAi4;Yw2MFn
zf+G>;agakHrh<a6C>f-WB_%&EHHxz!WAZ*}4oM4;Z6KE;#R({ICQZICJwpzmA596!
zk;^tum08GGZvZkO0YoT)h!hZka5OlsbU|WbAOhsCTP($eMI}f+VJ<EyDiQ@r+kirv
z6A{w4*osoi6N^$HE@y*;WRV0&X&lHejCn<qx5}w7uH1Y}uANaIl*x)fPAdurDFFwk
z8i-{EQp{OWl$cjskYAiy1a@=Y<OvG0Dp?>a*%4M2WrNf*7DM7R7o^)_@<jzH#+{Sj
zD75K=%>-qIB2X$r$!%ys1hV78<b{e_^&&-FAY-^e1P_QX1reY^q6kzp6oCo>Nb&_`
zZb&?X(i}K*6oF$79KPV71w{_Tk9i<dia`X(DoFgHxj~qLfq|C~RP=!2hKEs3hDUgE
byppvbI374NOHzwU^7C_wi<~E~R&oabY`%6Q

diff --git a/agent_afterstate.py b/agent_afterstate.py
index 11ab05f..0717424 100644
--- a/agent_afterstate.py
+++ b/agent_afterstate.py
@@ -11,7 +11,7 @@ class Action(IntEnum):
     RIGHT = 4
 
 class afterstateAgent:
-    def __init__(self, mat, TD_lambda = 0.0, alpha = 0.0025, gamma = 0.95, epsilon = 0.01, verbose= True, symmetric=True):
+    def __init__(self, mat, TD_lambda = 0.0, alpha = 0.0025, gamma = 0.95, epsilon = 0.01, verbose= True, symmetric=True, tuple = 2):
         self.state_per_tile = 12
         self.commands = { Action.UP: up, Action.DOWN: down, Action.LEFT: left, Action.RIGHT: right}
         self.alpha = alpha
@@ -21,11 +21,12 @@ class afterstateAgent:
         self.TD_lambda = TD_lambda
         self.forget = self.TD_lambda
         self.symmetric = symmetric
-        if self.symmetric:
-            # self.tuple = self._tuple_advance()
+        if tuple==0:
+             self.tuple = self._tuple() 
+        elif tuple == 1:
             self.tuple = self._tuple_advance()
         else:
-            self.tuple = self._tuple()
+            self.tuple = self._tuple_advance_plus()
         if verbose:
             print(len(self.tuple))
         self.W = self._generate_dict()
@@ -58,7 +59,14 @@ class afterstateAgent:
         print(list)
         return list
 
+    
     def _tuple_advance(self):
+        return [[(0,0),(1,0),(2,0),(3,0)],\
+                    [(0,1),(1,1),(2,1),(3,1)],\
+                    [(0,1),(1,1),(2,1),(0,2),(1,2),(2,2)],\
+                    [(0,2),(1,2),(2,2),(0,3),(1,3),(2,3)]]
+
+    def _tuple_advance_plus(self):
         return [[(0,0),(1,0),(2,0),(3,0),(3,1),(2,1)],\
                     [(0,1),(1,1),(2,1),(3,1),(3,2),(2,2)],\
                     [(0,1),(1,1),(2,1),(0,2),(1,2),(2,2)],\
diff --git a/puzzle.py b/puzzle.py
index bd2f615..c32e3f8 100755
--- a/puzzle.py
+++ b/puzzle.py
@@ -176,7 +176,8 @@ if __name__ == '__main__':
     parser.add_option("-a", "--alpha", dest="alpha", help ="alpha the learning rate")
     parser.add_option("-t", "--train", dest="train", help ="training episodes") 
     parser.add_option("-s", "--symmetric", dest="symmetric", help ="symmetric sampling")
-    parser.add_option("-e", "--epsilon", dest="epsilon", help ="epsilon the exploration") 
+    parser.add_option("-e", "--epsilon", dest="epsilon", help ="epsilon the exploration")
+    parser.add_option("-u", "--tuple", dest="tuple", help ="the tuple to use")
     (options,args)= parser.parse_args()
     print(vars(options))
     start_time = time.time()
-- 
GitLab