Нечеткое схождение Q-Learning - PullRequest
0 голосов
/ 08 ноября 2018

У меня проблемы с FQL (Fuzzy Q-Learning). Я реализовал свой алгоритм на Matlab. На самом деле довольно просто кодировать FQL. Нужно просто пройти различные этапы (слои) от фаззификации до дефаззификации, а затем обновить.

Однако мой FQL-код не сходится. На самом деле, я копирую работу, сделанную другими, которые получили хорошее сближение.

Я подведу итог моей модели и шагов, которые я сделал в следующем:

  • Мой вектор состояния содержит 4 значения s (C, B, R, P)
  • Я отображаю вышеупомянутый вектор s в соответствующий нечеткий вектор sbar
  • У меня есть 4 лингвистические переменные, каждая из которых определяется в наборе следующим образом: C = {Выкл, холостой ход, LM, H}, B = {VL, L, M, H, VH}, R = {L, M, H} и P = {L, M, H}.
  • Я вычисляю значения истинности каждой комбинации (узла). Здесь у меня 4x5x3x3 = 180 узлов, что является не чем иным, как произведением четырех значений членства для каждого узла.
  • Для каждого узла я выбираю действие (на основе эпсилон-жадного алгоритма). Затем я вычисляю взвешенное действие и взвешенное значение q для каждого узла.
  • Дефаззификация: я вычисляю действие А путем суммирования по взвешенному действию. Аналогично значению Q.
  • Я обновляю свои q-значения.

Во всех ссылках, которые я прочитал, это естественные шаги. И было доказано, что система будет сходиться. Однако у меня нет.

Я понял, что при вычислении будущего значения q я должен сначала выполнить действие A, рассчитанное на шаге дефаззификации выше. Затем используйте его, чтобы перейти в новое состояние. После этого я повторяю и нахожу веса нечетких узлов. Затем для каждого узла я нахожу оптимальное значение q, чтобы наконец получить значение Q следующего состояния.

Что-то мне не хватает? Я не мог придумать причину, по которой она не должна сходиться.

Я могу при необходимости расширить эпланацию.

Большое спасибо заранее.

...