• Nenhum resultado encontrado

Os algoritmos para s´ıntese de um controlador baseado em ajustes nos intervalos das transi¸c˜oes foram implementados como um pacote em Python 2.7. A escolha da tecnologia para implementa¸c˜ao n˜ao foi baseada em nenhum crit´erio t´ecnico espec´ıfico. Todavia, ´e importante salientar que algumas caracter´ısticas como orienta¸c˜ao a objetos, sintaxe simples, conven¸c˜oes bem estabelecidas, suporte multiplataforma, framework nativo para testes unit´arios e framework para documenta¸c˜ao, foram ben´eficas ao desenvolvimento.

A implementa¸c˜ao ´e dividida nos sub-pacotes, “state class”, “controller synthesizer” e “time petri net”, al´em dos testes.

O sub-pacote “time petri net” implementa a estrutura de uma RPT. Ele ´e composto unicamente pela classe “TimePetriNet” que, al´em de encapsular os atributos de uma RPT, apresenta alguns m´etodos ´uteis como recuperar transi¸c˜oes imediatamente precedentes e sucessoras a uma lista de transi¸c˜oes, verificar se uma transi¸c˜ao ´e concorrente a outras, recuperar transi¸c˜oes habilitadas por uma marca¸c˜ao, calcular a marca¸c˜ao da rede ap´os o

disparo de uma transi¸c˜ao, verificar se dois objetos do tipo “TimePetriNet” s˜ao iguais, dentre outros.

As classes de estados (Se¸c˜ao 2.4) foram implementadas no sub-pacote “state class”, composto pelas classes “StateClass”, “StateClassNode” e “StateClassGraph”. Elas foram divididas de acordo com uma responsabilidade diferente.

A classe “StateClass” implementa a classe de estados em si, armazenando atributos como marca¸c˜ao, rel´ogio global, intervalos dinˆamicos e de disparo, entre outros. Seus m´etodos s˜ao, principalmente, para o c´alculo dos atributos da classe de estados.

“StateClassNode” representa a classe de estados como n´o do grafo de classes de es- tados, encapsulando um objeto “StateClass”, referenciando o n´o pai e os n´os filhos e ar- mazenando a sequˆencia de disparo desde a raiz. Seus m´etodos s˜ao apenas para o c´alculo dos n´os filhos.

A estrutura do grafo de classes de estados ´e implementada pela classe “StateClass- Graph” que, a partir, de um objeto “TimePetriNet”, executa a cria¸c˜ao do grafo. Possui tamb´em um m´etodo para buscar o n´o resultante de uma dada sequˆencia de disparos.

Baseado em “state class” foi desenvolvido o sub-pacote “controller synthesizer”, com- posto por quatro classes. Trˆes delas (“AdjustableStateClass”, “AdjustableStateClass- Node” e “AdjustableStateClassGraph”), estendem as classes do sub-pacote “state class”, adicionando o formalismo disposto na Se¸c˜ao 2.5. A classe “ControllerSynthesizer” imple- menta todos os algoritmos do Cap´ıtulo 3.

4.1.1

Metodologia de desenvolvimento

O desenvolvimento do software levou em considera¸c˜ao algumas conven¸c˜oes ampla- mente aceitas na ind´ustria para desenvolvimento em Python. Muitas das sugest˜oes apre- sentadas nas PEPs 8 (ROSSUM, 2013) e 257 (GOODGER, 2001) foram utilizadas no c´odigo com o intuito de adicionar clareza e legibilidade ao mesmo.

Al´em das conven¸c˜oes utilizadas na escrita, o processo de desenvolvimento se baseou fortemente no uso de testes unit´arios automatizados. Uma adapta¸c˜ao pr´opria do Desen- volvimento Dirigido a Testes (TDD) guiou a processo. Diferente do TDD comum, os chamados “baby steps” foram aumentados. Esta adapta¸c˜ao foi necess´aria j´a que as cara- ter´ısticas do problema tornaram muito custosos testes pequenos demais ou fragmentados demais.

4.2 Materiais e M´etodos 43

A classe “ControllerSynthesizer” foi desenvolvida com 17 casos de teste. Abaixo s˜ao listados estes casos.

Caso Descri¸c˜ao

Caso 1 Uma transi¸c˜ao precedente ajust´avel e uma restri¸c˜ao. (Exemplo 13) Caso 2 Idem caso 1, por´em n˜ao ´e poss´ıvel satisfazer a restri¸c˜ao. (Exemplo 15) Caso 3 Idem caso 1, por´em ajustes diminuem o tamanho do grafo.

Caso 4 N˜ao h´a restri¸c˜oes precedentes ajust´aveis. Caso 5 Transi¸c˜ao alvo da restri¸c˜ao ´e ajust´avel.

Caso 6 Idem caso 5, por´em n˜ao ´e poss´ıvel satisfazer a restri¸c˜ao.

Caso 7 Transi¸c˜ao alvo e transi¸c˜ao n˜ao precedente s˜ao ajust´aveis, n˜ao satisfaz restri¸c˜ao. Caso 8 Transi¸c˜ao alvo e transi¸c˜ao precedente s˜ao ajust´aveis.

Caso 9 Transi¸c˜ao alvo e transi¸c˜ao mais precedente s˜ao ajust´aveis. Caso 10 Idem caso 9, por´em n˜ao ´e poss´ıvel satisfazer a restri¸c˜ao.

Caso 11 2 restri¸c˜oes e 3 transi¸c˜oes precedentes adjust´aveis (uma delas ´e alvo de restri¸c˜ao). Caso 12 Trˆes transi¸c˜oes precedentes ajust´aveis e duas restri¸c˜oes. (Exemplo 14)

Caso 13 Duas transi¸c˜oes precedentes ajust´aveis e uma restri¸c˜ao.

Caso 14 Duas transi¸c˜oes precedentes paralelas ajust´aveis e uma restri¸c˜ao. Caso 15 Duas restri¸c˜oes com uma transi¸c˜ao precedente ajust´avel para cada. Caso 16 Idem caso 12, por´em as restri¸c˜oes n˜ao podem ser atendidas.

Caso 17 Idem caso 14, por´em com uma rede maior. (Exemplo 16)

Tabela 1: Casos de teste da implementa¸c˜ao.

A documenta¸c˜ao do c´odigo foi feita com o uso de docstrings e o framework Sphinx. O Sphinx permite criar a documenta¸c˜ao do c´odigo em HTML de maneira f´acil e r´apida.

Futuramente ´e esperado que este pacote seja disponibilizado no reposit´orio oficial do Python (Python Package Index).

4.2

Materiais e M´etodos

Alguns aspectos ser˜ao observados acerca da execu¸c˜ao dos algoritmos implementados tendo as duas redes desse cap´ıtulo como parˆametro, a saber:

• tempo de execu¸c˜ao em CPU para c´alculo do grafo de classes de estados;

• n´umero de classes de estados que violam as restri¸c˜oes;

• mem´oria utilizada;

• n´umero de ajustes realizados;

• tempo de execu¸c˜ao em CPU para c´alculo do grafo controlado segundo as restri¸c˜oes impostas.

As medi¸c˜oes dos tempos de execu¸c˜ao em CPU ser˜ao realizados utilizando fun¸c˜ao da biblioteca padr˜ao do Python. J´a a quantidade de mem´oria utilizada foi observada com aux´ılio da ferramenta HTOP.

A m´aquina utilizada para rodar os scripts possui as seguintes especifica¸c˜oes:

• Processador: Intel Pentium P6200 2.13GHz (dois n´ucleos) - L1 4 x 32KB - L2 2 x 256KB - L3 3MB compartilhados - Sem suporte a multiprocessamento.

• Mem´oria RAM: 3072MB DDR3 1333MHz.

• Sistema Operacional: openSUSE 13.1 (Bottle) 64 bits - Kernel Linux 3.11.10-29- desktop - GCC 4.8.1.

• Ambiente: XFCE 4.10.

4.3

Aplica¸c˜ao 1

A RPT da Figura 27 modela um sistema que executa 4 tarefas (a, b, c e d). A tarefa a´e modelada pelas transi¸c˜oes t0, t2, t3, t6 e t7; a tarefa b por t1, t4, t5, t8 e t9; a tarefa c por t10, t12, t13, t16 e t17; e a tarefa d por t11, t14, t15, t18 e t19.

Ap´os a execu¸c˜ao da tarefa b, s˜ao iniciadas as tarefas a e d. A tarefa c ´e executada apenas ao t´ermino de a e d. Deste modo, esta rede permite observar o paralelismo entre tarefas, o que torna o sistema mais complexo do que o simples paralelismo entre duas transi¸c˜oes como visto em exemplos anteriores.

Como as tarefas a e b s˜ao executadas em paralelo, um experimento interessante ´e limitar o tempo global m´aximo das transi¸c˜ao t6, t7, t18 e t19 em 24 unidades. Na pr´atica, isso tamb´em acabar´a por limitar o tempo m´aximo da transi¸c˜ao t16 em 37 unidades e t17 em 36 unidades.

4.3.1

Resultados

O tempo de gera¸c˜ao do grafo de classes de estados foi de 1,52 segundo para 1190 classes.

4.3 Aplica¸c˜ao 1 45 t1 [0,5] p17 p1 t4 [2,4] t5 [2,5] p4 p5 t8 [2,6] t9 [4,6] p16 p7 t0 [0,5] p0 t2 [2,5] t3 [3,5] p2 p3 t6 [4,6] t7 [4,8] p6 t11 [1,3] p9 t14 [0,5] t15 [0,5] p12 p13 t18 [3,6] t19 [5,8] p15 t10 [2,3] p8 t12 [0,5] t13 [0,5] p10 p11 t16 [2,5] t17 [1,4] p14 Figura 27: RPT da aplica¸c˜ao 1.

O algoritmo de c´alculo dos ajustes foi executado tendo o limite de 24 unidades de tempo sobre t6, t7, t18 e t19.

Foram encontrados 200 n´os que violam ao menos uma das restri¸c˜oes, onde 56 n´os violam a restri¸c˜ao em t6, 64 violam a restri¸c˜ao em t7, 62 violam em t18 e 62 em t19.

O c´alculo dos ajustes durou 3,82 segundos e realizou 22 ajustes no grafo, reduzindo seu tamanho para 318 n´os (26,72%) do tamanho original.

O espa¸co de mem´oria utilizada pelo script foi de aproximadamente 20MB.

Caso as restri¸c˜oes adotadas sejam de 37 unidades em t16 e t17, o tempo para o c´alculo de 22 ajustes no grafo, onde 148 n´os violam a restri¸c˜ao sobre t16 e outros 148 sobre t17, ´e de 9,54 segundos. O grafo controlado possui tamb´em 318 n´os.

Em ambos os casos os ajustes (ver Tabela 2) s˜ao os mesmos.

Pelos dados coletados, fica claro que as restri¸c˜oes temporais em ambos os casos levam ao mesmo resultado. Entretanto, o tempo necess´ario na segunda situa¸c˜ao ´e quase 3 vezes maior mesmo tendo duas restri¸c˜oes a menos.

N´o Transi¸c˜ao Valor t1 − t4− t8 t0 5 t1 − t5− t9 t0 5 t1 − t4− t8− t0 t11 2 t1 − t5− t9− t0 t11 2 t1 − t4− t8− t0− t11 t15 5 t1 − t5− t9− t0− t11 t15 5 t1 − t4− t8− t0− t11− t14− t3− t18 t7 4 t1 − t4− t8− t0− t11− t14− t18− t3 t7 4 t1 − t4− t8− t0− t11− t15− t3− t19 t7 4 t1 − t4− t8− t0− t11− t15− t19− t3 t7 4 t1 − t5− t9− t0− t11− t14− t3− t18 t7 4 t1 − t5− t9− t0− t11− t14− t18− t3 t7 4 t1 − t5− t9− t0− t11− t15− t3− t19 t7 4 t1 − t5− t9− t0− t11− t15− t19− t3 t7 4 t1 − t4− t8− t0− t11− t14− t2− t18 t6 2 t1 − t4− t8− t0− t11− t14− t18− t2 t6 2 t1 − t4− t8− t0− t11− t15− t2− t19 t6 2 t1 − t4− t8− t0− t11− t15− t19− t2 t6 2 t1 − t5− t9− t0− t11− t14− t2− t18 t6 2 t1 − t5− t9− t0− t11− t14− t18− t2 t6 2 t1 − t5− t9− t0− t11− t15− t2− t19 t6 2 t1 − t5− t9− t0− t11− t15− t19− t2 t6 2

4.4 Aplica¸c˜ao 2 47

4.4

Aplica¸c˜ao 2

A segunda aplica¸c˜ao a ser analisada neste cap´ıtulo ´e baseada na RPT da Figura 28. A rede ´e estruturalmente idˆentica a da Figura 27 utilizada na primeira aplica¸c˜ao, entretanto difere em quais transi¸c˜oes s˜ao ajust´aveis.

Diferentemente da aplica¸c˜ao na Se¸c˜ao 4.3, aqui as tarefas a e d n˜ao possuem transi¸c˜oes ajust´aveis, ou seja, n˜ao ´e poss´ıvel controlar diretamente as tarefas em paralelo. Da tarefa b, as transi¸c˜ao t1, t8 e t9 s˜ao ajust´aveis. Enquanto t12 e t13 na tarefa c.

O intuito dessa aplica¸c˜ao ´e verificar o comportamento do algoritmo quando as transi¸c˜oes ajust´aveis est˜ao pr´oximas da raiz e pr´oximas das folhas. Deste modo ´e poss´ıvel comparar com a aplica¸c˜ao 1, onde n´os ajust´aveis se encontravam na zona intermedi´aria do grafo.

4.4.1

Resultados

O algoritmo de c´alculo dos ajustes foi executado tendo o limite de 37 unidades de tempo sobre t16 e t17.

Foram encontrados 276 n´os que violam ao menos uma das restri¸c˜oes, onde 140 n´os violam a restri¸c˜ao em t16 e 136 violam a restri¸c˜ao em t17.

O c´alculo dos ajustes durou 85,68 segundos e realizou 139 ajustes no grafo, mantendo seu tamanho de 1190 classes de estados.

O aumento significativo do tempo de execu¸c˜ao e da quantidade de ajustes se deu pelo fato da grande maioria dos n´os ajust´aveis estarem pr´oximos `as folhas. Assim, cada ajuste no grafo impactou em sub-´arvores diferentes (136 dos 139 ajustes se deram na mesma altura da ´arvore).

O n´umero de estados se manteve, o que indica que as sequˆencias de disparos n˜ao foram alteradas. Isso pode ser considerado um aspecto negativo se o ajuste ´e realizado com o intuito de estabelecer um comportamento mais previs´ıvel do sistema (menos sequˆencias de disparos facilita a previs˜ao de comportamentos do sistema). Por outro lado, h´a o aspecto positivo de manter o comportamento original da planta, apenas satisfazendo os requisitos temporais.

t1 [0,5] p17 p1 t4 [2,4] t5 [2,5] p4 p5 t8 [2,6] t9 [4,6] p16 p7 t0 [0,5] p0 t2 [2,5] t3 [3,5] p2 p3 t6 [4,6] t7 [4,8] p6 t11 [1,3] p9 t14 [0,5] t15 [0,5] p12 p13 t18 [3,6] t19 [5,8] p15 t10 [2,3] p8 t12 [0,5] t13 [0,5] p10 p11 t16 [2,5] t17 [1,4] p14 Figura 28: RPT da aplica¸c˜ao 2.

4.5 Considera¸c˜oes 49

4.5

Considera¸c˜oes

Os resultados apresentados confirmam que os algoritmos do Cap´ıtulo 3 funcionam de maneira satisfat´oria em redes com espa¸cos maiores em um tempo de execu¸c˜ao tamb´em satisfat´orio e o consumo de mem´oria ´e ´ınfimo para os computadores atuais.

Com rela¸c˜ao `a implementa¸c˜ao em software, a organiza¸c˜ao das classes e pacotes foi ben´efica porque aumentou a coes˜ao e diminuiu o acoplamento. As classes de estados, por exemplo, n˜ao est˜ao presas de modo algum `a classe que calcula o controle. E o isolamento de “TimePetriNet” em rela¸c˜ao `as outras classes permite que a implementa¸c˜ao dos m´etodos de redu¸c˜ao seja inserida sem maiores problemas. Al´em disso, esta organiza¸c˜ao permite que futuramente seja criada uma aplica¸c˜ao gr´afica utilizando este pacote como parte do backend.

O uso de testes automatizados se mostrou bastante salutar n˜ao s´o `a implementa¸c˜ao, mas tamb´em `a concep¸c˜ao dos algoritmos porque permitiu explorar diferentes situa¸c˜oes e verificar como a implementa¸c˜ao deveria se portar. Outro ponto importante ´e garantir a validade da implementa¸c˜ao ainda durante o desenvolvimento, o que deu seguran¸ca ao processo.

Por fim, a documenta¸c˜ao principalmente via docstrings e o uso de conven¸c˜oes de codifica¸c˜ao bem estabelecidas (em conjunto com os testes) ter˜ao papel fundamental em futuras manuten¸c˜oes e usos do software.

5

Conclus˜oes

Neste trabalho foi estudado o problema de limitar o tempo global de disparo de uma transi¸c˜ao de uma RPT. A abordagem utilizada foi partir do pressuposto que algumas transi¸c˜oes da rede podem ter o limite superior de seus intervalos est´aticos reduzidos de acordo com uma determinada sequˆencia de disparos. Para realizar o c´alculo de quais transi¸c˜oes ser˜ao adjustadas, de quanto ser´a este ajuste e em qual sequˆencia de disparos ser´a realizado, o uso das classes de estados com rel´ogio global tem papel fundamental j´a que agrupa os estados de uma RPT e adiciona a informa¸c˜ao temporal desde o in´ıcio da execu¸c˜ao da rede. O algoritmo proposto no Cap´ıtulo 3 explora o grafo de classes de estados tanto para analisar o espa¸co de estados da rede, descobrindo classes que violam as restri¸c˜oes, quanto para calcular os ajustes e verificar, durante o c´alculo, sua validade ao recalcular o grafo de acordo com os ajustes at´e ent˜ao.

Os objetivos foram atingidos dado que o algoritmo n˜ao s´o ´e funcional como abre uma nova perspectiva ao usar transi¸c˜oes ajust´aveis.

Como pontos positivos a destacar, a mecˆanica de funcionamento das RPT s com in- tervalos ajust´aveis modifica pouco o formalismo original das RPT s, mantendo a mesma complexidade da an´alise, e o fato do c´alculo dos ajustes se dar sobre uma ferramenta de an´alise (grafo de classes de estados) valida o c´alculo dos ajustes. Outro ponto foi a possibilidade de utilizar, em um trabalho acadˆemico, metodologias e conven¸c˜oes que vem sendo cada vez mais utilizadas na ind´ustria de software.

Por outro lado, n˜ao foi poss´ıvel implementar a proposta em um ambiente real, o que n˜ao invalida o trabalho, mas exp˜oe a necessidade futura de investigar o seu uso em situa¸c˜oes reais. O fato do seu funcionamento ser restrito a um determinado conjunto de RPT s tamb´em ´e uma limita¸c˜ao a ser trabalhada.

Dados pontos observados, as propostas aqui apresentadas constituem um ponto de partida para que futuramente formalismos advindos deste levem a um ferramental que dˆe suporte ao administrador de um sistema tratar o problema aqui definido de maneira

5.1 Trabalhos Futuros 51

formal.

Abaixo, s˜ao listadas todas as contribui¸c˜oes do trabalho:

• Atualiza¸c˜ao do formalismo de classes de estados com rel´ogio global e uso de ´algebra intervalar. Durante o desenvolvimento do trabalho, o formalismo proposto em (LIMA, 2007) foi melhorado, cobrindo um conjunto maior de RPT s.

• Formaliza¸c˜ao das RPT s com transi¸c˜oes ajust´aveis e classes de estados utilizando-as. Esse formalismo serviu de base para o trabalho, al´em de estar bastante alinhado com recente literatura (BERTHOMIEU et al., 2014).

• Cria¸c˜ao do algoritmo para c´alculo do controle via ajustes nas transi¸c˜oes. O algoritmo trabalha sobre o grafo de classes de estados, recalculando-o a cada ajuste realizado, o que garante, ao final, que o controle encontrado leva a rede a satisfazer as restri¸c˜oes impostas.

• Desenvolvimento de uma biblioteca com a implementa¸c˜ao das propos- tas. Permitiu verificar o funcionamento dos formalismos presentes no trabalho em ambiente simulado. Al´em de constituir base apra uma poss´ıvel aplica¸c˜ao gr´afica.

5.1

Trabalhos Futuros

Dentre as poss´ıveis pesquisas a partir deste trabalho se destacam:

• Desenvolvimento de um ambiente gr´afico para ser integrado `a bilioteca desenvolvida. Possibilitar´a que o software desenvolvido aqui possa ser utilizado tamb´em por usu´arios que n˜ao dominam programa¸c˜ao.

• Generaliza¸c˜ao do problema tratado. Trabalhar o problema do disparo de uma transi¸c˜ao a cada λ unidades de tempo, como em (WANG et al., 2011), e que a solu¸c˜ao

tamb´em se aplique `as redes c´ıclicas.

• Investigar o impacto do uso dos m´etodos de redu¸c˜ao. Os m´etodos de redu¸c˜ao (Apˆendice A) s˜ao uma ferramenta bastante ´util quando o espa¸co de estados ´e muito grande. Entretanto, eles introduzem uma s´erie de novos problemas como transi¸c˜oes em que o intervalo est´atico n˜ao ´e completamente ajust´avel e a possibilidade (ou n˜ao) de ajuste de uma transi¸c˜ao resultante da fus˜ao entre transi¸c˜oes apralelas onde uma ´e ajust´avel e outra n˜ao. Al´em disso, deve-se observar se a redu¸c˜ao impedir´a

ou n˜ao que o controle seja encontrado em uma situa¸c˜ao onde isto seria poss´ıvel na rede original.

• Melhorar a performance do algoritmo. Apesar do algoritmo ter apresentado um bom tempo de execu¸c˜ao nas aplica¸c˜oes no Cap´ıtulo 4, melhorias na sua perfor- mance s˜ao sempre salutares dado que o algoritmo tamb´em deve tratar redes maiores e mais complexas. Entretanto, ´e necess´ario observar se tal melhoria n˜ao adicionar´a complexidade exagerada `a proposta. Uma ideia muito complexa e que pouco adici- onar´a em termos de performance pode inviabilizar caracter´ısticas fundamentais do software, como sua capacidade de manunten¸c˜ao.

• Aplicar trabalho em ambiente real. Este ´e o grande passo a ser dado futura- mente, j´a que ele dar´a orienta¸c˜ao pr´atica ao formalismo aqui apresentado.

53

Referˆencias

BERTHELOT, G. Transformations and decompositions of nets. In: Advances in Petri nets 1986, part I on Petri nets: central models and their properties. [S.l.: s.n.], 1987. p. 359–376.

BERTHOMIEU, B.; DAL-ZILIO, S.; FRONC, L.; VERNADAT, F. Time petri nets with dynamic firing dates: Semantics and applications. In: Formal Modeling and Analysis of Timed Systems - 12th International Conference Proceedings. Floren¸ca, It´alia: [s.n.], 2014. p. 85–99.

BERTHOMIEU, B.; DIAZ, M. Modeling and verification of time dependent systems using Petri nets. IEEE Transactions on Software Engineering, v. 17, n. 3, p. 259–273, Mar¸co 1991.

BERTHOMIEU, B.; MENASCHE, M. A state enumeration approach for analyzing time petri nets. In: 3rd European Workshop on Applications and Theory of Petri Nets. [S.l.: s.n.], 1982.

BOLZANNI, ´A.; LIMA, E. M´etodo de redu¸c˜ao de rede de petri temporal via matriz de intervalos. In: Congresso Brasileiro de Autom´atica 2014. Belo Horizonte, Minas Gerais, Brasil: [s.n.], 2014.

BONHOMME, P. Scheduling and control of real-time systems based on a token player approach. Discrete Event Dynamic Systems, Springer US, v. 23, n. 2, p. 197–209, 2013. ISSN 0924-6703.

BONHOMME, P.; BERTHELOT, G.; AYGALINC, P.; CALVEZ, S. Hierarchical control of time petri nets by means of transformations. In: 2002 IEEE International Conference on Systems, Man and Cybernetics. [S.l.: s.n.], 2002. v. 4.

BRANDIN, B.; WONHAM, W. M. Modular supervisory control of timed discrete-event systems. In: Conference on Decision and Control. [S.l.: s.n.], 1993.

BUY, U.; DARABI, H. Sidestepping Verification Complexity with Supervisory Control. 2003.

BUY, U.; DARABI, H.; LEHENE, M.; VENEPALLY, V. Supervisory control of time petri nets using net unfolding. In: Proceedings of the 29th Annual International Conference on Computer Software and Applications Conference. Washington, DC, USA: IEEE Computer Society, 2005. (COMPSAC-W’05), p. 97–100. ISBN 0-7695-2413-3. CASSANDRAS, C. G.; LAFORTUNE, S. Introduction to discrete event systems. New York: Springer, 2008. ISBN 0-387-33332-0.

FREITAS, R.; BARRETO, R.; MACIEL, P. Analysis of real-time scheduling problems by single step and maximal step semantics for time petri net models. In: 2013 III Brazilian Symposium on Computing Systems Engineering (SBESC). [S.l.: s.n.], 2013. p. 107–112.

GODEFROID, P. Partial Order Methods for the Verification of Concurrent Systems. Tese (Doutorado) — Universite de Liege, 1996.

GOODGER, D. PEP 257 – Docstring Conventions. 2001. https://www.python.org/ dev/peps/pep-0257/. Acessado em: 24-06-2015.

JUAN, E. Y.; MURATA, T. A technique of state space search based on unfolding. Kluwer Academic Publishers, n. 9, p. 1–22, 1992.

LILIUS, J. Efficient state space search for time petri nets. In: Electronic Notes in Theoretical Computer Science. [S.l.]: Springer-Verlag, 1998.

LIMA, E. An´alise e Aplica¸c˜oes em Redes de Petri Temporais: Uma Abordagem via ´

Algebra Intervalar. Tese (Doutorado) — Universidade T´ecnologica Federal do Paran´a, Curitiba, Paran´a, Brasil, 2007.

LIPSCHULTZ, S.; LIPSON, M. Matem´atica Discreta. [S.l.]: Bookman, 2004.

MERLIN, P. A Study of Recoverability of Computer Systems. Tese (Doutorado) — University of California IRVINE, 1974.

MERLIN, P.; FARBER, D. Recoverability of communication protocols - implications of a theoretical study. IEEE Transactions on Communications, p. 1036–1043, Setembro 1976.

MONTANO, L.; IZQUIERDO, F. J. G.; VILLARROEL, J. L. Using the time petri net formalism for specification, validation, and code generation in robot-control applications. International Journal of Robotic Research, v. 19, n. 1, p. 59–76, 2000.

MURATA, T. Petri nets: Properties, analysis and applications. In: Proceedings of the IEEE. [S.l.: s.n.], 1989. p. 541–580.

ROSSUM, G. van. PEP 8 – Style Guide for Python Code. 2013. https://www.python. org/dev/peps/pep-0008/. Acessado em: 24-06-2015.

SATHAYE, A.; KROGH, B. Supervisor synthesis for real-time discrete event systems. Discrete Event Dynamic Systems, Kluwer Academic Publishers, Hingham, Massachussets, Estados Unidos, v. 8, n. 1, p. 5–35, Mar¸co 1998. ISSN 0924-6703.

SHEN, W.; WANG, L.; HAO, Q. Agent-based distributed manufacturing process planning and scheduling: a state-of-the-art survey. Systems, Man, and Cybernetics, Part C: Applications and Reviews, IEEE Transactions on, v. 36, n. 4, p. 563–577, July 2006. ISSN 1094-6977.

SLOAN, R. H.; BUY, U. Reduction rules for time Petri nets. Acta Informatica, v. 33, n. 7, p. 687–706, 1996.

Referˆencias 55

WANG, H.; GRIGORE, L.; BUY, U.; DARABI, H. Enforcing transition deadlines in time petri nets. In: Proceedings of 12th IEEE International Conference on Emerging Technologies and Factory Automation. Patras, Gr´ecia: [s.n.], 2007. p. 604–611.

WANG, H.; GRIGORE, L.; BUY, U.; LEHENE, M.; DARABI, H. Enforcing periodic transition deadlines in time petri nets with net unfoldings. IEEE Transactions on Systems, Man, and Cybernetics, Part A, v. 41, n. 3, p. 522–539, 2011.

WANG, J.; DENG, Y. Reachability analysis of real-time systems using time Petri nets. In: IEEE Transactions on Systems, Man and Cybernetics - Part B. [S.l.: s.n.], 2000. v. 30, n. 5.

XU, D.; HE, X.; DENG, Y. Compositional schedulability analysis of real-time systems using time Petri nets. IEEE Transactions in Software Engineering, v. 28, n. 10, p. 984–996, 2002.

AP ˆENDICE A -- Redu¸c˜ao de uma RPT

A s´ıntese de um controlador pode exigir grande explora¸c˜ao do espa¸co de estados da rede de Petri. Todavia, este espa¸co de estados pode ser intrat´avel do ponto de vista computacional. Apesar do uso de abstra¸c˜oes como as classes de estados uma abordagem

Documentos relacionados