createMDP

Создайте модель марковского процесса принятия решений

Описание

пример

MDP = createMDP(states,actions) создает модель марковского процесса принятия решений с заданными состояниями и действиями.

Примеры

свернуть все

Создайте модель MDP с восемью состояниями и двумя возможными действиями.

MDP = createMDP(8,["up";"down"]);

Задайте изменения состояния и их связанные вознаграждения.

% State 1 Transition and Reward
MDP.T(1,2,1) = 1;
MDP.R(1,2,1) = 3;
MDP.T(1,3,2) = 1;
MDP.R(1,3,2) = 1;

% State 2 Transition and Reward
MDP.T(2,4,1) = 1;
MDP.R(2,4,1) = 2;
MDP.T(2,5,2) = 1;
MDP.R(2,5,2) = 1;

% State 3 Transition and Reward
MDP.T(3,5,1) = 1;
MDP.R(3,5,1) = 2;
MDP.T(3,6,2) = 1;
MDP.R(3,6,2) = 4;

% State 4 Transition and Reward
MDP.T(4,7,1) = 1;
MDP.R(4,7,1) = 3;
MDP.T(4,8,2) = 1;
MDP.R(4,8,2) = 2;

% State 5 Transition and Reward
MDP.T(5,7,1) = 1;
MDP.R(5,7,1) = 1;
MDP.T(5,8,2) = 1;
MDP.R(5,8,2) = 9;

% State 6 Transition and Reward
MDP.T(6,7,1) = 1;
MDP.R(6,7,1) = 5;
MDP.T(6,8,2) = 1;
MDP.R(6,8,2) = 1;

% State 7 Transition and Reward
MDP.T(7,7,1) = 1;
MDP.R(7,7,1) = 0;
MDP.T(7,7,2) = 1;
MDP.R(7,7,2) = 0;

% State 8 Transition and Reward
MDP.T(8,8,1) = 1;
MDP.R(8,8,1) = 0;
MDP.T(8,8,2) = 1;
MDP.R(8,8,2) = 0;

Задайте конечные состояния модели.

MDP.TerminalStates = ["s7";"s8"];

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

свернуть все

Состояния модели в виде одного из следующего:

  • Положительное целое число — Задает количество состояний модели. В этом случае каждое состояние имеет имя по умолчанию, такое как "s1" для первого состояния.

  • Вектор строки — Задает имена состояния. В этом случае общее количество состояний равно длине вектора.

Действия модели в виде одного из следующего:

  • Положительное целое число — Задает количество действий модели. В этом случае каждое действие имеет имя по умолчанию, такое как "a1" для первого действия.

  • Вектор строки — Задает имена действия. В этом случае общее количество действий равно длине вектора.

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

свернуть все

Модель MDP, возвращенная как GenericMDP объект со следующими свойствами.

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

Имена состояния в виде вектора строки с длиной равняются количеству состояний.

Действие называет в виде вектора строки с длиной равный количеству действий.

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

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

Сумма вероятностей перехода от нетерминального s состояния после данного действия должен суммировать до одного. Поэтому все стохастические переходы из данного состояния должны быть заданы одновременно.

Например, чтобы указать на это в 1 состояния следующее действие 4 существует равная вероятность перемещения в состояния 2 или 3, используйте следующее:

MDP.T(1,[2 3],4) = [0.5 0.5];

Можно также указать, что после действия существует некоторая вероятность оставления в том же состоянии. Например:

MDP.T(1,[1 2 3 4],1) = [0.25 0.25 0.25 0.25];

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

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

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

Введенный в R2019a