pythonの強化学習を勉強しており、
その中で出てくるQ値の更新式を書きたいです。
csvファイルの中に格納されている状態変数(a,b,c,d,e)を一行ずつ取り出して、
報酬(2r)と割引率(0.9)と計算して更新していきます。
Python
1class Qupdate: 2 def __init__(self,x): 3 self.X = x 4 av = 0.26 # 平均 5 sd = 0.22 # 標準偏差 6 q_value = 1 7 8 # update_q 9 r = (self.X[4]-av)/sd # 報酬の標準化 10 update_y = np.array( 2 * r + 0.9 * q_value) 11 12#main 13if __name__ == '__main__': 14 with open('ex.csv','r') as f: 15 data = pd.read_csv("ex.csv") 16 x = data.loc[:, ['a', 'b', 'c', 'd','e']].values 17 18 for row in x: 19 uq = Qupdate(row) 20 21 f.close
これでいいと思ったのですが間違いがありました!
Q値は一つ前の状態変数と報酬を使って更新しなくてはいけないとのことです。
お聞きしたいのは、
main文で一行ずつ取り出した x を別の値 x_prev などと置いて
二回目のループから# update_q の計算をしたいのですが、
イマイチやり方がわかりません。
望んでいるQ値は
for 1 ループ目 value_q = 1
for 2 ループ目 r = x_prev[4]/sd
update_y = np.arrray(2r + 0.9 * value_q)
for 3 ループ目 r = x_prev[4]/sd (2ループ目の状態変数eに更新されている)
update_y = np.arrray(2r + 0.9 * value_q)
....というように改善したいです。
ご回答よろしくお願いいたします。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。