minicurso rede petri

40
Modelagem de Sistemas Computacionais usando Redes de Petri: aplicação em projeto, análise e avaliação Dulcinéia Oliveira da Penha 1 , Henrique Cota de Freitas 2 , Carlos Augusto Paiva da Silva Martins 3 2,3 Instituto de Informática, 1,3 Programa de Pós-graduação em Engenharia Elétrica 1,2,3 Laboratório de Sistemas Digitais e Computacionais Pontifícia Universidade Católica de Minas Gerais Rua Dom José Gaspar 500 – 30.535-610 – Belo Horizonte – MG – Brasil 1 [email protected],( 2 cota, 3 capsm}@pucminas.br Abstract. In this tutorial we present the concepts and essential characteristics of the Ordinary Petri Nets, its algebraic and graphical representations, definitions and properties. Moreover, we present some high level Petri Nets, as the Coloured Petri Nets and the Stochastic Petri Nets. Later, we present the modeling of trivial problems using Petri Nets, methods and tools of validation and verification of Petri Nets and the application of Petri Nets in problems related with computational systems modeling. Finally, we present and we analyze the main advantages, disadvantages and challenges of the application of Petri Nets in the computational systems modeling. Resumo. Neste minicurso apresentamos os conceitos e características essenciais das Redes de Petri Ordinárias, suas representações algébricas e gráficas, definições e propriedades Além disso, apresentamos algumas Redes de Petri de alto nível, como as Redes de Petri Coloridas e as Redes de Petri Estocásticas. Posteriormente, apresentamos a modelagem de problemas triviais usando redes de Petri, métodos e ferramentas de validação e verificação de Redes de Petri e a aplicação de Redes de Petri em problemas relacionados com a modelagem de sistemas computacionais. Finalmente, apresentamos e analisamos as principais vantagens, desvantagens e desafios da aplicação de Redes de Petri na modelagem de sistemas computacionais. 1. Introdução Em 1962, o então aluno de doutorado Carl Adam Petri defendeu sua tese intitulada Kommunikation mit Automaten (Communication with Automata) [Petri 1962]. Seu objetivo era desenvolver um modelo em que as máquinas de estado fossem capazes de se comunicar. A característica principal alcançada por este modelo foi a possibilidade de representar a concorrência. Este modelo recebeu o nome de Redes de Petri em homenagem ao próprio autor e hoje podemos encontrar variações do modelo original sendo usados em diversas áreas da ciência para ajudar no estudo do comportamento e desempenho de diferentes sistemas. Podemos encontrar as Redes de Petri (RdP) [Girault 2002] [Desel 2000] [Maciel 1996] [Murata 1989] [Peterson 1981] [Peterson 1977]

Upload: ademargcjunior

Post on 30-Jun-2015

1.178 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Minicurso Rede Petri

Modelagem de Sistemas Computacionais usando Redes de Petri: aplicação em projeto, análise e avaliação

Dulcinéia Oliveira da Penha1, Henrique Cota de Freitas2, Carlos Augusto Paiva da Silva Martins3

2,3Instituto de Informática, 1,3Programa de Pós-graduação em Engenharia Elétrica 1,2,3Laboratório de Sistemas Digitais e Computacionais

Pontifícia Universidade Católica de Minas Gerais Rua Dom José Gaspar 500 – 30.535-610 – Belo Horizonte – MG – Brasil

[email protected],(2cota,3capsm}@pucminas.br

Abstract. In this tutorial we present the concepts and essential characteristics of the Ordinary Petri Nets, its algebraic and graphical representations, definitions and properties. Moreover, we present some high level Petri Nets, as the Coloured Petri Nets and the Stochastic Petri Nets. Later, we present the modeling of trivial problems using Petri Nets, methods and tools of validation and verification of Petri Nets and the application of Petri Nets in problems related with computational systems modeling. Finally, we present and we analyze the main advantages, disadvantages and challenges of the application of Petri Nets in the computational systems modeling.

Resumo. Neste minicurso apresentamos os conceitos e características essenciais das Redes de Petri Ordinárias, suas representações algébricas e gráficas, definições e propriedades Além disso, apresentamos algumas Redes de Petri de alto nível, como as Redes de Petri Coloridas e as Redes de Petri Estocásticas. Posteriormente, apresentamos a modelagem de problemas triviais usando redes de Petri, métodos e ferramentas de validação e verificação de Redes de Petri e a aplicação de Redes de Petri em problemas relacionados com a modelagem de sistemas computacionais. Finalmente, apresentamos e analisamos as principais vantagens, desvantagens e desafios da aplicação de Redes de Petri na modelagem de sistemas computacionais.

1. Introdução Em 1962, o então aluno de doutorado Carl Adam Petri defendeu sua tese intitulada Kommunikation mit Automaten (Communication with Automata) [Petri 1962]. Seu objetivo era desenvolver um modelo em que as máquinas de estado fossem capazes de se comunicar. A característica principal alcançada por este modelo foi a possibilidade de representar a concorrência. Este modelo recebeu o nome de Redes de Petri em homenagem ao próprio autor e hoje podemos encontrar variações do modelo original sendo usados em diversas áreas da ciência para ajudar no estudo do comportamento e desempenho de diferentes sistemas. Podemos encontrar as Redes de Petri (RdP) [Girault 2002] [Desel 2000] [Maciel 1996] [Murata 1989] [Peterson 1981] [Peterson 1977]

Page 2: Minicurso Rede Petri

sendo utilizadas em áreas como economia, biologia, engenharia, computação, entre outras.

As variações de RdP tais como Redes de Petri Coloridas, Temporizadas ou Estocásticas são modelos importantes e que não fazem parte da teoria original. No entanto, são representações que ganharam relevância por serem capazes de modelar sistemas de forma mais simplificada ou intuitiva ou simplesmente porque ainda não havia um modelo capaz de representar sistemas que envolviam temporizações ou comportamentos probabilísticos (estocásticos).

Antes de apresentar os conceitos e elementos que compõem a Rede de Petri é importante responder uma pergunta: Por que precisamos modelar um sistema computacional [Jain 1991]?

• Torna-se mais fácil o entendimento do funcionamento ou comportamento de um sistema computacional existente?

• O projeto do sistema computacional pode ser verificado e validado através de um modelo antes da construção de um protótipo?

• A avaliação do funcionamento, comportamento e por conseqüência do seu desempenho em relação a um histórico de projeto ou em relação a outros modelos de sistema existentes, também em fase de projeto é facilitada?

• É possível definir métricas de desempenho através do modelo?

São várias as respostas para justificar a modelagem de um sistema computacional. Podemos afirmar que o uso de um modelo facilita e justifica o prosseguimento de novas etapas de projeto e análise antes da etapa final de avaliação. Entre estas etapas podemos citar uma diretamente dependente da existência física do sistema e que muitas vezes só deve ser realizada após uma fase anterior de validação, antes do protótipo ser construído:

• Medição: A medição depende da existência física do sistema ou protótipo do sistema. Você implementaria seu sistema antes de verificá-lo através de um modelo? É como programar sem projetar o algoritmo!

Imagine que o sistema a ser medido (uma coleta de dados para avaliação de resultados) é um aglomerado (cluster) de computadores [Buyya 1999] [Almasi 1994]. Qual o custo financeiro para montar este cluster? Este cluster foi modelado anteriormente? Existe uma verificação/validação anterior à montagem do protótipo (cluster de servidores)?

Existem alguns modelos analíticos e de simulação [Bressan 2002] [Jain 19991] para validação de um projeto. As Redes de Petri fazem parte destes dois modelos. Podemos representar uma Rede de Petri através de descrições matemáticas e gráficas. Podemos também simular uma Rede de Petri através de ferramentas específicas de simulação [Drath 2004]. Existe um repositório de informações e simuladores de Redes de Petri que pode ser encontrado através da seguinte referência: [Petri Nets 2004].

O principal objetivo deste minicurso é apresentar conceitos, difundir conhecimentos e apresentar métodos e ferramentas para verificação/validação relativos a aplicação e modelagem de Redes de Petri em sistemas computacionais de forma simples e direta. Alguns modelos do nosso dia-a-dia são utilizados para facilitar o

Page 3: Minicurso Rede Petri

estudo do processo de modelagem em suas etapas principais. Pretendemos difundir as RdP como uma alternativa e um forte modelo de ajuda no processo de avaliação do comportamento e do desempenho de um sistema computacional.

2. Redes de Petri O principal objetivo deste tópico é apresentar as principais características das Redes de Petri. Existem conceitos que não serão apresentados, mas que serão facilmente encontrados nas referências citadas ao longo do texto. No entanto, procuramos sintetizar um grande volume de informações importantes e necessárias para o processo de modelagem de sistemas computacionais enquanto fase de projeto, análise ou avaliação.

2.1. Conceitos Básicos

Por que as Redes de Petri se tornaram um importante modelo para representar diferentes sistemas? Uma Rede de Petri possui um conjunto de elementos capaz de descrever as diversas partes de um sistema que estamos habituados a tratar em Ciência da Computação [Hennessy 2003] [Tanenbaum 2003a, 2003b] [Buyya 1999] [Almasi 1994] [Jain 1991], tais como: concorrência, controle, conflitos, sincronização e compartilhamento, por exemplo.

Portanto, para tratar concorrência, controle, conflitos, sincronização e compartilhamento não seria importante um modelo para representar a ocorrência destas características em um sistema?

Uma Rede de Petri é composta pelos seguintes elementos:

• Lugares ou Places: representam uma condição, uma atividade ou um recurso.

• Fichas, Marcas ou Tokens: representam o estado de um sistema.

• Transições: representam um evento.

• Arcos: indicam os lugares de entrada ou saída para as transições.

Estes elementos podem ser representados graficamente como na figura 1:

Figura 1. Elementos de uma Rede de Petri

Portanto, ainda sem considerarmos a existência dos tokens, podemos definir uma Rede de Petri como R = (P, T, AE, AS) onde:

• P = {P1, P2, ..., Pm} é um conjunto de places.

• T = {T1, T2, …, Tn} é um conjunto de transições.

• P ∩ T = ∅ os conjuntos P e T são disjuntos.

• AE: P x T é o conjunto de arcos de entrada nas transições.

Page 4: Minicurso Rede Petri

• AS: T x P é o conjunto de arcos de saída das transições.

Para a figura 1 temos:

• P = {Place 1, Place 2}

• T = {Transição}

• AE = {Place 1, Transição}

• AS = {Transição, Place 2}

Qual a influência dos tokens em uma Rede de Petri?

Quando modelamos um sistema através de Redes de Petri procuramos representar os estados antes e depois de cada evento neste sistema. O elemento responsável por indicar qual o estado de uma Rede de Petri é um token (marca). Portanto, é de se esperar que uma Rede de Petri possua uma marcação inicial [Girault 2002] [Bressan 2002] [Murata 1989], que pode ser descrita através da seguinte notação, tomando como exemplo a figura 1:

• M = (1, 0) Sendo que o primeiro campo representa a quantidade de tokens no Place 1 e o segundo campo a quantidade de tokens no Place 2.

A marcação inicial faz parte do projeto do modelo, uma falha na definição da marcação inicial pode resultar em um modelo inconsistente ou com falhas de execução.

Além da marca (token) presente dentro de um place, possuímos um peso associado a cada arco. Este peso é muito importante e muitas vezes é necessário durante o projeto do modelo. A figura 2 ilustra uma outra Rede de Petri com pesos associados aos arcos.

Figura 2. Rede de Petri com peso nos arcos

A figura 2 ilustra os pesos associados a cada arco, no entanto podemos perceber que para esta figura (2a e 2b) existem dois momentos / estados distintos, um estado em que os places P1 e P2 possuem tokens e outro que somente o place P3 possui um ou dois tokens. Portanto, podemos considerar que existem duas marcações: uma inicial e outra final.

Page 5: Minicurso Rede Petri

• Marcação inicial para a figura 2a: M = (1, 1, 0)

• Marcação final para a figura 2a: M = (0, 0, 2)

• Marcação inicial para a figura 2b: M = (1, 1, 0)

• Marcação final para a figura 2b: M = (0, 0, 1)

Com base na figura 2, podemos responder duas perguntas:

• O que ocasionou o segundo estado da Rede de Petri ou a marcação final?

• Por que a marcação final da figura 2a é diferente da figura 2b?

A resposta da primeira pergunta é a seguinte: A função de uma transição é representar um evento, ou seja, a transição é responsável por modificar a marcação de uma Rede de Petri, portanto, modificar o estado de uma Rede de Petri. Esta ocorrência só é válida quando existem tokens nos places de entrada de uma transição. Sendo assim, se eu quiser modificar o estado ou a marcação de uma Rede de Petri, basta disparar as transições existentes. Na figura 2a e 2b, a transição T1 foi disparada e neste momento os tokens dos places de entrada P1 e P2 foram responsáveis por habilitar este disparo. Como resultado de um disparo, os tokens dos places de entrada são retirados e novos tokens são colocados nos places de saída. A diferença na quantidade de tokens da marcação de saída entre as figuras 2a e 2b é baseada nos pesos dos arcos. Portanto, o peso no terceiro arco responde a segunda pergunta. Na figura 2a o peso do terceiro arco é 2 e por este motivo chegam ao place P3 dois tokens. Na figura 2b o peso do terceiro arco é 1. Este peso impõe um limite e somente um token é colocado no place P3 após o disparo da transição. Porém, existem situações que podem impedir o disparo de uma transição. As figuras 3 e 4 ilustram esta situação.

Figura 3. Situação 1 para não ocorrência de um disparo

Por que a transição T1 não pode ser disparada? Para o disparo de uma transição deve haver tokens em todos os places de entrada. Na figura 3 o place P2 não possui tokens e por este motivo a transição T1 não pode ser disparada.

Figura 4. Situação 2 para não ocorrência de um disparo

Para a Rede de Petri da figura 4 o problema está associado aos pesos dos arcos de entrada da transição T1. Os pesos dos arcos de entrada da transição indicam quantos

Page 6: Minicurso Rede Petri

tokens são necessários para o disparo da transição. No caso da figura 4 são necessários 3 tokens em dois places. Como podemos ver, nesta figura os places possuem apenas 1 token cada um, seria necessário que o place P2 tivesse dois tokens, porque é exatamente este place que possui um arco com peso 2 até a transição T1. Portanto, permanecendo desta forma, esta rede nunca mudará seu estado ou marcação inicial. Se esta Rede de Petri fosse o modelo que representasse um determinado sistema, haveria um erro de modelagem. Conforme já descrevemos a marcação inicial é muito importante e pode influenciar na execução do modelo.

Uma vez que já abordamos os conceitos relativos à marcação e ao peso de um arco, podemos apresentar uma definição mais completa das Redes de Petri:

• R = {P, T, A, PA, M0) onde:

P = {P1, P2, ..., Pm} é o conjunto de places.

T = {T1, T2, …, Tn} é o conjunto de transições.

P ∩ T = ∅ ∧ P ∪ T ≠ ∅ os conjuntos P e T são disjuntos e não vazios.

A: (P x T) ∪ (T x P) é o conjunto dos arcos.

PA: A N são os pesos dos arcos.

M0: P N0 é a marcação inicial.

Em uma RdP existe uma situação chamada de conflito [Girault 2002] [Maciel 1996] [Murata 1989], encontrada quando modelamos atividades concorrentes. Para esta situação damos o nome de Confusion. Muitas vezes, para representar a concorrência ou atividades conflitantes, conforme será visto no tópico 5, é necessário modelar situações chamadas de Confusion. Um exemplo de conflito está ilustrado na figura 5.

A situação apresentada na figura 5 é muito simples. Existem duas transições que para estarem habilitadas precisam de 1 token em cada uma de suas entradas. O problema é que o place de entrada é único, P1 está compartilhado entre as duas transições e possui apenas um token e não dois como seria necessário. Nos resta fazer a seguinte pergunta: Qual transição será disparada, T1 ou T2? Esta escolha será aleatória já que não existe nenhuma prioridade de uma transição em relação à outra.No entanto, se atribuíssemos funções a cada uma das transições, poderíamos ter uma situação típica de if e else.

Figura 5. Exemplo de uma RdP com conflito

Podemos descrever uma Rede de Petri através de uma notação matricial e também por uma árvore de alcançabilidade. Estes dois conceitos são mostrados nos tópicos 2.2 e 2.3.

Page 7: Minicurso Rede Petri

2.2. Notação Matricial

A notação matricial [Bressan 2002] é uma das formas de representar uma Rede de Petri. Como exemplo vamos analisar a rede da figura 6.

Figura 6. Uma Rede de Petri exemplo para notação matricial

A notação matricial pode ser feita usando três tipos de matrizes, sendo elas as seguintes:

• Matriz de entrada (E): ETxP representa a quantidade de arcos de entrada em cada transição.

• Matriz de saída (S): STxP representa a quantidade de arcos de saída em cada transição.

• Matriz de Incidência (I): ITxP = STxP – ETxP

As matrizes referentes à figura 6 estão ilustradas através da figura 7.

Figura 7. Notação matricial para o exemplo da figura 6

Através da notação matricial é possível modelar uma Rede de Petri graficamente, podemos extrair a quantidade de places, transições e arcos. No entanto, somente estes elementos não são suficientes para um modelo completo. Como já vimos, ainda faltam os tokens e os pesos.

Os tokens são solucionados através da marcação inicial. Portanto, é necessário informar M0. Qual é a marcação inicial da figura 6?

Resposta: M0 = (1, 1, 0, 0)

Quais são os pesos de cada arco?

Page 8: Minicurso Rede Petri

Resposta: A principio cada arco possui peso igual a 1. No entanto, para responder será feito outra pergunta: Qual a diferença entre as RdP da figura 8?

Figura 8. RdP exemplo para descoberta do peso na notação matricial

As duas RdP são iguais. A diferença está apenas na representação gráfica. A matriz de saída terá a linha T1 mudada para (figura 9):

Figura 9. Mudança da linha T1 da notação matricial de saída da figura 7

Ou seja, para a figura 8b os pesos são sempre 1 em cada arco, para a figura 8a o peso é representado com se fossem dois arcos de saída da transição T1.

2.3. Árvore de Alcançabilidade

Quantos estados ou marcações são possíveis extrair de uma Rede de Petri? Que tipo de notação pode ser utilizado para representar cada uma destas marcações?

Uma árvore de alcançabilidade [Bressan 2002] [Murata 1989] é capaz de responder estas duas perguntas. Através de uma árvore com raiz igual à marcação inicial é possível representar todas as marcações alcançáveis. É importante ressaltar que o conjunto de alcançabilidade pode ser finito, no entanto, é comum encontrarmos situações onde as marcações alcançadas não nos levam a um estado inicial, ou à marcação inicial, a raiz de nossa árvore.

Portanto, o conjunto de alcançabilidade só é finito se em algum momento uma determinada marcação nos levar novamente à marcação inicial.

A RdP da figura 10 é um exemplo de conjunto finito de marcações. A árvore de alcançabilidade desta rede está ilustrada na figura 11. O estado inicial é representado pela marcação M0 (2, 0, 0, 0), e portanto, esta é a nossa raiz. Durante a construção da árvore deve ser observado quais são as transições habilitadas para disparo para criação de cada nó (nova marcação).

Page 9: Minicurso Rede Petri

Figura 10. Rede de Petri exemplo para árvore de alcançabilidade

A situação da figura 11 é a seguinte:

• Após a definição da raiz, devemos observar quais transições estão habilitadas.

• Somente a transição T1 está habilitada e a marcação resultante é M1(0, 1, 0, 0).

• O place P2 não recebeu dois tokens porque o arco de saída de T1 tem peso 1.

• A próxima transição habilitada é T4 resultando em uma marcação M2(0, 0, 1, 1).

• Neste momento possuímos duas marcações habilitadas, T2 e T3 resultando em um nível com dois nós (marcações M3 e M4).

• Se dispararmos T2 a marcação resultante será M3 (1, 0, 0, 1).

• Se dispararmos T3 a marcação resultante será M4 (1, 0, 1, 0).

• No momento em que RdP chega ao estado M3 ou M4 passamos a ter dois places com tokens (M3: P1 e P4 ou M4: P1 e P3), porém, a transição T1 não ficará habilitada enquanto o place P1 não tiver dois tokens. Esta situação só vai acontecer quanto houver o disparo de T3 ou T4 resultando novamente no estado inicial M0.

Figura 11. Árvore de alcançabilidade da RdP da figura 10

Page 10: Minicurso Rede Petri

Esta RdP possui um conjunto de alcançabilidade finito com cinco marcações (M0, M1, M2, M3, M4).

2.4. Variações das Redes de Petri Desde o trabalho original de Carl Adam Petri têm surgido muitas e diversas variantes ao seu modelo de redes de Petri. Pode-se afirmar que a maior parte destas variantes nasceu da necessidade de adaptação das RdP Ordinárias (ou de baixo-nível – estudadas até agora) à especificidade da aplicação para as quais a sua utilização era desejada. O modelo original das Redes de Petri falha na representação de duas importantes características: aspectos funcionais complexos, tais como, condições que determinam o fluxo de controle, e os aspectos de temporização. Para enfrentar estas duas limitações duas classes de extensões as RdP foram desenvolvidas: as RdP de alto-nível e as RdP temporizadas. Estas extensões serão apresentadas nos tópicos a seguir. No tópico das redes de alto nível, enfatizamos as Redes de Petri Coloridas, já que formam a categoria mais representativa e mais usada das Redes de Petri de alto nível.

2.4.1. Redes de Petri Temporizadas Até o momento estudamos RdP com transições que disparam a desde que os places de entrada possuam tokens suficientes para a ocorrência do disparo. No entanto, pode ser necessário associar ao disparo um retardo. Sendo assim, para cada transição atribuímos um valor de tempo. Esta RdP é chamada de Rede de Petri Temporizada Determinística. Existe uma outra RdP Temporizada Probabilística (Estocástica), que será estudada no tópico 2.4.2. Portanto, em relação as RdP Temporizadas [Bressan 2002] [Murata 1989] podemos extrair os seguintes significados:

• Tempo de aquisição de um recurso. • Tempo de utilização de um recurso. • Tempo em que não necessita de um recurso.

Vejamos o seguinte exemplo da figura 12: • A transição T1 temporizada em 1 segundo. • A transição T2 temporizada em 5 segundos. • As transições T3 e T4 não estão temporizadas.

Figura 12. Exemplo de RdP temporizada

Page 11: Minicurso Rede Petri

Para este exemplo podemos extrair as seguintes observações:

• A transição T1 está temporizada para disparar em 1s, sempre que existir um token em sua entrada (token no place P2).

• A transição T2 está temporizada para disparar em 5s, sempre que existir um token em sua entrada (token no place P2).

• Durante os 4 primeiros segundos a transição T1 estará habilitada. No quinto segundo as transições T1 e T2 estarão habilitadas e haverá um conflito de disparo.

A principal vantagem de uma RdP temporizada é a relação de tempo, que antes não havia. No entanto, trabalhar com uma RdP temporizada significa poder alterar a definição de estado da rede. A relação de tempo altera os estados/marcações alcançáveis. Por este motivo, é muito importante saber utilizar o tempo na RdP para que seu projeto ou modelo não entre por exemplo em um deadlock.

2.4.2. Redes de Petri Estocásticas e Redes de Petri Estocásticas Generalizadas

Redes de Petri Temporizadas Determinísticas são vantajosas para modelagem de sistemas onde a relação de tempo é constante ou determinística, já que associam a cada transição um retardo (ou duração) fixo entre o tempo em que ela está habilitada e o tempo de disparo. No entanto, redes temporizadas determinísticas não são suficientes para modelar sistemas estocásticos, que possuem taxas aleatórias. Sistemas de produção onde o tempo de funcionamento real entre 2 paradas de uma máquina é aleatório são um exemplo destes sistemas. Outro exemplo são sistemas computacionais com taxas aleatórias de geração de processos. Para estes casos as Redes de Petri Ordinárias foram estendidas para modelarem sistemas estocásticos. As Redes de Petri Estocásticas [Haas 2002] [Bressan 2002] associam uma distribuição exponencial ao tempo de disparo de cada transição habilitada da rede. Dessa forma, a rede passa a ser probabilística, sendo descrita por um processo estocástico.

Formalmente, uma Rede de Petri Estocástica é definida por:

• RdP-E = {P, T, A, PA, M0, D} onde:

P (conjunto de places), T (conjunto de transições), A (conjunto de arcos), PA (pesos dos arcos) e M0 (marcação inicial) são definidos exatamente como nas Redes de Petri Ordinárias descritas anteriormente.

D: conjunto das taxas de disparo associadas às transições que obedecem a uma distribuição exponencial. Tais taxas de disparo podem ter o seu valor dependente da marcação. A dependência da taxa de disparo da transição j sobre uma marcação M é denotada por Dj(M).

Em muitos sistemas, não é necessário associarem-se tempos a todos os eventos, e conseqüentemente a todas as transições da Rede de Petri Estocástica. As Redes de Petri Estocásticas generalizadas (RdP-EG) incluem transições que não gastam tempo para disparar, particionando as transições em dois conjuntos: transições imediatas e transições temporizadas.

Page 12: Minicurso Rede Petri

Transições imediatas, uma vez habilitadas, disparam em tempo zero. Transições temporizadas disparam com tempos aleatórios, descritos por distribuições exponenciais. Nas RdP-EG as taxas de disparo estão associadas somente às transições temporizadas.

A definição formal da RdP-EG é semelhante à das Redes de Petri Estocásticas, diferenciando somente no conjunto D das taxas de disparo, que nas RdP-EG são associados somente às transições temporizadas, e não mais a todas as transições como na RdP Estocásticas.

Uma RdP Estocástica é isomórfica a uma Cadeia de Markov (CM) [Haas 2002] [Norris 1998] [Bolch 1998] finita e de tempo contínuo, na qual as marcações são os estados da cadeia e as taxas de transição de estado da cadeia são retiradas das médias de tempo de disparo das transições da rede. Portanto, a marcação M(t) da RdP Estocástica é um processo markoviano homogêneo.

O conjunto de alcance da Rede de Petri Estocástica é o mesmo de sua correspondente ordinária (Rede de Petri que resulta ao se retirarem os tempos associados às transições), o que facilita a sua análise.

2.4.3. Redes de Petri Coloridas

O principal objetivo das Redes de Petri Coloridas (RdP-C) [Girault 2002] [Maciel 1996] é a redução do tamanho do modelo, permitindo que tokens individualizados (coloridos) representem diferentes processos ou recursos em uma mesma sub-rede. Inicialmente, os tokens das RdP Coloridas eram representados por cores ou mesmo por padrões que possibilitam a distinção dos tokens. Em trabalhos mais recentes, os tokens são representados por estruturas de dados complexas não relacionando cores aos tokens, a não ser pelo fato de estes são distinguíveis. Deste modo, os tokens podem conter informações. Além disso, cada place armazena tokens de um certo tipo definido e arcos realizam operações sobre os tokens. As transições são consideradas “expressões de guarda”.

Uma RdP-C é composta por três partes: estrutura, inscrições e declarações. A estrutura é um grafo direcionado, com dois tipos de nós (places e transições), com arcos interconectando nós de tipos diferentes. As inscrições são associadas aos places, transições e arcos.

• Cada place tem as seguintes inscrições: Nome (para identificação); Color Set (especificando os tipos de tokens que podem residir no place); Marcação inicial (multi-conjunto de tokens coloridos).

• Cada transição tem as seguintes inscrições: Nome (para identificação); Guarda (expressão booleana contendo algumas das variáveis).

• Cada arco tem as seguintes inscrições: Expressão do arco (contendo algumas das variáveis).

As declarações são tipos, funções, operações e variáveis. Quando a expressão do arco é avaliada, ela gera um multi-conjunto de tokens coloridos. Expressões podem conter constantes, variáveis, funções e operações definidas nas declarações, e não produzem efeito colateral.

Formalmente, uma Rede de Petri Colorida é definida por:

Page 13: Minicurso Rede Petri

• RdP-C = (R, Σ , C, G, E, I) onde:

R = {P, T, A} exatamente como definidos nas Redes de Petri Ordinárias descritas anteriormente.

Σ: conjunto de tipos não-vazios chamados cores,

C: função de cor definida por P cor,

G: função de guarda definida por T exp, onde exp é uma expressão tal que: ∀ ti ∈ T | Tipo(G(t)) = Boolean ∧ Tipo(Var(G(t))) ∈ Σ],

E: função de expressões de arco definida por A expressões, tal que: ∀ a ∈ A | Tipo (E(a)) = C ∧ Tipo(Var(E(a))) ∈ Σ],

I: expressão de inicialização definida por P marcações0(p), tal que: ∀ pi ∈ P | Tipo(I(p)) = C(p) ∧ Var(I(p)) = ∅. Var(t) é o conjunto de variáveis associadas à transição t. Essas variáveis podem ser associadas às transições de duas maneiras: nas expressões de guarda (G(t), t ∈ T) e nas expressões dos arcos (E(a), a ∈A) que interconectam lugares e transições.

2.4.3.1. Definição formal do comportamento:

• A distribuição de tokens é uma função M: P Σ e uma marcação de uma Rede de Petri Colorida é uma distribuição de tokens. A marcação inicial das redes coloridas é obtida através da avaliação da expressão de inicialização para cada place da rede, ou seja, M0(p) = I(p) <> ∀ p ∈ P.

• A distribuição de ligações é uma função Y: T B. Denomina-se elemento de Y o par (t, b), onde b é uma ligação tal que b ∈ Y (t).

• Variáveis são ligadas (binding) dinamicamente aos valores dos tokens nos places de entrada, durante a avaliação de cada transição.

Cada possível ligação é avaliada, uma por vez, em ordem aleatória.

Todas as ocorrências de uma variável devem ser ligadas a uma mesma cor.

Variáveis associadas a diferentes transições são totalmente independentes.

• Um passo é um multi-conjunto de elementos ligados ou uma distribuição de ligações não-vazia. Um passo Y é habilitado em uma marcação M se a seguinte

propriedade é satisfeita: ∀ p ∈ P: ∑(t,b) ∈ Y E(p,t) <b> ≤ M(p), ∀ p ∈ P.

Quando um passo Y é habilitado em uma marca M1 ele pode ocorrer, mudando a marcação M1 para outra marcação M2, definida por: ∀ p ∈ P: M2(p) = (M1(p) – ∑(t,b) ∈Y E(p,t)<b>) + ∑(t,b) ∈Y E(t,p)<b>, onde E(p,t) e E(t,p) correspondem às expressões dos arcos de entrada e saída da transição (em t) do passo, respectivamente.

Page 14: Minicurso Rede Petri

Em outras palavras, um passo Y = (t, b) está habilitado quando o número de marcas de cores correspondente à ligação do passo é maior ou igual à avaliação da expressão do arco que interliga os lugares de entrada à transição t.

A primeira soma é chamada de remoção de marcas (dos lugares de entrada) enquanto a segunda é chamada de adição de marcas (aos lugares de saída). Além disso, dizemos que M2 é diretamente alcançável de M1 pela ocorrência do passo Y, no qual denotamos: M1 [Y > M2.

• Uma seqüência de ocorrência é uma seqüência de marcações e passos: M1 [ Y1 > M2 [ Y2 > M3 ... Mn [ Yn > Mn+1 tal que Mi [ Yi > Mi+1

para todo i ∈ 1...n é alcançável de M.

A Figura 13 apresenta um exemplo simplificado de Rede de Petri Colorida [Maciel 1996], onde os tokens são identificados apenas por cores. Entretanto, os tokens podem ser estruturas mais complexas. Como podemos observar no exemplo da Figura 13, os arcos são rotulados com cores (a, b e c). Para que uma transição desta rede esteja habilitada, é necessário que os places de entradas desta transição tenham tokens do tipo (cor) associado ao arco que liga estes places à transição. A transição t0 não está habilitada porque não há um token da cor a no place p0. A transição t1 está habilitada porque há um token da cor a no place p1 e tokens das cores a e b no place p2, satisfazendo as condições rotuladas nos arcos que saem destes places, ligando-os à transição t1. O disparo desta transição retira os tokens de cores associadas aos arcos dos places de entrada e adiciona tokens da cor associada ao arco que liga a transição aos places de saída. Deste modo, um token de cor c é acrescentado ao place p4.

Figura 13. Exemplo de Rede de Petri Colorida [Maciel 1996]

2.4.3.2. Análise das Redes de Petri Coloridas

Análise de Alcançabilidade: Árvore de alcançabilidade:

Page 15: Minicurso Rede Petri

• Organiza todas as marcações alcançáveis, e todas as possíveis seqüências de disparo, em uma árvore, onde:

Cada nó corresponde a uma marcação alcançável

Cada arco corresponde a um disparo de uma (única) transição, para uma (única) cor, pela qual a marcação de origem é levada à marcação de destino.

• Em geral possui número muito grande (talvez infinito) de elementos.

Redução da Árvore de Alcançabilidade:

• Árvores de alcançabilidade geralmente possuem classes de marcações equivalentes.

• Para cada classe de equivalência, somente a sub-árvore de um dos nós é desenvolvida, enquanto os demais tornam-se folhas da árvore.

• Marcações de cobertura:

Seja P o conjunto dos lugares da rede, e sejam m1 e m2 duas marcações, tais que m1 [ σ > m2:

m2 cobre m1 se:

∀ p ∈ P, m2(p) ≥ M1(p)

m2 cobre estritamente m1 se:

m2 cobre m1, e m1 ≠ m2

Se m2 cobre estritamente m1, cada coeficiente que foi incrementado de m1 para m2 pode assumir um valor ilimitado e, portanto, é substituído pelo símbolo ω.

Há perda de informação.

• Marcações duplicatas:

Se há vários nós com marcações idênticas, apenas a árvore de um deles é desenvolvida, e os demais são marcados como duplicatas.

Não há perda de informação.

• Marcações equivalentes:

Generalização de duplicata, para Redes de Petri de Alto Nível:

O projetista identifica relações de simetria entre cores nas marcações.

Não há perda de informação.

2.5. Propriedades das Redes de Petri

Neste tópico procuramos mostrar um breve sumário das propriedades [Maciel 1996] comportamentais e estruturais relacionadas às Redes de Petri.

Page 16: Minicurso Rede Petri

2.5.1. Propriedades Comportamentais (influenciadas pela marcação)

Alcançabilidade: Indica a possibilidade de alcançarmos um determinado conjunto de marcações após disparos de transições a partir de uma marcação inicial.

Limitação: Uma RdP pode ser dita como k-limitada. Em uma RdP 3-limitada, nenhum dos places pode exceder o número de tokens definido por k, neste caso, três.

Segurança: A propriedade de segurança é um complemento à propriedade limitação. Um place k-limitado é um place seguro. Se estivermos modelando uma porta lógica, a RdP dever ser 1-limitado. A RdP é segura se em todos os seus estados os places tiverem um ou nenhum token (1 ou 0 - binário).

Vivacidade: Uma RdP livre de impasses (deadlocks). Neste caso não existe a ocorrência de uma transição que não possa ser disparada. Uma transição morta é uma transição que não pode mais ser disparada. Uma RdP morta se encontra em impasse total, ou seja, todas as transições estão mortas.

Cobertura: Quando uma determinada marcação pode ser obtida através de uma outra marcação. Este é o problema cobertura de uma marcação.

Persistência: Se para qualquer par de transições habilitadas, o disparo de uma delas não desabilita o disparo da outra.

Reversibilidade: Quando existe o retorno à marcação inicial ou uma outra marcação qualquer.

Justiça: Diz respeito à quantidade de disparos de uma transição em relação à outra.

2.5.2. Propriedades Estruturais (não influenciadas pela marcação)

Limitação: Se a RdP é limitada estruturalmente para qualquer marcação inicial.

Conservação: Independente dos disparos das transições existentes na RdP, o número de tokens não se altera (não há criação ou destruição).

Repetitividade: Uma RdP é repetitiva se para uma determinada marcação e um conjunto de disparos de transições, houver o disparo ilimitado de todas as transições da RdP.

Consistência: Uma RdP é consistente se for possível voltar ao estado inicial M0 disparando pelo menos uma vez todas as transições da RdP.

3. Modelagem Usando Redes de Petri O objetivo deste tópico é apresentar as etapas necessárias para modelagem de problemas tipicamente triviais do nosso dia-a-dia.

Para iniciar o processo de modelagem precisamos responder a seguinte pergunta: Você conhece o sistema que será modelado?

Antes do processo de modelagem é necessário analisar o sistema objeto de estudo. Seria um erro dos mais inocentes acreditar em um pré-conhecimento sem o devido estudo e análise do sistema. Analisar um sistema significa entender o funcionamento de todas as partes que o compõem, e mais do isso, significa entender se

Page 17: Minicurso Rede Petri

todo o sistema ou apenas uma parte deve ser modelado. O não conhecimento do sistema pode produzir um modelo que não reflete a realidade e, portanto, não verifica e não valida o sistema em análise.

As etapas que iremos descrever constituem uma base para modelagem usando Redes de Petri, são elas:

• Definir uma lista de condições: estados, places de sua RdP.

• Definir uma lista de ações: transições de sua RdP.

• Criar matrizes de entrada e de saída para representar as relações entre transições e places.

• Representar graficamente uma RdP para cada transição.

• Unir todas as RdP por transição em uma RdP completa, que represente o sistema modelado.

• Definir a marcação inicial da RdP.

3.1. Modelar o comportamento de ligar e desligar uma lâmpada

O seguinte sistema deve ser modelado: possuímos uma lâmpada e precisamos modelar seu comportamento de ligar e desligar usando Redes de Petri.

Primeira etapa: Definir uma lista de condições (Tabela 1).

Segunda etapa: Definir uma lista de ações (Tabela 1). Tabela 1. Lista de condições e ações para comportamento de uma lâmpada

Lista de condições Lista de ações P1: Lâmpada desligada. T1: Ligar lâmpada. P2: Lâmpada ligada. T2: Desligar lâmpada

Criar matrizes de entrada e saída para representar relações entre transições e places (Tabela 2 e Tabela 3).

Tabela 2. Matriz de entrada Tabela 3. Matriz de saída

Representar graficamente uma RdP para cada transição (figura 14).

Figura 14. RdP para cada transição das tabelas 2 e 3

O modelo completo já como a marcação inicial está representado na figura 15.

Marcação inicial: M0(1,0).

P1 P2 T1 1 0 T2 0 1

P1 P2 T1 0 1 T2 1 0

Page 18: Minicurso Rede Petri

Figura 15. Modelo completo em RdP para o comportamento da lâmpada

Antes de finalizar este exemplo, vamos fazer duas perguntas: Este modelo está completo? Ele reflete a realidade?

Este modelo não está considerando o tempo de vida da lâmpada após os sucessivos ligar e desligar. Como podemos modelar, considerando mais este elemento do sistema? Vamos supor que em média as lâmpadas possam ser ligadas 4 vezes (apenas um exemplo) e depois elas queimam. Sendo assim, o novo place P3 representaria Tempo de vida (não estamos falando de transições temporizadas).

O modelo ficaria da seguinte forma (figura 16):

Figura 16. Modelo completo em RdP considerando também tempo de vida

3.2. Modelar um sistema de corrida de dois carros

Um grupo de pilotos decidiu testar dois carros de corrida para saber qual era o mais rápido. Basicamente o sistema [Girault 2002] era composto por:

• Dois carros de corrida.

• Um fiscal de bandeirada para iniciar a corrida.

Quando o fiscal recebe sinal dos dois carros (sinal de pronto), ele dá a bandeirada para iniciar a corrida. As listas de condições e ações são apresentadas através da tabela 4.

Tabela 4. Lista de condições e ações para a corrida dos dois carros

Lista de condições Lista de ações P1: Carro A preparando para iniciar. T1: Enviar sinal de pronto (carro A). P2: Carro A esperando para iniciar. T2: Iniciar corrida (carro A). P3: Carro A correndo. T3: Enviar sinal de início (fiscal). P4: Sinal de pronto do carro A. T4: Enviar sinal de pronto (carro B). P5: Sinal de início para carro A. T5: Iniciar corrida (carro B). P6: Fiscal esperando pelos sinais de pronto. ------------------------------------------------ P7: Fiscal enviando sinal de início (bandeirada). ------------------------------------------------ P8: Sinal de pronto do carro B. ------------------------------------------------ P9: Sinal de início para o carro B. ------------------------------------------------

Page 19: Minicurso Rede Petri

P10: Carro B preparando para iniciar. ------------------------------------------------ P11: Carro B esperando para iniciar. ------------------------------------------------ P12: Carro B correndo. ------------------------------------------------

As matrizes de entrada e saída que relacionam as condições e as ações estão ilustradas através das tabelas 5 e 6.

Tabela 5. Matriz de entrada para a corrida dos dois carros

P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 T1 1 0 0 0 0 0 0 0 0 0 0 0 T2 0 1 0 0 1 0 0 0 0 0 0 0 T3 0 0 0 1 0 1 0 1 0 0 0 0 T4 0 0 0 0 0 0 0 0 0 1 0 0 T5 0 0 0 0 0 0 0 0 1 0 1 0

Tabela 6. Matriz de saída para a corrida dos dois carros

P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 T1 0 1 0 1 0 0 0 0 0 0 0 0 T2 0 0 1 0 0 0 0 0 0 0 0 0 T3 0 0 0 0 1 0 1 0 1 0 0 0 T4 0 0 0 0 0 0 0 1 0 0 1 0 T5 0 0 0 0 0 0 0 0 0 0 0 1

A figura 17 ilustra a representação gráfica da RdP por transição.

Figura 17. RdP para cada transição das tabelas 5 e 6

O modelo completo da RdP com a marcação inicial M (1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0) está ilustrado na figura 18.

Page 20: Minicurso Rede Petri

Figura 18. RdP completa para o sistema de corrida entre dois carros

3.3. Modelagem usando Redes de Petri Coloridas

Quando um sistema é grande e complexo, a sua modelagem através de Redes de Petri Ordinárias vai gerar uma rede grande e complexa. Nestes casos, é indicado o uso de Redes de Petri Coloridas que permitem a redução do tamanho dos modelos.

Primeiramente modelaremos um sistema de linha de manufatura usando Redes de Petri Ordinárias e em seguida, modelaremos o mesmo sistema usando Redes de Petri Coloridas.

3.3.1. Linha de Manufatura usando Redes de Petri Ordinárias

O sistema a ser modelado é o de manufatura de dois produtos distintos através de duas linhas de manufatura, onde as máquinas são compartilhadas no processo de fabricação. Os produtos são fabricados através de dois processos distintos, P e Q. O processo P é dividido em seis estágios (p1, p2, p3, p4, p5, p6) e o processo Q é dividido em cinco estágios (q1, q2, q3, q4, q5). Além disso, temos duas máquinas r e s, que são recursos compartilhados entre os processos. Portanto, o sistema é composto por:

• Seis estágios do processo P.

• Cinco estágios do processo Q.

• Duas máquinas compartilhadas entre os processos.

As listas de estados e ações estão descritas na tabela 7.

Tabela 7. Lista de estados e ações para a linha de manufatura

Lista de condições Lista de ações P1: Executando estágio 0 do processo P. T1: Iniciar estágio 1 de P. P2: Executando estágio 1 do processo P. T2: Iniciar estágio 2 de P. P3: Executando estágio 2 do processo P. T3: Iniciar estágio 3 de P. P4: Executando estágio 3 do processo P. T4: Iniciar estágio 4 de P. P5: Executando estágio 4 do processo P. T5: Iniciar estágio 5 de P. P6: Executando estágio 5 do processo P. T6: Iniciar estágio 1 de Q.

Page 21: Minicurso Rede Petri

P7: Executando estágio 0 do processo Q. T7: Iniciar estágio 2 de Q. P8: Executando estágio 1 do processo Q. T8: Iniciar estágio 3 de Q. P9: Executando estágio 2 do processo Q. T9: Iniciar estágio 4 de Q. P10: Executando estágio 3 do processo Q. T10: Reiniciar processo P. P11: Executando estágio 4 do processo Q. T11: Reiniciar processo Q. P12: Máquina r disponível. ----------------------------------------- P13: Máquina s disponível. -----------------------------------------

As matrizes de entrada e saída que relacionam as condições e as ações estão ilustradas através das tabelas 8 e 9.

Tabela 8. Matriz de entrada para a linha de manufatura

P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 T1 1 0 0 0 0 0 0 0 0 0 0 0 0 T2 0 1 0 0 0 0 0 0 0 0 0 1 0 T3 0 0 1 0 0 0 0 0 0 0 0 0 0 T4 0 0 0 1 0 0 0 0 0 0 0 0 1 T5 0 0 0 0 1 0 0 0 0 0 0 0 0 T6 0 0 0 0 0 0 1 0 0 0 0 1 0 T7 0 0 0 0 0 0 0 1 0 0 0 0 0 T8 0 0 0 0 0 0 0 0 1 0 0 0 1 T9 0 0 0 0 0 0 0 0 0 1 0 0 0

T10 0 0 0 0 0 1 0 0 0 0 0 0 0 T11 0 0 0 0 0 0 0 0 0 0 1 0 0

Tabela 9. Matriz de saída para a linha de manufatura

P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 T1 0 1 0 0 0 0 0 0 0 0 0 0 0 T2 0 0 1 0 0 0 0 0 0 0 0 0 0 T3 0 0 0 1 0 0 0 0 0 0 0 1 0 T4 0 0 0 0 1 0 0 0 0 0 0 0 0 T5 0 0 0 0 0 1 0 0 0 0 0 0 1 T6 0 0 0 0 0 0 0 1 0 0 0 0 0 T7 0 0 0 0 0 0 0 0 1 0 0 1 0 T8 0 0 0 0 0 0 0 0 0 1 0 0 0 T9 0 0 0 0 0 0 0 0 0 0 1 0 1

T10 1 0 0 0 0 0 0 0 0 0 0 0 0 T11 0 0 0 0 0 0 1 0 0 0 0 0 0

A figura 19 ilustra a representação gráfica da RdP por transição.

Page 22: Minicurso Rede Petri

Figura 19. RdP para cada transição das tabelas 8 e 9

O modelo completo da RdP com a marcação inicial M0 (2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 1) está ilustrado na figura 20.

Figura 20. Rede de Petri Ordinária para o sistema de manufatura

Esta rede modela um sistema de manufatura com dois processos compartilhando duas máquinas. A adição de um novo processo compartilhando as mesmas máquinas exigiria que a rede modelasse todos os estágios desse novo processo, através de estados, ações e relações entre este processo e os dois já existentes, e entre este processo e os recursos disponíveis. Percebemos então que, aumentando o número de processos, a Rede de Petri que modela o sistema crescerá significativamente. Neste caso, é interessante usar Redes de Petri Coloridas, que reduziria significativamente o tamanho da rede e a tornaria escalável através da alteração apenas da marcação inicial e da função dos arcos. A estrutura continua a mesma.

3.3.2. Linha de Manufatura usando Redes de Petri Coloridas

A figura 21 apresenta a RdP Colorida que modela o sistema de manufatura da figura 20. Na rede colorida, os estágios de produção de cada produto são unificados (s0, s1, s2, s3, s4, s5) e representados através de places comuns. Nesta rede, os tokens de cores (tipos)

Page 23: Minicurso Rede Petri

distintas diferenciam os processos. Do mesmo modo, as máquinas (recursos) foram unificadas em um mesmo place e as cores (tipos) dos tokens distinguem a máquina.

Figura 21. Rede de Petri Colorida para o sistema de manufatura [Maciel 1996]

O conjunto de cores que representam os processos é da cor Proc*I, onde Proc = p|q e I = INT. As cores associadas ao place recurso (máquinas) correspondem às máquinas disponíveis sendo rec = r|s. As expressões de inicialização dos places não-marcados são omitidas. As funções de inicialização dos places são:

s0 = 2’(p,0) s1 = 1’(q,0) recurso = 2’r + 1’s

Deste modo, o place s0 possui dois tokes, onde a cor do processo é p e o zero corresponde ao número de iterações realizadas. As marcas inicialmente disponíveis no place recurso são dois tokens da cor r e um da cor s.

Inicialmente, as transições t0 e t1 estão habilitadas. Para que transição s1 seja disparada a variável x do arco que liga o place recurso a s1 recebe um token da cor q, sendo associado ao arco o valor 2’r. O disparo de t1 remove um token da cor (q,0) do place s1 e dois tokens da cor 2’r do place recurso.

4. Métodos e Ferramentas de Validação e Verificação de Redes de Petri Conforme descrevemos na Introdução, existem modelos analíticos, de simulação e medição enquanto processo de projeto, análise e avaliação de um sistema computacional [Jain 1991]. Destes três, apenas o modelo de medição exige que o

Page 24: Minicurso Rede Petri

sistema exista fisicamente. As Redes de Petri podem ser utilizadas como ferramentas de validação e verificação através dos modelos analíticos e de simulação conforme veremos a seguir:

O modelo analítico para RdP pode ser dividido em três métodos de análise [Murata 1989]:

• Análise por enumeração: Este método está baseado no uso de árvores de alcançabilidade ou grafos de alcançabilidade. Conforme descrito no tópico 2.3, é construída uma árvore com raiz igual à marcação inicial da RdP e a partir do disparo de cada transição habilitada são encontradas as marcações (folhas) alcançáveis. O grafo de alcançabilidade pode ser modelado considerando os nós como as marcações, e as arestas como os disparos de transições.

• Análise por matriz de incidência e equação de estado: É possível descrever RdP através de equações algébricas. Neste material não abordamos equações algébricas, mas matrizes foram discutidas no tópico 2.2.

• Análise por redução ou decomposição (transformações): Em alguns casos é possível reduzir o tamanho de uma RdP para uma composição mais simples. Este método deve ser aplicado quando for possível manter as propriedades que se pretende analisar. Podemos dividir este método em seis partes ilustrado através da figura 22.

a) Fusão de places em série.

b) Fusão de transições em série.

c) Fusão de transições em paralelo.

d) Fusão de places em paralelo.

e) Eliminação de places em loop.

f) Eliminação de transições em loop.

Figura 22. Método de análise por redução ou decomposição [Murata 1989]

Outro modelo muito importante durante o uso das Redes de Petri é a simulação. Entre as vantagens da simulação podemos citar as seguintes:

• Efeitos das animações e gráficos ajudam no aprendizado e entendimento do sistema simulado.

Page 25: Minicurso Rede Petri

• Permite manter um maior controle sobre o experimento, o que muitas vezes não é possível no sistema real.

• Permite estudar o sistema durante o longo período de tempo simulado.

Na URL http://www.daimi.au.dk/PetriNets/tools/complete_db.html [Petri Nets 2004] podemos encontrar uma lista completa de vários simuladores de Redes de Petri disponíveis comercialmente e gratuitamente. No tópico 4.1 descrevemos o simulador Visual Object Net ++, desenvolvido por um grupo de pesquisadores alemães.

4.1. Ferramenta de simulação Visual Object Net ++

É muito difícil encontrar uma ferramenta de simulação de Redes de Petri que suporte todas as variações encontradas sobre RdP. Algumas ferramentas se limitam a simular apenas RdP Ordinárias, outras apenas RdP Estocásticas e etc.

O simulador Visual Object Net ++ (VisObjNet) é bastante simples e oferece uma interface fácil de usar. Suas características básicas são:

• Suporta Redes de Petri Temporizadas.

• Suporta elementos discretos e contínuos.

• Não suporta Redes de Petri Coloridas e Estocásticas.

• Análise simples de desempenho.

• Configuração de velocidade de simulação.

• Possui um editor gráfico.

• Animação de tokens.

Este simulador foi desenvolvido para máquinas com sistema operacional Windows. Para instalar, basta descompactar o arquivo obtido através da homepage do simulador (http://www.systemtechnik.tu-ilmenau.de/~drath/visual_E.htm) [Drath 2004].

É possível encontrar simuladores mais completos, porém costumam ser simuladores comerciais. Esta é uma boa lacuna para ser preenchida! Alguém se habilita a desenvolver um simulador de RdP Temporizadas, Coloridas e Estocásticas?

4.1.1. Guia de utilização do VisObjNet

O principal objetivo deste tópico é apresentar o VisObjNet [Drath 2004], algumas de suas interfaces e como simular uma Rede de Petri.

Este simulador apresenta suporte a elementos discretos e contínuos. No entanto, não estaremos simulando uma RdP contínua. Algumas observações a respeito destes elementos:

• Transição contínua: Seu disparo pode estar associado a um valor constante ou a uma função

• Place contínuo: Possui tokens com valores reais.

A figura 23 ilustra a interface principal o VisObjNet, dividida em 4 módulos:

Page 26: Minicurso Rede Petri

• Menu: funções associadas à gerencia de arquivos, tais como abrir e salvar, e botões de acesso rápido para representação gráfica das Redes de Petri.

• Properties: Módulo referente às propriedades de cada elemento da Rede de Petri. Neste módulo podemos alterar questões como quantidade de tokens em um place e peso de um arco, por exemplo.

• Factory: Possui um breve tutorial e opções rápidas para acessar ou deletar arquivos.

• Edição: Tela onde são construídas as Redes de Petri.

Figura 23. Interface principal do VisObjNet

As figuras 24 e 25 ilustram o módulo “Properties”. Marcando um elemento no módulo de edição, as propriedades deste aparecerão conforme ilustrado na figura 24. Se for necessário informações a respeito de todos os elementos da RdP, basta escolher uma das opções relativas a cada elemento, conforme ilustrado na figura 25.

Através do módulo de propriedades podemos alterar os seguintes parâmetros para cada elemento:

• Places: Nome, variável (pode ser usada em funções), tipo (discreto ou contínuo), quantidade de tokens iniciais, visibilidade do rótulo e tamanho.

• Transições: Nome, atraso (temporização ou função no caso de elemento contínuo), tipo (discreto ou contínuo), cor, visibilidade do rótulo, tamanho, prioridade e Reservation.

Page 27: Minicurso Rede Petri

• Arcos: Peso, visibilidade do rótulo e tipo (normal, inhibitor e static test arc). Maiores informações sobre os tipos de arcos podem ser encontradas em [Maciel 1996].

Figura 24. Interface das propriedades dos places, transições e arcos

Figura 25. Interface de informações relativas aos places, transições e arcos

A figura 26 ilustra a opção para início de uma simulação.

Entre os botões de acesso rápido que existem no primeiro módulo de interface, existe o botão Start. Este botão abre uma nova interface de botões para gerenciar a simulação. A função de cada botão é a seguinte:

• Step: Usando este botão, a RdP será simulada através de passos. Será sempre necessária a intervenção do usuário apertando este botão. Somente as transições habilitadas serão disparadas a cada passo.

• Run: A RdP será simulada sem prazo de tempo definido para parar. Enquanto houver uma transição habilitada para disparo a rede continuará sendo simulada.

• Run to event: É necessário um evento provocado pelo usuário. A inserção de um token em um determinado place provoca o início da simulação.

• Stop: Pára a simulação. Este botão não impede a continuação da simulação a partir do estado em que foi finalizada.

Page 28: Minicurso Rede Petri

Figura 26. Simulando a execução de uma RdP (comportamento da lâmpada)

A figura 27 ilustra o módulo de interface de opções. Neste módulo é possível encontrar campos de configuração (os dois últimos campos ainda não foram projetados) referentes aos seguintes itens:

• Representação: Tipo de grid.

• Simulação: Tempo de simulação para mudança de um estado (100ms é o padrão) e tipo de animação.

• Performance: Análise simplificada de desempenho.

Figura 27. Interface de opções

5. Aplicação de Redes de Petri em Sistemas Computacionais Como apresentamos ao longo do texto, as Redes de Petri são um importante modelo para modelagem de sistemas, em particular de sistemas computacionais. O principal motivo disso são as propriedades inerentes às redes de Petri que facilitam a modelagem de características típicas dos problemas de computação como concorrência, controle, conflitos, sincronização, compartilhamento, entre outros.

Neste tópico apresentaremos exemplos de modelagem de sistemas computacionais usando Redes de Petri Ordinárias, Coloridas e Estocásticas. Ao contrário dos exemplos apresentados no tópico 3, neste tópico não apresentaremos todas as fases de modelagem dos sistemas. Apresentaremos o modelo (Rede de Petri)

Page 29: Minicurso Rede Petri

completo, suas condições e ações. Nos modelos usando Redes de Petri Coloridas são usadas diferentes linguagens para as inscrições da rede.

5.1. Semáforo

Um típico problema computacional é o caso de comunicação entre processos concorrentes [Tanenbaum 2003b], que compartilham um recurso do sistema. O compartilhamento pode gerar situações indesejáveis. Uma das soluções para problemas de compartilhamento é o uso de semáforo. Um semáforo é uma variável inteira não negativa que é manipulada por instruções de down e up. O semáforo indica quando o recurso associado a ele está sendo utilizado por um dos processos concorrentes:

• S > 0: nenhum processo está utilizando o recurso

• S = 0: processo impedido de utilizar o recurso

A Região crítica é uma área do processo onde é realizado o acesso ao recurso compartilhado.

Neste exemplo apresentamos a rede que modela dois processos concorrendo por um recurso e usando um semáforo para resolver os problemas de compartilhamento [Bressan 2002]. Os processos são p e q. Cada um possui 3 estados (p1, p2, p3, q1, q2, q3). O terceiro estado de cada processo (p3, q3) é referente a região crítica (recurso compartilhado). O semáforo é representado pelo estado R (Recurso). A figura 28 apresenta a Rede de Petri Ordinária que modela um semáforo.

Figura 28. Rede de Petri Ordinária que modela um semáforo

5.2. Produtor/Consumidor

A relação Produtor/Consumidor [Tanenbaum 2003b] é uma situação bastante comum em sistemas computacionais. Nesta situação dois processos compartilham um buffer de tamanho fixo. O produtor insere informação no buffer e o consumidor retira informação do buffer. Existem dois problemas em questão: primeiro se o produtor quer inserir, mas o buffer está cheio, e segundo se o consumidor quer retirar, mas o buffer está vazio.

Os estados do sistema são: esperando para produzir, esperando para consumir, produzindo item, colocando item no buffer, retirando item do buffer, consumindo item, tamanho do buffer, buffer. As ações são: produzir item, preparar para colocar item no buffer, colocar item no buffer e produzir novo item, retirar do buffer, consumir item, consumir novo item [Bressan 2002] [Desel 2000] [Silva 2000].

A marcação inicial da rede possui um token no place do início do processo produtor (esperando para produzir) e um token no place do início do processo

Page 30: Minicurso Rede Petri

consumidor (esperando para consumir). Além disso, possui m tokens no place tamanho do buffer, onde m é igual ao tamanho do buffer. A figura 29 apresenta a rede que modela um sistema Produtor/Consumidor usando Redes de Petri Ordinárias.

Figura 29. Rede de Petri Ordinária que modela um sistema Produtor/Consumidor

5.3. Modelo de máquina PRAM

Em um sistema PRAM (Parallel Random Access Machine) [Almasi 1994], cada processador tem acesso à memória compartilhada do sistema. Deste modo, a comunicação entre os processos é realizada através de acessos à memória comum do sistema. O sistema PRAM é um tipo de semáforo (Exemplo 5.3.), tendo a memória como recurso compartilhado. No PRAM acessos à memória são gerados por cada processador. Para modelar um gerador de acessos para cada RAM (Random Access Machine) usamos redes de Petri temporizadas [Penha 2004]. Os estados da rede são: Gerador de Acessos de P1, Gerador de Acesso de P2, P1 esperando para acessar a memória, P2 esperando para acessar a memória, P1 acessando memória, P2 acessando memória, Memória disponível.

A Figura 30 apresenta a Rede de Petri temporizada que modela um sistema PRAM (Parallel Random Access Machine) EREW (Exclusive Read/Exclusive Write) com dois processadores (RAMs).

A geração de acessos em máquinas paralelas é aleatória. Como este exemplo usa redes de Petri temporizadas, para que a geração seja aleatória foi necessário fazer uma adaptação na geração de acessos, acrescentando uma transição na geração de acessos. Portanto, as ações da rede são: Gerar processo P1, Não gerar processo P1, Gerar processo P2, Não gerar processo P2, Acessar memória para P1, Acessar a memória para P2, Liberar a memória de P1, Liberar a memória de P2.

A marcação inicial da rede possui um token no place Memória Disponível (já que o sistema só pode realizar uma operação na memória por vez - EREW) e nos Geradores de Acessos de cada processador.

Como podemos perceber, o uso de Redes de Petri Ordinárias ou Temporizadas para modelar este sistema não foi o mais adequado. Primeiro porque a geração de acessos é um processo estocástico e o modelo usando redes temporizadas não reflete adequadamente este comportamento estocástico, apesar da transição inserida para geração aleatória de acessos. Neste caso, o tipo de Rede de Petri mais adequada é a Estocástica. Além disso, o modelo não é escalável. O aumento do número de

Page 31: Minicurso Rede Petri

processadores provocaria um aumento significativo na rede, tanto nos estados, quanto nas transições e nos arcos. Portanto, a modelagem de um sistema PRAM seria mais adequada utilizando Redes de Petri Coloridas e Estocásticas.

Figura 30. Rede de Petri temporizada para o sistema PRAM [Penha 2004]

5.4. Protocolo de comunicação

Uma área muito importante atualmente é a de protocolos de comunicação [Tanenbaum 2003a]. E as redes de Petri são muito úteis na modelagem e análise desses protocolos. Neste exemplo vamos usar Redes de Petri Ordinárias para modelar um protocolo de comunicação simples com um transmissor e um receptor. O transmissor envia uma mensagem para o receptor, o receptor recebe então a mensagem e envia um ack para o transmissor. Este tipo de protocolo também é conhecido como simplex stop-and-wait e sua descrição pode ser encontrada na referência [Tanenbaum 2003a]. De uma maneira geral é realizado um controle de fluxo, ou seja, para o transmissor enviar o próximo pacote, é necessário que o receptor envie uma confirmação, um feedback ou simplesmente um ack. Não são considerados possíveis erros durante uma transmissão.

A figura 31 apresenta a Rede de Petri que modela este protocolo simples de comunicação [Maciel 1996]. Os estados, ações e marcação inicial podem ser observados na figura.

Figura 31. Rede de Petri Ordinária de um protocolo simples de comunicação

Page 32: Minicurso Rede Petri

Um outro protocolo de comunicação que também está descrito na referência [Tanenbaum 2003a] é o simplex para um canal com ruído. Neste caso, é considerada uma situação normal onde existem erros. Portanto, os quadros podem ser danificados ou simplesmente perdidos. A figura 32 ilustra o modelo de Redes de Petri para este protocolo [Tanenbaum 2003a].

Figura 32. Rede de Petri Ordinária de um protocolo simplex para canal com ruído

Neste protocolo o que diferencia um quadro recebido do próximo quadro é o número de seqüência de tamanho igual a um bit, portanto, seq. 0 ou seq. 1 conforme descrito na figura 32. Já que estamos considerando as possíveis perdas de quadros, são utilizadas as transições Perder seq. 0, Perder seq. 1 e Perder Ack, que poderão de forma aleatória perder os quadros de seqüência 0 ou 1 ou um quadro de confirmação (Ack). É importante ressaltar que, os places Seq. 0 na linha, Seq. 1 na linha e Ack na linha estão em uma situação de conflito, já que existem saídas para mais de uma transição, confirmando portanto, as condições aleatórias das transições descritas acima.

5.5. Pipeline

O paralelismo pipelined [Hennessy 2003] explora os aspectos temporais das aplicações paralelas. Um sistema pipeline é composto por um determinado número de estágios que podem ser executados simultaneamente. Quando um estágio i encerra sua atividade, este transfere o resultado obtido para o próximo estágio i+1 e aguarda novos dados do estágio anterior i-1. Os dados a serem processados são passados de estágio a estágio seqüencialmente. Deste modo, a comunicação entre os estágios é restrita aos estágios vizinhos.

Neste exemplo, modelamos um sistema pipeline simples [Maciel 1996] , com duas unidades funcionais. Para que um dado seja processado, a unidade deve estar ociosa. Ao receber dado na entrada, a unidade funcional A processa o dado e envia para a entrada da unidade funcional B. A unidade funcional A pode então receber novos dados. A unidade funcional B, ao receber o dado processado por A, termina o processamento e envia o resultado para a saída do sistema.

Page 33: Minicurso Rede Petri

Portanto, os estados do sistema são: Entrada do sistema (p0), entrada da unidade funcional A vazia (p3), entrada da unidade A bloqueada (p1), saída da unidade A vazia (p4), saída da unidade A bloqueada (p5), unidade A processando (p2), entrada da unidade B vazia (p8), entrada da unidade A bloqueada (p7), transferência de dado entre a unidade A e a unidade B (p6), entrada da unidade B (p10), unidade B processando (p9), saída da unidade B (p11), saída do sistema (p12).

As ações do sistema são: ler entrada da unidade A (t0), unidade A processa dado (t1), escrever resultado na saída da unidade A (t2), iniciar transferência de dado da unidade A para a unidade B (t4), finalizar processo de transferência de dado entre A e B (t3), unidade B processa dado (t5), escrever resultado na saída da unidade B (t6), escrever dado na saída do sistema (t7).

Um token no place p0 indica que existe dado a ser processado pelo sistema. A transição t0 só está habilitada quando houver informação disponível e a unidade A estiver habilitada para efetuar a leitura do dado. A transição t1 só pode ser disparada se houver dado na entrada da unidade A (place p1) e se a saída desta unidade estiver habilitada (p4). A figura 33 apresenta a rede que modela este sistema pipeline.

Figura 33. Rede de Petri Ordinária de sistema pipeline de duas unidades funcionais

5.6. Sistema FIFO

A Figura 34 apresenta uma Rede de Petri de alto nível bastante simples que modela um sistema de filas do tipo FIFO (First In-First Out) [Tanenbaum 2003b]. O sistema FIFO consiste de uma fila de elementos de dados, onde elementos podem ser adicionados ou removidos. Os elementos são adicionados no final da fila e removidos do início da fila. Deste modo, o primeiro elemento a entrar é o primeiro a sair.

Figura 34. Rede de Petri de alto nível para o sistema FIFO [Barros 1996]

Page 34: Minicurso Rede Petri

A Rede de Petri de alto nível não tem necessariamente tokens coloridos, mas tokens como tipos de dados. No entanto, a rede possui inscrições. Os estados da rede são: elemento a ser adicionado na fila (A1), elemento adicionado na fila (A2), elemento a ser removido da fila (R1), elemento removido da fila (R2) e a fila propriamente dita. As ações da rede são: adicionar elemento na lista e remover elemento da lista.

5.7. Jantar dos Filósofos

Neste exemplo apresentamos a rede que modela um típico problema de computação: o jantar dos Filósofos [Tanenbaum 2003b]. Para iniciar nossos estudos na modelagem de sistemas computacionais com Redes de Petri Coloridas apresentamos um modelo usando Redes de Petri Ordinária e sua evolução para uma Rede de Petri Colorida [Barros 1996] [Maciel 1996].

5.7.1 Jantar dos Filósofos usando Redes de Petri Ordinárias

O problema do jantar dos filósofos consiste de filósofos que podem estar comendo, pensando ou com fome. Os filósofos estão sentados ao redor de uma mesa e cada um tem um garfo e um prato de comida à sua frente. Entretanto, para que um filósofo possa comer, ele precisa de dois garfos (o seu e o do seu vizinho). O problema é então o fato de que, se todos os filósofos pegarem o garfo da direita em um mesmo instante e aguardarem a liberação do garfo da esquerda, o sistema entrará em deadlock (impasse). Modelaremos uma rede com cinco filósofos e, conseqüentemente, cinco talhares.

Figura 35. Rede de Petri Ordinária para o problema do jantar dos filósofos

Portanto, os estados da rede são: Filósofo 1 pensando, Filósofo 1 comendo, Filósofo 2 pensando, Filósofo 2 comendo, Filósofo 3 pensando, Filósofo 3 comendo, Filósofo 4 pensando, Filósofo 4 comendo, Filósofo 5 pensando, Filósofo 5 comendo, Garfo 1, Garfo 2, Garfo 3, Garfo 4, Garfo 5. As ações da rede são: Filósofo 1 pega talher, Filósofo 1 libera talher, Filósofo 2 pega talher, Filósofo 2 libera talher, Filósofo 3 pega talher, Filósofo 3 libera talher, Filósofo 4 pega talher, Filósofo 4 libera talher, Filósofo 5 pega talher, Filósofo 5 libera talher. Por questões de simplificação, na nossa

Page 35: Minicurso Rede Petri

rede não modelamos os estados dos filósofos com fome. Neste caso, estes estados estão representados pelo disparo da transição pega talher: um filósofo pega talheres quando está com fome. A figura 35 apresenta a Rede de Petri Ordinária para o problema do jantar dos filósofos.

5.7.2. Jantar dos Filósofos usando Redes de Petri Coloridas

Como podemos perceber a Rede de Petri Ordinária que modela o problema do jantar dos filósofos é complexa, grande e repetitiva.O aumento do número de filósofos tornaria a rede ainda maior e mais complexa e alteraria sua estrutura. Além disso, os mesmos estados e ações são repetidos para cada filósofo.

Deste modo, a substituição de uma RdP Ordinária por uma RdP Colorida é bastante adequada, eliminando os processos repetitivos e fazendo com a rede seja escalável de forma que o aumento do número de filósofos pode ser feito simplesmente alterando a marcação inicial dos places (filósofos) pensando e G (garfos) livres e das funções left() e right().

Neste caso, cada conjunto de places é substituído por um único place colorido contendo tokens coloridos. A fusão dos (repetitivos) places resulta na fusão dos respectivos (e repetitivos) arcos. Para isto, são atribuídas funções aos arcos de forma a determinar quais tokens devem ser adicionados ou retirados dos places. É o caso das funções left() e right(), que selecionam os garfos corretos para cada filósofo.

Figura 36. Rede de Petri Colorida para o problema do jantar dos filósofos

No modelo apresentado na figura 36, os filósofos e os garfos são distinguidos pela forma do token.Além disso, cada filósofo e cada garfo é caracterizado por uma cor diferente. Inicialmente, a rede possui cinco tokens de cores distintas no place (filósofos) pensando e cinco tokens de cores distintas no place (garfos) livres. A função left(filósofo) seleciona o garfo em frente ao filósofo i (garfoi) e a função right(filósofo) seleciona o garfo à direita do filósofo i (garfoi+1).

Na figura 37 apresentamos o comportamento da rede da figura 35 antes e após o disparo da transição pega talheres para o filósofo 1 (vermelho). No canto inferior direito da figura 37 apresentamos a disposição dos filósofos e dos talheres na mesa.

Page 36: Minicurso Rede Petri

Figura 37. Comportamento dinâmico da Rede de Petri Colorida para o problema do jantar dos filósofos

Como podemos perceber, a modelagem usando Redes de Petri Colorida reduziu significativamente o modelo e eliminou places, transições e arcos repetitivos, unificando-os.

5.8. Sistema paralelo simples (Estocástica)

Neste exemplo apresentamos um sistema paralelo [Almasi 1994] simples modelado com Redes de Petri Estocástica [Haas 2002] [Silva 2000]. A figura 38 mostra a Rede de Petri que modela o sistema paralelo [Silva 2000]. A Figura 39 mostra o diagrama de estados que é a cadeia de Markov associada aos nós da árvore de alcançabilidade da Rede de Petri apresentada na Figura 38.

O vetor de probabilidades é calculado através da resolução do sistema de

equações lineares 0* =Qvetor , sendo que 11

=∑=

n

iivetor , onde n = número de estados da

cadeia de Markov correspondente.

A taxa de disparo de P3+P4 é )()( 21 parpar WTTW + . Qual a probabilidade de 1parT

disparar? É de )()()(

21

1

parpar

par

TWTWTW+ . Portanto:

µ1 = )()()(

)())()(( 1

21

121 par

parpar

parparpar TW

TWTWTW

TWTW =+

+ .

Do mesmo modo, µ2 = )( 2parTW . Logo: )( fimprocfimproc TW=λ e )( contproccontproc TW=λ .

Qual o significado de )( fimprocTW e )( contprocTW ?

Page 37: Minicurso Rede Petri

• A atividade de verificação é igual a 0.0001. Considerando uma taxa de 10000, e definindo que a probabilidade de contprocfimproc / é 99% vs. 1%, temos que portanto, 9900)( =fimprocTW e 100)( =contprocTW .

Figura 38. Rede de Petri Estocástica de

um sistema paralelo simples

Figura 39. Diagrama de estados

Deste modo, os parâmetros (definidos e calculados) da rede são apresentados na Tabela 10.

Tabela 10. Parâmetros da Rede de Petri Estocástica do sistema paralelo

Transições Taxa Valor Semântica Tnovodado λ 1 Servidor infinito

Tinicio τ 1000 Servidor único Tpar1 µ1 10 Servidor único Tpar2 µ2 5 Servidor único Tsinc σ 2500 Servidor único

Tfimproc α 9900 Servidor único Tcontproc β 100 Servidor único

TI/O ν 25 Servidor único Tverif θ 0,5 Servidor único

A operação de verificação tem, por definição, uma média de duração de 0,0001 unidades de tempo, e resulta em sucesso em 99% das vezes e em falha em 1% das vezes.

Os índices de performance para este sistema são:

• Vazão da transição TI/O: 1.504 sucessos/unidade de tempo

Page 38: Minicurso Rede Petri

• Número médio de itens em teste: 0,031

• Tempo de produção médio: 0,33 unidades de tempo.

6. Conclusões Considerando os resultados apresentados no minicurso podemos concluir que as Redes de Petri são um importante recurso para a modelagem de sistemas, particularmente de sistemas computacionais. Esta importância é fundamentada nas propriedades inerentes às Redes de Petri que facilitam a modelagem de características típicas dos sistemas computacionais, entre as quais podemos destacar: compartilhamento, concorrência, conflito, controle e sincronização.

Entretanto, a modelagem de sistemas computacionais que possuem algumas características probabilísticas, como a máquina PRAM, utilizando Redes de Petri Ordinárias e Temporizadas não é o ideal. Neste caso, o ideal seria utilizar uma Rede de Petri Estocástica.

A modelagem usando Redes de Petri Coloridas, normalmente permite uma redução no tamanho do modelo devido à unificação de places, transições e arcos. O grau de redução da Rede de Petri é dependente dos modelos originais e principalmente da quantidade de repetições (places, transações e arcos) existentes.

Esperamos ter alcançado nossos principais objetivos com a preparação e apresentação deste minicurso, apresentando os principais conceitos das Redes de Petri Ordinárias e de algumas extensões como as Redes de Petri Coloridas e as Redes de Petri Estocásticas. Além disso, apresentamos exemplos de modelagem de problemas triviais com Redes de Petri e exemplos de utilização de Redes de Petri na modelagem de sistemas computacionais e na solução de problemas relacionados com os mesmos.

Entre as diversas possíveis sugestões de estudos mais avançados e trabalhos futuros podemos destacar: aprofundamento do estudo das Redes de Petri Coloridas e das Redes de Petri Estocásticas, estudo de outras variações de Redes de Petri, utilização dos diversos tipos de Redes de Petri na modelagem e solução de problemas relacionados com sistemas computacionais, estudo e utilização de outras ferramentas de validação/verificação de Redes de Petri e finalmente o projeto e desenvolvimento de ferramentas de validação e verificação de Redes de Petri, como analisadores e simuladores de Redes de Petri.

Page 39: Minicurso Rede Petri

7. Referências Almasi, G. S., Gottlieb, A.A. (1994), “Highly Parallel Computing”, 2nd. Edition,

Benjamim/Cummings.

Barros, J. P. M. P. R. (1996), “CpPNeTS: uma Classe de Redes de Petri de Alto-nível. Implementação de um sistema de suporte à sua aplicação e análise”, Dissertação de mestrado, Faculdade de Ciências e Tecnologia, Departamento de Informática, Universidade Nova de Lisboa, Lisboa. URL: http://www.estig.ipbeja.pt/~jpb/BarrosTeseDeMestrado.pdf (último acesso em outubro de 2004)

Bolch, G., et al (1998), “Queueing Networks and Markov Chains: Modeling and Performance Evaluation With Computer Science Applications”, Editora Wiley-Interscience

Bressan, G. (2002), “Modelagem e Simulação de Sistemas Computacionais” Capítulo sobre Redes de Petri, LARC-PCS/EPUSP, www.larc.usp.br/conteudo/universo/pcs012/modsim05.pdf (último acesso em outubro de 2004)

Buyya, R. (1999), “High Performance Cluster Computing”, Volume 1, Prentice Hall

Desel, J. (2000), “Place/Transitions Nets I”, Introductory Tutorial Petri Nets, Petri Nets 2000, 21st International Conference on Application And Theory of Petri Nets, Denmark, pp 111-160.

Drath, R., Visual Object Net ++ (2004). URL: http://www.systemtechnik.tu-ilmenau.de/~drath/visual_E.htm, Technical University of Ilmenau, Alemanha (último acesso em outubro de 2004).

Girault, C., Valk, R. (2002), “Petri Nets for Systems Engineering: A Guide for Modeling, Verification and Application”, Springer Verlag.

Haas, P. J. (2002) “Stochastic Petri Nets: Modeling, Stability, Simulation”, Springer-Verlag 1st edition

Hennessy, J. L., Patterson, D. A. (2003) “Computer Architecture: A Quantitative Approach” 3rd Edition, Morgan Kaufmann Publishers.

Jain, R. (1991), “The Art of Computer Systems Performance Analyses”, John Wiley.

Maciel, P. R., et al. (1996), “Introdução às Redes de Petri e Aplicações”, X Escola de Computação, Campinas SP.

Murata, T. (1989) "Petri Nets: Properties, Analysis and Applications", Proceedings of the IEEE, Vol. 77, pp. 541-580.

Norris, J. R. (1998), “Markov Chains”, Cambridge University Press

Penha, D. O., Freitas, H. C., Martins, C. A. P. S. (2004) “Modelo de Memória Reconfigurável para Sistemas Paralelos”, V Workshop em Sistemas Computacionais de Alto Desempenho, Sociedade Brasileira de Computação, Foz do Iguaçu.

Peterson, J. L. (1977), “Petri Nets”, ACM Computing Surveys, vol. 9, No. 3, pp. 223-252

Page 40: Minicurso Rede Petri

Peterson, J. L. (1981), “Petri Net Theory and the Modeling of Systems”, Englewood Cliffs, Prentice Hall

Petri Nets World (2004). URL: http://www.daimi.au.dk/PetriNets/ (último acesso em outubro de 2004)

Petri, C. A., (1962), “Kommunikation mit Automaten”, Bonn: Institut für Instrumentelle Mathematik, Schriften des IIM Nr. 3, 1962. Também em inglês, “Communication with Automata”, New York: Griffiss Air Force Base, Tech. Rep.RADC-TR-65-377, vol. 1, Suppl. 1, 1966

Silva, M. (2000), “Place/Transitions Nets II”, Introductory Tutorial Petri Nets, Petri Nets 2000, 21st International Conference on Application And Theory of Petri Nets, Denmark, pp 199-216.

Tanenbaum, A. S. (2003a), “Redes de Computadores”, Campus, Tradução da 4a edição.

Tanenbaum, A. S. (2003b), “Sistemas Operacionais Modernos”, Prentice-Hall, Tradução da 2a edição.