Обработка данных
Матричный метод анализа сетей Петри
Матричный метод основан на выражении (8.5), связывающим разметки сети, которые были до и после срабатывания некоторого перехода и матрице , описывающей работу сети.
Пусть начальная разметка сети равна . Если в сети допустима последовательность срабатывания переходов
, то выполняются следующие соотношения
![M_1 =M_0+D*t_k\\
M_1=M_l + D*t_{i_2}=M_0 + D*t_{i_1}+D*t_{i_2}\\
M_3=M_2+D*t_{i_3}=M_1+D*t_{i_2}+D*t_{i_3}=M_0+D*t_{i_1}+D*t_{i_2}+D*t_{i_3}\\
\dots \dots \dots \dots\\
M_k=M_0+D*t_{i_1}+D*t_{i_2}+\dots+D*t_{i_k}=M_0+D(t_{i_1}+t_{i_2}+\dots +t_{}i_k)](/sites/default/files/tex_cache/9211471e78ffdc21e2c1734ba336a016.png)
Обозначив ,получим
![]() |
( 8.7) |
Из-за того, что вектор тявляется суммой векторов вида (8.2) он должен быть целочисленным неотрицательным вектором. Выполнение соотношения (8.6) для некоторого целочисленного неотрицательного вектора является необходимым условием достижимости разметки
из началь-ной разметки
.
Выражение (8.7) является системой линейных неоднородных уравнений относительно неизвестных компонент вектора . Следует заметить, что целочисленное неотрицательное решение уравнения (8.7), как правило, не определяет однозначно порядок срабатывания переходов, потому что от порядка суммирования векторов
вида (8.2) сумма
не зависит. Для нахождения требуемого порядка срабатывания переходов необходимо проводить дополнительные исследования.
Рассмотрим пример решения матричным методом задачи о достижимости. Спрашивается, достижима ли разметка для сети Петри, изображенной на рис.8.9?
Если разметка достижима, то указать последовательность срабатываний переходов, приводящую к данной разметке.
Матрица для данной сети Петри имеет вид
![D=\begin{pmatrix}0&0&0\\
1&0&-1\\
0&1&0\\
0&0&1\end{pmatrix}](/sites/default/files/tex_cache/83218ceacb46c9125bbd885562a073a0.png)
Матричное уравнение (8.6) для определения последовательности срабатываний переходов имеет вид
Без первого уравнения, которое тривиально выполняется, имеем систему трех уравнений с тремя неизвестными
Из второго и третьего уравнений получаем , а из первого
. Таким образом, в качестве решения имеем целочисленный неотрицательный вектор
![x=\begin{pmatrix}3\\2\\2\end{pmatrix}](/sites/default/files/tex_cache/708cf39292bbfb456f10a7bddf48b533.png)
Этот вектор не определяет порядок срабатывания переходов. Среди последовательностей срабатывания есть невыполнимые, например, . Среди последовательностей срабатывания переходов, удовлетворяющих вектору, необходимо искать допустимые. Допустимых после-довательностей может быть много, а может и не быть вовсе. Для данного примера допустимой последовательностью является последовательность
или последовательность
.
Наличие неотрицательного положительного решения у линейного уравнения для определения последовательности срабатывания является только необходимым условием и не гарантирует реального существова-ния такой последовательности. Например, решая задачу о достижимости разметки для описанной выше сети Петри, в качестве решения мы получим неотрицательный целочисленный вектор
![X=\begin{pmatrix}3\\2\\2\end{pmatrix}](/sites/default/files/tex_cache/acbd47987215479bc76a4effc027f6c7.png)
Однако реальной последовательности, приводящей к требуемой разметке, не существует, так как для срабатывания перехода необходимо наличие в месте
маркера. Но фишка, попавшая в
, не может покинуть эту позицию.
Пример 2 (решение матричным методом задачи о достижимости).
Рассмотрим сеть
и исследуем достижимость разметки из начальной разметки
Матрица имеет вид
![D=\begin{pmatrix}0&0&0\\-1&1&0\\-1&1&-1\\0&-1&1\end{pmatrix}](/sites/default/files/tex_cache/e623e71a14526ec9b6f47c0645995ef9.png)
Матричное уравнение для определения последовательности срабатываний переходов имеет вид
![\begim{pmatrix}0&0&0\\-1&1&0\\-1&1&1\\0&-1&1
\end{pmatrix}*\begin{pmatrix}x_1\\x_2\\x_3\end{pmatrix}=\begin{pmatrix}0\\7\\-1\\1\end{pmatrix}](/sites/default/files/tex_cache/0184c100ab5b21e841deb3174bbd351d.png)
Без первого уравнения, которое тривиально выполняется, имеем систему
![\begim{pmatrix}-1&1&0\\-1&1&-1\\0&-1&1
\end{pmatrix}*\begin{pmatrix}x_1\\x_2\\x_3\end{pmatrix}=\begin{pmatrix}7\\-1\\1\end{pmatrix}](/sites/default/files/tex_cache/42d2f6984c6ba635dea1b93a2586c01b.png)
Складывая второе и третье уравнения, получим . Из первого уравнения получаем
, а из третьего -
. Таким образом, в качестве решения имеем целочисленный неотрицательный вектор
![x=\begin{pmatrix}0\\7\\8\end{pmatrix}](/sites/default/files/tex_cache/dabc505cf2a4adae617cbddfeff24557.png)
Этот вектор не определяет порядок срабатывания переходов. Среди последовательностей срабатывания есть невыполнимые, например
![\overbrace{t_2t_2\dots t_2}^{7раз}\overbrace{t_3t_3 \dots t_3}^{8 раз}](/sites/default/files/tex_cache/4dbc39b7738a8a33dfd41c8d7c111ae2.png)
Среди последовательностей срабатывания переходов, удовлетворяющих вектору, необходимо искать допустимые. Допустимых последовательностей может быть много, а может и не быть вовсе. Для данного примера допустимой последовательностью является последовательность .
Матричный подход может быть использован для вектора весов, относительно которого сеть Петри является сохраняющей (консервативной). Пусть - вектор-строка искомых весов. В соответствии с приведенным выше определением консервативность сети заключается в выполнении равенства (8.6). Обе части этого равенства можно рассматривать как скалярные произведения вектора
на векторы любых двух достижимых разметок. Если в качестве одной из разметок взять начальную разметку
, а в качестве второй - любую достижимую разметку, то из (8.6) следует, что
. Из формулы (8.5) следует, что
. В результате получаем, что
для всех векторов
, соответствующих достижимым разметкам. Равенство выполняется, если
. Это матричное выражение представляет собой линейное однородное уравнение относительно весов, составляющих вектор
.
Для сети, изображенной на рис.8.10, найдем матричным методом вектор весов , относительно которого она является сохраняющей. Эта сеть моделирует два взаимодействующих процесса обработки, использующих общий ресурс (описывается местом
).
Матрица для данной сети имеет вид
![D=\begin{pmatrix}-1&0&1&0\\0&-1&0&1\\1&0&-1&0\\0&1&0&-1\\-1&-1&1&1\end{pmatrix}](/sites/default/files/tex_cache/108cb5bdb1bc5563eb56b43014cc8da6.png)
Легко заметить, что эта матрица имеет ранг 2 (третий столбец равен первому, умноженному на -1, а четвертый столбец равен второму, умноженному на -1). Поэтому система уравнений для вектора весов
включает в себя только два уравнения
![\begin{cases}-\alpha_1+\alpha_3-\alpha_5=0\\\alpha_2+\alpha_4-\alpha_5=0\end{cases}](/sites/default/files/tex_cache/fc61daadd44dee746a55567030491962.png)
Существует бесконечно много решений этой системы, которые могут быть получены из выражений
![\begin{cases}\alpha_1=\alpha_3-\alpha_5\\\alpha_2=\alpha_4-\alpha_5\end{cases}](/sites/default/files/tex_cache/4d30baf927ea46866945ea491b5cf3c2.png)
при произвольном задании весов . Из этих выражений видно, что сеть не является строго сохраняющей, т. к. вектор (1, 1, 1, 1, 1) не является решением системы. В качестве вектора весов, относительно которого сеть является сохраняющей, нас интересуют только неотрицательные решения. Задавая
, , получим
. Вектор весов (1, 1, 1, 1, 0), являющийся решением системы, означает, что сеть сохраняет суммарное количество фишек во всех местах, за исключением места
(количество фишек в месте
не учитывается при подсчете обще-го числа в сети). Еще одно решение (1, 1, 2, 2, 1) соответствует случаю, когда фишки в местах
и
учитываются при подсчете взвешенной суммы фишек в сети с коэффициентом 2.