Создание двумерного мира сетки для обучения армированию
В этом примере рассмотрим сетку 5 на 5 со следующими правилами:
Мир сетки 5 на 5, ограниченный границами, с 4 возможными действиями (Север = 1, Юг = 2, Восток = 3, Запад = 4).
Агент начинается из ячейки [2,1] (второй ряд, первый столбец).
Агент получает вознаграждение + 10, если он достигает состояния терминала в ячейке [5,5] (синяя).
Среда содержит специальный переход от ячейки [2,4] к ячейке [4,4] с вознаграждением + 5.
Средство блокируется препятствиями в клетках [3,3], [3,4], [3,5] и [4,3] (черные клетки).
Все остальные действия приводят к -1 вознаграждению.

Сначала создайте GridWorld с использованием createGridWorld функция.
GW = createGridWorld(5,5)
GW =
GridWorld with properties:
GridSize: [5 5]
CurrentState: "[1,1]"
States: [25x1 string]
Actions: [4x1 string]
T: [25x25x4 double]
R: [25x25x4 double]
ObstacleStates: [0x1 string]
TerminalStates: [0x1 string]
Теперь задайте начальное состояние, состояние терминала и состояние препятствия.
GW.CurrentState = '[2,1]'; GW.TerminalStates = '[5,5]'; GW.ObstacleStates = ["[3,3]";"[3,4]";"[3,5]";"[4,3]"];
Обновите матрицу перехода состояний для состояний препятствий и задайте правило перехода через состояния препятствий.
updateStateTranstionForObstacles(GW) GW.T(state2idx(GW,"[2,4]"),:,:) = 0; GW.T(state2idx(GW,"[2,4]"),state2idx(GW,"[4,4]"),:) = 1;
Затем определите вознаграждения в матрице перехода вознаграждения.
nS = numel(GW.States); nA = numel(GW.Actions); GW.R = -1*ones(nS,nS,nA); GW.R(state2idx(GW,"[2,4]"),state2idx(GW,"[4,4]"),:) = 5; GW.R(:,state2idx(GW,GW.TerminalStates),:) = 10;
Теперь используйте rlMDPEnv для создания сетевой мировой среды с использованием GridWorld объект GW.
env = rlMDPEnv(GW)
env =
rlMDPEnv with properties:
Model: [1x1 rl.env.GridWorld]
ResetFcn: []
Среду grid world можно визуализировать с помощью plot функция.
plot(env)

m - Количество строк в сеткеЧисло строк в сетке, указанное как скаляр.
n - Количество столбцов в сеткеЧисло столбцов в сетке, указанное как скаляр.
moves - Названия действий'Standard' (по умолчанию) | 'Kings'Имена действий, указанные как 'Standard' или 'Kings'. Когда moves имеет значение
'Standard', действия ['N';'S';'E';'W'].
'Kings', действия ['N';'S';'E';'W';'NE';'NW';'SE';'SW'].
GW - Мир двумерной сеткиGridWorld объектДвумерный сеточный мир, возвращенный как GridWorld со свойствами, перечисленными ниже. Дополнительные сведения см. в разделе Создание пользовательских сред Grid World.
GridSize - Размер сеточного мира[m,n] векторРазмер сетки, указанный как [m,n] вектор.
CurrentState - имя текущего состояния;Имя текущего состояния, указанное как строка.
Actions - Названия действийИмена действий, указанные как строковый вектор. Длина Actions вектор определяется по moves аргумент.
Actions - строковый вектор длины:
Четыре, если moves указывается как 'Standard'.
Восемь, moves указывается как 'Kings'.
T - Матрица перехода состоянияМатрица перехода состояния, заданная как массив 3-D, который определяет возможные перемещения агента в среде. Матрица перехода состояния T - матрица вероятности, указывающая, насколько вероятен переход агента из текущего состояния s в любое возможное следующее состояние s' путем выполнения действия a. T задается,
s, a).
T является:
A Kоколо-Kмассив -by-4, если moves указывается как 'Standard'. Здесь, K = m*n.
A Kоколо-Kмассив -by-8, если moves указывается как 'Kings'.
R - Матрица перехода вознагражденияМатрица перехода вознаграждения, заданная как массив 3-D, определяет, сколько вознаграждения получает агент после выполнения действия в среде. R имеет ту же форму и размер, что и матрица перехода состояния T. Матрица перехода вознаграждения R задается,
a).
R является:
A Kоколо-Kмассив -by-4, если moves указывается как 'Standard'. Здесь, K = m*n.
A Kоколо-Kмассив -by-8, если moves указывается как 'Kings'.
ObstacleStates - Имена государств, которые не могут быть достигнуты в сеткеИмена состояний, которые не могут быть достигнуты в сетке, указаны как строковый вектор.
TerminalStates - Имена состояний терминалов в сеткеИмена состояний клемм в сетке, заданные как строковый вектор.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.