Reinforcement-learning-with-tensorflow icon indicating copy to clipboard operation
Reinforcement-learning-with-tensorflow copied to clipboard

关于第一章get_env_feedback 公平问题

Open fengchaohao opened this issue 5 years ago • 0 comments

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

以上两个方法运行效果是一样的

fengchaohao avatar Nov 29 '19 10:11 fengchaohao