Создайте двумерный мир сетки для обучения с подкреплением
В данном примере рассмотрим мир сетки 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: []
Вы можете визуализировать окружение мира сетки с помощью 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 объект со свойствами, перечисленными ниже. Для получения дополнительной информации см. раздел «Создание пользовательских окружений мира сетки».
GridSize - Размер мира сетки[m,n] векторРазмер мира сетки, заданный как [m,n] вектор.
CurrentState - Имя текущего состоянияИмя текущего состояния, заданное как строка.
Actions - Имена действийИмена действий, заданные как строковый вектор. Длина Actions вектор определяется moves аргумент.
Actions - строковый вектор длины:
Четыре, если moves задается как 'Standard'.
Восемь, moves задается как 'Kings'.
T - Матрица переходов состоянийМатрица переходов, заданная как трехмерный массив, которая определяет возможные перемещения агента в окружении. Матрица переходов состояний T - матрица вероятностей, которая указывает, насколько вероятно, что агент перейдет из текущего состояния s в любое возможное следующее состояние s' выполнением операции a. T определяется,
T является:
A K-by- K-by-4 массив, если moves задается как 'Standard'. Здесь, K = m* n.
A K-by- K-by-8 массив, если moves задается как 'Kings'.
R - Матрица вознаграждений при переходеМатрица вознаграждений при переходе, заданная как трехмерный массив, определяет, сколько вознаграждения агент получает после выполнения действия в окружении. R имеет ту же форму и размер, что и матрица переходов состояний T. Матрица вознаграждений при переходе R определяется,
R является:
A K-by- K-by-4 массив, если moves задается как 'Standard'. Здесь, K = m* n.
A K-by- K-by-8 массив, если moves задается как 'Kings'.
ObstacleStates - Имена состояний, которые не могут быть достигнуты в мире сеткиИмена состояний, которые не могут быть достигнуты в мире сетки, заданные как строковый вектор.
TerminalStates - имена конечных состояний в мире сеткиИмена конечных состояний в мире сетки, заданные как строковый вектор.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.