МДП: Как рассчитать шансы каждого возможного результата для последовательности действий?

У меня проблема MDP со следующей средой (карта 3x4):

с возможными действиями " Вверх", "Вниз", "Вправо" и "Влево" и 0,8 шансом движения в правильном направлении, 0,1 для каждого смежного направления (например, для " Вверх": 0,1 шанса уйти влево, 0,1 шанса уйти вправо).

Теперь мне нужно вычислить возможные результаты, начиная с (1,1), выполнив следующую последовательность действий:

[Вверх, вверх, вправо, вправо, вправо]

А также рассчитать вероятность достижения поля (для каждого возможного результата) с этой последовательностью действий. Как я могу сделать это эффективно (чтобы не пройти как минимум 2^5, максимум 3^5 возможных результатов)?

Заранее спасибо!

1 ответ

Что ж. Интересно, вы решаете проблему с RL? Теперь мы обычно решаем задачу RL с помощью уравнения Беллмана и Q-обучения.

Вы также выиграете от этой лекции. http://cs229.stanford.edu/notes/cs229-notes12.pdf

И если вы закончили обучение, повторите весь процесс, и вы узнаете вероятность [вверх, вверх, вправо, вправо, вправо].

и после обучения второе ограничение будет бессмысленным, потому что оно почти сразу достигает правильного ответа.

Я думаю, что этот пример есть в AIMA, верно? На самом деле у меня есть несколько вопросов о подходе. Я думаю, что мой ответ не будет правильным, если вы подойдете к нему очень теоретически.

while not done:
    if np.random.rand(1) < e:
        action = env.action_space.sample()
    else:
        action = rargmax(Q[state, :])

    new_state, reward, done, _ = env.step(action)
    Q[state, action] = Q[state, action]+ lr * (reward + r*np.max(Q[new_state,:]) - Q[state, action])

и это код, который я просто кодирую в тренажерном зале.

Другие вопросы по тегам