Как манипулировать табличным алгоритмом Сарса в Python?

Поэтому я пытаюсь изменить алгоритм Tabular Sarsa с помощью трассировки приемлемости в Python. Это алгоритм, которому я следую.

В моей ситуации у меня просто одно состояние и пять действий. Поэтому мой Q(s,a) будет просто Q(a), а e(s,a) будет просто e(a) из-за того, что я никогда не переключаю состояния. Насколько я понимаю, алгоритм обновляет значения Q, которые затем обновляют трассу приемлемости. Поэтому моя идея состояла в том, чтобы иметь два одномерных массива и обновлять их вместе. Мой Q(s,a) будет Q(a1,a2,a3,a4,a5), а мой e(s,a) будет e(a1,a2,a3,a4,a5). Проблема у меня в том, как обновить эти два массива на основе табличного алгоритма сарсы. Я могу установить значения для своей скорости обучения, вознаграждения и т. Д., Чтобы включить их в формулу, но я не могу понять концепцию того, как будут обновляться эти массивы, и с чего начать даже псевдокод того, как это настроить. На данный момент, я просто установил мои значения на ноль, и я знаю, что массивы должны быть обновлены.

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

Qtable = [a1,a2,a3,a4,a5]
eTrace = [a1,a2,a3,a4,a5]

Ожидаемый результат должен максимально обновлять самое новое действие, а первое действие - как минимум. Таким образом, если мой бот делает что-то правильно, последнее выполненное действие будет вознаграждено и обновлено в наибольшей степени, а предыдущие действия для перехода на этот шаг также будут обновлены, но в порядке убывания. Если мой бот делает неправильное действие, последнее действие будет наказано больше всего, а предыдущие действия также будут наказаны.

0 ответов

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