createGridWorld

Создайте двумерный мир сетки для обучения с подкреплением

Описание

пример

GW = createGridWorld(m,n) создает мир сетки GW из размера m- n с действиями по умолчанию ['N';'S';'E';'W'].

GW = createGridWorld(m,n,moves) создает мир сетки GW из размера m- n с действиями, заданными moves.

Примеры

свернуть все

В данном примере рассмотрите мир сетки 5 на 5 со следующими правилами:

  1. Мир сетки 5 на 5 ограничен границами, с 4 возможными действиями (Север=1, Юг=2, Восток=3, Запад=4).

  2. Агент стартует с ячейки [2,1] (вторая строка, первый столбец).

  3. Агент получает вознаграждение +10, если он достигает терминального состояния в ячейке [5,5] (синяя).

  4. Среда содержит специальный скачок от ячейки [2,4] к ячейке [4,4] с вознаграждением +5.

  5. Агент блокируется препятствиями в ячейках [3,3], [3,4], [3,5] и [4,3] (черные ячейки).

  6. Все другие действия приводят к вознаграждению -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)

Входные параметры

свернуть все

Количество строк мира сетки в виде скаляра.

Количество столбцов мира сетки в виде скаляра.

Действие называет в виде любого 'Standard' или 'Kings'. Когда moves установлен в

  • 'Standard', действиями является ['N';'S';'E';'W'].

  • 'Kings', действиями является ['N';'S';'E';'W';'NE';'NW';'SE';'SW'].

Выходные аргументы

свернуть все

Двумерный мир сетки, возвращенный как GridWorld объект с описанными ниже свойствами. Для получения дополнительной информации смотрите, Создают Пользовательские Среды Мира Сетки.

Размер мира сетки в виде [m,n] вектор.

Имя текущего состояния в виде строки.

Имена состояния в виде вектора строки из длины mN.

Действие называет в виде вектора строки. Длина Actions вектор определяется moves аргумент.

Actions вектор строки из длины:

  • Четыре, если moves задан как 'Standard'.

  • Восемь, moves задан как 'Kings'.

Матрица переходов в виде трехмерного массива, который определяет возможные перемещения агента в среде. Матрица переходов T матрица вероятности, которая указывает, с какой вероятностью агент переместит от текущего состояния s к любому возможному следующему s' состояния путем выполнения действия aT дают,

T(s,s',a) = probability(s'|s,a).

T :

  • K- K- 4 массива, если moves задан как 'Standard'. Здесь, K = mN.

  • K- K- 8 массивов, если moves задан как 'Kings'.

Матрица вознаграждений при переходе в виде трехмерного массива, определяет, сколько вознаграждения агент получает после выполнения действия в среде. R имеет ту же форму и размер как матрица переходов T. Матрица вознаграждений при переходе R дают,

r = R(s,s',a).

R :

  • K- K- 4 массива, если moves задан как 'Standard'. Здесь, K = mN.

  • K- K- 8 массивов, если moves задан как 'Kings'.

Имена состояния, которые не могут быть достигнуты в мире сетки в виде вектора строки.

Конечное состояние называет в мире сетки в виде вектора строки.

Введенный в R2019a