exponenta event banner

hittime

Вычислить время попадания цепи Маркова

Описание

пример

ht = hittime(mc,target) возвращает ожидаемое время первого попадания ht для указанного подмножества состояний target, начиная от каждого государства в цепи Маркова mc. Если target образует повторяющийся класс, элементы ht ожидаемое время поглощения.

пример

ht = hittime(mc,target,'Graph',true) строит направленный график mc с цветами узлов, представляющими ожидаемые времена первого попадания. Цветовая полоса суммирует цветовое кодирование.

[ht,h] = hittime(mc,target,'Graph',true) также возвращает дескриптор графика. Использовать h для изменения свойств графика после его создания.

[ht,h] = hittime(ax,mc,target,'Graph',true) графики на осях, указанных ax вместо текущих осей (gca).

Примеры

свернуть все

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

P = [10001/201/200001001/21/2].

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

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

Постройте направленный график цепи Маркова. Визуально определите класс связи, к которому принадлежит каждое состояние, используя цвета узлов.

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

Figure contains an axes. The axes contains 4 objects of type graphplot, line. These objects represent Transient, Aperiodic.

Вычислите ожидаемое время первого попадания для состояния 3, начиная с каждого состояния в цепи Маркова.

ht = hittime(mc,3)
ht = 4×1

   Inf
   Inf
     0
     2

Поскольку состояние 3 недоступно из состояния 1, состояние 1 является удаленным по отношению к состоянию 3, с ожидаемым временем первого удара Inf.

Состояние 3 достижимо из состояния 2, но состояние 2 имеет положительную вероятность перехода в состояние 1, которое является поглощающим состоянием. Следовательно, состояние 2 является удаленно достижимым состоянием по отношению к состоянию 3, с ожидаемым временем первого удара, равным Inf.

Поскольку состояние 3 является целью, его ожидаемым временем первого попадания для себя является 0.

Ожидаемое время первого попадания в состояние 3, начиная с состояния 4, равно 2 временные шаги.

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

P = [01/201/22/301/3001/201/21/302/30].

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

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

Наметить диграф марковской цепи mc. Отображение вероятностей перехода.

graphplot(mc,'ColorEdges',true)

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

Вычислите ожидаемое время первого попадания для состояния 1, начиная с каждого состояния в цепи Маркова.

ht = hittime(mc,1)
ht = 4×1

         0
    2.3333
    4.0000
    3.6667

Постройте диграф марковской цепи. Укажите цвета узлов, представляющие ожидаемое время первого попадания для состояния 1, начиная с каждого состояния в цепочке Маркова.

hittime(mc,1,'Graph',true);

Figure contains an axes. The axes contains 2 objects of type graphplot, line. This object represents Target State (ht = 0).

Постройте еще один график. Включить состояние 4 в качестве целевого состояния.

hittime(mc,[1 4],'Graph',true);

Figure contains an axes. The axes contains 2 objects of type graphplot, line. This object represents Target States (ht = 0).

Создайте цепочку Маркова, характеризующуюся этой матрицей перехода:

P = [1/201/2000001/302/30001/403/4000002/301/30001/41/81/81/81/41/801/61/61/61/61/61/601/2000001/2].

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

Вычислите ожидаемое время первого попадания для состояния 1, начиная с каждого состояния в цепочке Маркова mc. Также постройте график и укажите цвета узлов, представляющие ожидаемое время первого попадания для состояния 1.

ht = hittime(mc,1,'Graph',true)

Figure contains an axes. The axes contains 4 objects of type graphplot, line. These objects represent Target State (ht = 0), Remote (ht = Inf), Remote-Reachable (ht = Inf).

ht = 7×1

     0
   Inf
     4
   Inf
   Inf
   Inf
     2

Состояния 2 и 4 образуют поглощающий класс. Следовательно, состояние 1 недоступно из этих состояний. Поглощающий класс является удаленным по отношению к состоянию 1, с ожидаемым временем первого удара, равным Inf.

Состояние 1 достижимо из состояний 5 и 6, но вероятность перехода в класс поглощения из состояний 5 и 6 ненулевая. Следовательно, состояния 5 и 6 являются удаленно доступными по отношению к состоянию 1, с ожидаемым временем первого удара, равным Inf.

Ожидаемое время первого удара для состояния 1, начинающегося с состояния 7, составляет 2 временных шага. Ожидаемое время первого попадания в состояние 1, начинающееся с состояния 3, составляет 4 временных шага.

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

numStates = 8;
Zeros = 50;
stateNames = strcat(repmat("Regime ",1,8),string(1:8));
rng(1617676169) % For reproducibility
mc = mcmix(8,'Zeros',Zeros,'StateNames',stateNames);

Наметить диграф марковской цепи mc. Укажите цвета узлов, которые идентифицируют переходные и повторяющиеся состояния и передаваемые классы.

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

Figure contains an axes. The axes contains 5 objects of type graphplot, line. These objects represent Transient, Aperiodic.

Найти повторяющийся класс в цепи Маркова mc следуя этой процедуре:

  1. Классифицировать состояния путем передачи mc кому classify. Возврат массива членства в классе ClassStates и логический вектор, указывающий, являются ли классы повторяющимися ClassRecurrence.

  2. Извлеките повторяющиеся классы из массива классов путем индексирования в массив с помощью логического вектора.

[~,ClassStates,IsClassRecurrent] = classify(mc);
recurrent = ClassStates{IsClassRecurrent}
recurrent = 1x4 string
    "Regime 2"    "Regime 3"    "Regime 6"    "Regime 8"

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

ht = hittime(mc,recurrent);

Извлеките и отобразите ожидаемое время поглощения, начиная с переходных состояний.

istransient = ~ismember(mc.StateNames,recurrent);
absorbtime = ht(istransient);
table(absorbtime,'RowNames',mc.StateNames(istransient))
ans=4×1 table
                absorbtime
                __________

    Regime 1      5.8929  
    Regime 4           1  
    Regime 5      1.7777  
    Regime 7      4.8929  

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

rng(1) % For reproducibility
mc = mcmix(50,'Zeros',2400);

Визуализируйте время смешения цепи Маркова, построив график и указав цвета узлов, представляющие ожидаемое время первого попадания для состояния 1, начиная с каждого состояния.

hittime(mc,1,'Graph',true);

Figure contains an axes. The axes contains 2 objects of type graphplot, line. This object represents Target State (ht = 0).

Визуализируйте время смешения цепи Маркова для состояния 5.

hittime(mc,5,'Graph',true);

Figure contains an axes. The axes contains 2 objects of type graphplot, line. This object represents Target State (ht = 0).

Ожидаемое время перехода из состояния i в состояние j является ожидаемым временем, требуемым для перехода цепи Маркова из состояния i в состояние j (ожидаемое время первого попадания). ht(i, j)), затем обратно в состояние i (ht(j, i)). Формально ожидаемое время поездки составляет

C (i, j) =ht(i, j) +ht(j, i).

Создайте цепочку Маркова «гантели», содержащую 10 состояний в каждом «весе» и три состояния в «баре».

  • Укажите вероятности случайного перехода между состояниями в пределах каждого веса.

  • Если цепь Маркова достигает состояния в весе, наиболее близком к брусу, то укажите высокую вероятность перехода к бруску.

  • Задайте равномерные переходы между состояниями на панели.

rng(1); % For reproducibility
w = 5;                              % Dumbbell weights
DBar = [0 1 0; 1 0 1; 0 1 0];        % Dumbbell bar
DB = blkdiag(rand(w),DBar,rand(w));  % Transition matrix

% Connect dumbbell weights and bar
DB(w,w+1) = 1;                       
DB(w+1,w) = 1; 
DB(w+3,w+4) = 1; 
DB(w+4,w+3) = 1;

mc = dtmc(DB);

Наметить диграф марковской цепи mc. Подавление меток узлов.

figure;
graphplot(mc);

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

Рассмотрим вычисление ожидаемого времени коммутации из состояния 1 в состояние 10.

Вычислить ht(1,10), ожидаемое время первого попадания для состояния 10, начинающееся от состояния 1.

ht = hittime(mc,10);
ht1to10 = ht(1);

Вычислить ht(10,1), ожидаемое время первого попадания для 1 состояния, начинающегося с 10 состояния.

ht = hittime(mc,1);
ht10to1 = ht(10);

Вычисляют ожидаемое время коммутации из состояния 1 в состояние 10.

C1to10 = ht1to10 + ht10to1
C1to10 = 236.6165

Ожидаемое время переключения из состояния 1 в состояние 10 и обратно составляет 236,62 временных шага.

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

свернуть все

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

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

  • Для числового вектора элементы target соответствуют строкам матрицы перехода mc.P.

  • Для вектора строки или вектора ячейки символьных векторов элементы target должны быть именами состояний в mc.StateNames.

Пример: ["Regime 1" "Regime 2"]

Типы данных: double | string | cell

Оси для печати, указанные как Axes объект.

По умолчанию hittime графики к текущим осям (gca).

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

свернуть все

Ожидаемое время первого попадания, возвращаемое в виде числового вектора длины mc.NumStates. ht(j) является ожидаемым временем первого попадания указанного подмножества целевых состояний target из начального состояния j.

Если ht(j) = Inf, состояние j является удаленным состоянием или удаленно доступным состоянием для целевых состояний target.

Дескриптор графика, возвращаемый как графический объект, когда 'Graph' аргумент пары имя-значение true. h - уникальный идентификатор, который можно использовать для запроса или изменения свойств графика.

Подробнее

свернуть все

Удаленное состояние

Удаленные состояния - это состояния, из которых целевые состояния недоступны. Удаленное состояние имеет вероятность попадания 0 и ожидаемое время первого попадания Inf. Дополнительные сведения о вероятностях попадания см. в разделе hitprob.

Состояние удаленного доступа

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

Алгоритмы

hittime использование linprog чтобы найти минимальную норму неотрицательного решения для системы:

{kiA=0,i∈AkiA=1+∑j∉APijkjA,i∉A,

где

  • kiA = ht(i), ожидаемое время первого попадания для подмножества состояний A, начиная с состояния i.

  • A - набор индексов состояний в target.

  • P = mc.P.

  • N = mc.NumStates [1].

Ссылки

[1] Норрис, J. R. Markov Chains. Кембридж, Великобритания: Cambridge University Press, 1997.

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