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' выполнением операции a. T является 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