Значение итерации не сходится - марковский процесс принятия решения - PullRequest
0 голосов
/ 09 декабря 2018

У меня проблема с результатами, полученными при выполнении итерации значений, с числами, растущими до бесконечности, поэтому я предполагаю, что у меня есть проблема где-то в моей логике.

Изначально у меня есть сетка 10x10,некоторые плитки с наградой +10, некоторые с наградой -100, а некоторые с наградой 0. Нет терминальных состояний.Агент может выполнять 4 недетерминированных действия: двигаться вверх, вниз, влево и вправо.Вероятность движения в выбранном направлении составляет 80%, а перпендикулярно - 20%.

Мой процесс заключается в следующем:

  • Для каждой плитки,вычислить значение лучшее действие из этой плитки

Например, чтобы вычислить значение перехода на север из данной плитки:

self.northVal = 0
self.northVal += (0.1 * grid[x-1][y])
self.northVal += (0.1 * grid[x+1][y])
self.northVal += (0.8 * grid[x][y+1])
  • Для каждой плитки обновите ее значение следующим образом: начальная награда + (0,5 * значение лучшего хода для этой плитки)
  • Проверьте, изменилась ли обновленная сетка со времени последнего цикла, иесли нет, остановите цикл, поскольку числа сошлись.

Буду признателен за любые указания!

1 Ответ

0 голосов
/ 15 декабря 2018

То, что вы пытаетесь сделать здесь, это не итерация значения: итерация значения работает с функцией state value, в которой вы сохраняете значение для каждого состояния.Это означает, что в итерации значения вы не сохраняете оценку каждой пары (состояние, действие).

Пожалуйста, обратитесь ко 2-му изданию книги Саттона и Барто (Раздел 4.4) для объяснения, но вот алгоритмдля быстрого ознакомления.Обратите внимание на шаг инициализации: вам нужен только вектор, хранящий значение для каждого состояния.

Value Iteration Algorithm

...