Reinforcement-learning-with-tensorflow
Reinforcement-learning-with-tensorflow copied to clipboard
关于第一章get_env_feedback 公平问题
def get_env_feedback(S, A):
# This is how agent will interact with the environment
# S表示第几步0 - 4,A表示当前的动作left or right
if A == 'right': # move right
if S == N_STATES - 2: # terminate 如果S在第四步上并且当前动作是right,找到宝藏。
S_ = 'terminal' # S标记为终点并且标注为字符格式
R = 1 # 由于到了终点发现了宝藏,奖励机制为1
else:
S_ = S + 1 # 如果S < 4 并且是向右走,则 S+1
R = 0 # 由于没有发现宝藏R奖励为0
else: # move left
R = 0 # 由于已经前提知道了向左走 不可能找到宝藏是不是就不公平了?
if S == 0: # 如果 撞墙了
S_ = S # reach the wall
else:
S_ = S - 1
return S_, R
#改写一下方法为:
def get_env_feedback_new(S, A):
# This is how agent will interact with the environment
# S表示第几步0 - 4,A表示当前的动作left or right
if A == 'right': # move right
if S == N_STATES - 2: # terminate 如果S在第四步上并且当前动作是right,找到宝藏。
S_ = 'terminal' # S标记为终点并且标注为字符格式
R = 1 # 由于到了终点发现了宝藏,奖励机制为1
else:
S_ = S + 1 # 如果S < 4 并且是向右走,则 S+1
R = 0 # 由于没有发现宝藏R奖励为0
else: # 只知道左右走,不知道向左走是否不一定能够碰到宝藏
if S == N_STATES + 1: #向后退也可能遇到宝藏
S_ = 'terminal' # S标记为终点并且标注为字符格式
R = 1 # 由于到了重点发现了宝藏,奖励机制为1
else:
if S == 0: # 如果 撞墙了
S_ = S # reach the wall
else:
S_ = S - 1
R = 0
return S_, R
以上两个方法运行效果是一样的