В данном коде реализован алгоритм из статьи Automatic Discovery of Subgoals inReinforcement Learning using Diverse Density:
https://scholarworks.umass.edu/cgi/viewcontent.cgi?article=1017&context=cs_faculty_pubs
В mcgovern.py описаны два класса, класс Game с описанием среды, и класс agent с описанием параметров и свойств агента
При его открытии сразу начинается обучение с параметрами, описанными в train.py, при желании их можно изменить. При обучении всплывает окно "Grid World", где показывается текущии стадии обучения.
Желтым обозначается цель, куда должен прийти агент, красным подцель, которая находится через Diverse Density.
Синим обозначается сам агент.
В консоле пишутся сообщения типа 4 3 position [0, 1, 2, 3] [-0.18281843807147813, -0.18395445100610527, -0.17562076331583998, -0.18189855164936664] Где 4 3 position это текущая позиция агента, [0, 1, 2, 3] это все доступные действия из этой позиции и последний массив содержит Q-values, исходя из которых и выбирается следующее действие
Действие 0 - вверх 1 - вниз 2 - влево 3 - вправо
В train.py для создания агента с сеткой 10 на 10 (можно поставить любую) создается
ag = agent(10,10)
Затем надо указать стенку, она описывается 3 параметрами, 1 - на каком стобце эта стенка 2 - с какой строчки начинается просвет, 3 - на какой строчке заканчивается просвет
ag.stenka(5,4,6)
После задаются координаты цели
ag.tcel(8,8)
Далее нужно инициализировать начальные значения Q-table для выше выбранной среды
ag.init2()
После этого агент ag готов для дальнейшего обучения