Boas, estou a resolver um problema em phyton, e tenho de utilizar o algoritmo de iteração de valor.
o algoritmo é qql coisa assim:
U'(S)= R(S)+FD*P(S,a,S')U(S')
em que R(S) é a recompesa de estar no estado S, FD é o fator de desconto P(S,a,S')U(S') em que isto é a probabilidade de estar no estado S* a utilidade do estado S + probabilidade de ir para o estado S' * a utilidade do estado S'
o codigo que tenho é este mas isto está a dar erro quando chega +PAndar*U(idx+1) pois o U(idx+1) ainda não foi calculado.
o espaco é uma lista com as recompensas de cada estado.
o algoritmo é qql coisa assim:
U'(S)= R(S)+FD*P(S,a,S')U(S')
em que R(S) é a recompesa de estar no estado S, FD é o fator de desconto P(S,a,S')U(S') em que isto é a probabilidade de estar no estado S* a utilidade do estado S + probabilidade de ir para o estado S' * a utilidade do estado S'
o codigo que tenho é este mas isto está a dar erro quando chega +PAndar*U(idx+1) pois o U(idx+1) ainda não foi calculado.
o espaco é uma lista com as recompensas de cada estado.
Código:
while d<(E*((1-FD)/FD)): for idx, val in enumerate(espaco):
def U(idx):
if idx < len(espaco):
valor = espaco[idx]+ FD *(PParado*espaco[idx]+PAndar*U(idx+1)+PSeguirOutra*U(idx-1))
print valor
return valor
if (U(idx)-U(idx+1))>d:
d=(U(idx)-U(idx+1))
return U(idx)