class ControloAprendRef: def __init__(self): self.mecanismo_sarsa = MecanismoSarsa([(1, FRT), (0, ESQ), (0, DIR)]) self.a = None self.s = None self.rmax = 100 def processar(self, per): #GerarEstado sn = self.gerar_estado(per) #GerarAccao an = self.mecanismo_sarsa.seleccionar_accao(sn) if self.a is not None: r = self.gerar_reforco(per) self.mecanismo_sarsa.assimilar(self.s,self.a,r,sn,an) self.a = an self.s = sn return an def gerar_reforco(self, per): if(per.carga): return self.rmax elif(per.colisao): return -self.rmax else: return -0.1*self.rmax def gerar_estado(self, per): estado = tuple((per[dir_per].contacto, per[dir_per].obstaculo, per[dir_per].alvo) for dir_per in [ESQ,FRT,DIR]) return estado
def __init__(self): self.mecanismo_sarsa = MecanismoSarsa([(1, FRT), (0, ESQ), (0, DIR)]) self.a = None self.s = None self.rmax = 100