daily pastebin goal
14%
SHARE
TWEET

Untitled

a guest Mar 19th, 2019 47 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class QLearning():
  2.  
  3.     def __init__(self):
  4.         self.self.matrizQ = [[0]*5 for x in range(5)]
  5.         self.learningRate = 0.9
  6.         self.discountRate = 0
  7.         self.indiceAcaoAtual = 2
  8.         self.indiceEstadoAtual = 0
  9.  
  10.    
  11.     def calculaFatores():
  12.         self.learningRate -= 0.1
  13.         self.discountRate += 0.1
  14.  
  15. def calculaMelhorAcao():
  16.     vetor = self.matrizQ[self.indiceEstadoAtual]
  17.     valorDaAcaoAtual = vetor[0]
  18.     indiceDaAcao = 0
  19.     indiceAcaoEscolhida = 0
  20.     for acao in vetor :
  21.         if acao > valorDaAcaoAtual :
  22.             indiceAcaoEscolhida = indiceDaAcao
  23.             valorDaAcaoAtual = acao
  24.         indiceDaAcao += 1
  25.     #atualizando variável global de ação      
  26.     self.indiceAcaoAtual = indiceAcaoEscolhida        
  27.  
  28. #atualizando variável global de estado
  29. def politicaDeAcoes():
  30.     self.indiceEstadoAtual += 1
  31.     if self.indiceEstadoAtual >= len(self.matrizQ):
  32.         self.indiceEstadoAtual = 0
  33.     calculaMelhorAcao()
  34.     calculaFatores()
  35.  
  36. def maxQProximoEstado(proximoEstado):
  37.     proximoEstado += 1
  38.     if proximoEstado > len(self.matrizQ) :
  39.         proximoEstado = 0
  40.     vetor = self.matrizQ[proximoEstado]
  41.     maiorRecompensa = max(vetor[0])
  42.     return maiorRecompensa  
  43.  
  44. def calculaNovoValorQ(reward):
  45.     print(self.matrizQ)
  46.     qAtual = self.matrizQ[self.indiceEstadoAtual][self.indiceAcaoAtual]
  47.     novoValorQ = qAtual + self.learningRate*(reward + self.discountRate * maxQProximoEstado(self.indiceEstadoAtual) - qAtual)
  48.     self.matrizQ = novoValorQ
  49.     politicaDeAcoes()
  50.  
  51. def exibeMensagemDeAcaoAtual():
  52.     if self.indiceAcaoAtual == 0 :
  53.         print("Acao muito fácil")
  54.     elif self.indiceAcaoAtual == 1:
  55.         print("Acao fácil")
  56.     elif self.indiceAcaoAtual == 2:
  57.         print("Acao intermediária")
  58.     elif self.indiceAcaoAtual == 3:
  59.         print("Acao difícil")
  60.     elif self.indiceAcaoAtual == 4:
  61.         print("Acao muito difícil")
  62.     else:
  63.         print("valor inválido")
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top