exponenta event banner

моделировать

Имитация походов по цепочке Маркова

Описание

пример

X = simulate(mc,numSteps) возвращает данные X на случайных прогулках длиной numSteps через последовательности состояний в дискретно-временной цепи Маркова mc.

пример

X = simulate(mc,numSteps,'X0',x0) дополнительно указывает начальное состояние моделирования x0.

Примеры

свернуть все

Рассмотрим эту теоретическую, правостохастическую матрицу перехода стохастического процесса.

P = [001/21/41/400001/302/300000001/32/3000001/21/2000003/41/41/21/2000001/43/400000].

Создайте цепочку Маркова, которая характеризуется матрицей перехода P.

P = [ 0   0  1/2 1/4 1/4  0   0 ;
      0   0  1/3  0  2/3  0   0 ;
      0   0   0   0   0  1/3 2/3;
      0   0   0   0   0  1/2 1/2;
      0   0   0   0   0  3/4 1/4;
     1/2 1/2  0   0   0   0   0 ;
     1/4 3/4  0   0   0   0   0 ];
mc = dtmc(P);

Постройте направленный график цепи Маркова. Укажите вероятность перехода с помощью краевых цветов.

figure;
graphplot(mc,'ColorEdges',true);

Figure contains an axes. The axes contains an object of type graphplot.

Моделирование 20-ступенчатой случайной прогулки, начинающейся со случайного состояния.

rng(1); % For reproducibility
numSteps = 20;
X = simulate(mc,numSteps)
X = 21×1

     3
     7
     1
     3
     6
     1
     3
     7
     2
     5
      ⋮

X является матрицей 21 на 1. Строки соответствуют шагам в случайной прогулке. Поскольку X(1) является 3случайная прогулка начинается в состоянии 3.

Визуализируйте случайную прогулку.

figure;
simplot(mc,X);

Figure contains an axes. The axes with title States Reached By Simulations contains an object of type image.

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

rng('default'); % For reproducibility 
mc = mcmix(4,'Zeros',8);

mc является dtmc объект.

Постройте диграф марковской цепи.

figure;
graphplot(mc);

Figure contains an axes. The axes contains an object of type graphplot.

Государство 4 является поглощающим состоянием.

Выполните три 10-ступенчатых моделирования для каждого состояния.

x0 = 3*ones(1,mc.NumStates);
numSteps = 10;
X = simulate(mc,numSteps,'X0',x0);

X является матрицей 11 на 12. Строки соответствуют шагам в случайной прогулке. Столбцы 1-3 являются моделями, которые начинаются в состоянии 1; колонка 4-6 - моделирование, которое начинается в состоянии 2; столбцы 7-9 представляют собой моделирование, которое начинается в состоянии 3; и столбцы 10-12 являются моделями, которые начинаются в состоянии 4.

Для каждого времени постройте график состояний пропорций, которые посещаются во всех моделированиях.

figure;
simplot(mc,X)

Figure contains an axes. The axes with title States Reached By Simulations contains an object of type image.

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

свернуть все

Дискретно-временная марковская цепь с NumStates состояния и матрица перехода P, указано как dtmc объект. P должен быть полностью указан (нет NaN записи).

Количество дискретных временных шагов в каждом моделировании, указанное как положительное целое число.

Типы данных: double

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'X0',[1 0 2] определяет моделирование три раза, первое моделирование начинается в состоянии 1, а последние два - в состоянии 3.

Начальные состояния моделирования, определяемые как разделенная запятыми пара, состоящая из 'X0' и вектор неотрицательных целых чисел NumStates длина. X0 обеспечивает подсчет количества имитаций, начинающихся в каждом состоянии. Общее количество имитаций (numSimsявляется sum(X0).

По умолчанию используется одиночное моделирование, начинающееся со случайного начального состояния.

Пример: 'X0',[10 10 0 5]

Типы данных: double

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

свернуть все

Индексы состояний, посещенных в ходе моделирования, возвращенные в виде (1 + numSteps)около-numSims числовая матрица положительных целых чисел. Первая строка содержит начальные состояния. Столбцы, по порядку, все моделирования начинаются в первом состоянии, затем все моделирования начинаются во втором состоянии и так далее.

Совет

  • Начаться n моделирование из состояния k, использовать:

    X0 = zeros(1,NumStates);
    X0(k) = n;

  • Визуализация данных, созданных simulate, использовать simplot.

Представлен в R2017b