Giter Club home page Giter Club logo

petri-network-engine's Introduction

Trabalho Rede de Petri

Contribuidores

Daniel Lopes Ferreira
Daniel Lopes Ferreira

Gisela Miranda Difini
Gisela Miranda Difini

Vítor Kehl Matter
Vítor Kehl Matter

Maxwell Frank Barbosa
Maxwell Frank Barbosa

Informações gerais:

  • lugar = círculo

  • conexao = linha

  • transicao = retângulo

  • token = marca (marcação)

Métodos da rede

Criação

void criaLugar(id: number)

Lugar getLugar(id: number)

void removeLugar(id: number)

void criaTransicao(id: number)

Transicao getTransicao(id: number)

void removeTransicao(id: number)

void criaConexao(lugar: Lugar, transicao: Transicao, peso: number, ehEntrada: boolean, ehConexaoInibidora: boolean, ehConexaoReset: boolean)

void removeConexao(lugar: Lugar, transicao: Transicao)

Lugar getLugarDeConexao(conexao: Conexao)

Transicao getTransicaoDeConexao(conexao: Conexao)

Conexao[] getConexoesEntrada(idTransicao: number)

Conexao[] getConexoesSaida(idTransicao: number)

Alterando/inspecionando a rede

void insereTokenEmLugar(qtdTokens: number, lugar: Lugar)

void removeTokenDeLugar(qtdTokens: number, lugar: Lugar)

void clearLugar(lugar: Lugar) // remove todos tokens do lugar

Token[] getTokens(lugar: Lugar)

number quantosTokens(idLugar: number)

boolean getStatusTransicao (id: number) // retona True se Transição habilitada e False caso contrário

void setTransicaoInativa(id: number)

void setTransicaoAtiva(id: number)

boolean isTransicaoAtiva(id: number)

Simulando/executando/conversando com o ambiente externo

void executaCiclo() // varre toda a rede, identificando todas transições habilitadas e executando cada uma destas transições habilitadas; a movimentação de tokens e o disparo de transições podem acarretar a chamada
de métodos de callback para a camada de visualização/interação.

boolean insereCallbackTokenEntrandoLugar(lugar: Lugar, ponteiroPara Método/Função, qtdTokens: number) // método da aplicação é invocado (enviando a quantidade de tokens como argumento) se um token é inserido em um lugar;

boolean insereCallbackTokenSaindoLugar(lugar: Lugar, ponteiroPara Método/Função,  qtdTokens: number) // método da aplicação é invocado (enviando a quantidade de tokens como argumento) se token é removido de um lugar;

boolean insereCallbackTransicao(transicao: Transicao, ponteiroPara Método/Função) // método da aplicação é invocado se transição é disparada.

Executando a Rede

Lendo arquivo pflow

Rodar o comando:

npm run test nomeArquivo.pflow

Arquivos de teste devem estar na pasta /test/files

Utilizando CLI

Rodar o comando:

npm run start

Perguntas iniciais:

  • Quantos lugares: 3

  • Quantas transições: 2

  • Quais são os lugares de entrada de T1? 1

  • Quais são os lugares de saída de T1? 3

  • Quais são os lugares de entrada de T2? 2

  • Quais são os lugares de saída de T2? 3

  • Quantas marcas em L1 ? 4

  • Quantas marcas em L2 ? 2

  • Quantas marcas em L3 ? 0

  • Qual o peso do arco de L1 para T1 ? 1

  • Qual o peso do arco de L3 para T1 ? 2

  • Qual o peso do arco de L2 para T2 ? 4

  • Qual o peso do arco de L3 para T2 ? 2

Opções do menu:

  1. Executar ciclo
  2. Exibir lugares
  3. Exibir transições
  4. Exibir rede
  5. Sair

Comandos:

Exibir lugares:

┌──────────┬───┬───┬───┐
│ Lugar    │ 1 │ 2 │ 3 │
├──────────┼───┼───┼───┤
│ Marcação │ 4 │ 2 │ 0 │
└──────────┴───┴───┴───┘

Exibir transições:

┌──────────────┬───┬───┐
│ Transição    │ 1 │ 2 │
├──────────────┼───┼───┤
│ Habilitada ? │ S │ N │
└──────────────┴───┴───┘

Exibir rede:

┌───────────────┬────┬────┬────┬────┬────┐
│ Núm. do ciclo │ L1 │ L2 │ L3 │ T1 │ T2 │
├───────────────┼────┼────┼────┼────┼────┤
│ 0 (inicial)   │ 4  │ 2  │ 0  │ S  │ N  │
└───────────────┴────┴────┴────┴────┴────┘

Após execucação do cliclo 1:

┌───────────────┬────┬────┬────┬────┬────┐
│ Núm. do ciclo │ L1 │ L2 │ L3 │ T1 │ T2 │
├───────────────┼────┼────┼────┼────┼────┤
│ 0 (inicial)   │ 4  │ 2  │ 0  │ S  │ N  │
├───────────────┼────┼────┼────┼────┼────┤
│ 1             │ 3  │ 2  │ 2  │ S  │ N  │
└───────────────┴────┴────┴────┴────┴────┘

Após execucação do cliclo 2:

┌───────────────┬────┬────┬────┬────┬────┐
│ Núm. do ciclo │ L1 │ L2 │ L3 │ T1 │ T2 │
├───────────────┼────┼────┼────┼────┼────┤
│ 0 (inicial)   │ 4  │ 2  │ 0  │ S  │ N  │
├───────────────┼────┼────┼────┼────┼────┤
│ 1             │ 3  │ 2  │ 2  │ S  │ N  │
├───────────────┼────┼────┼────┼────┼────┤
│ 2             │ 2  │ 2  │ 4  │ S  │ N  │
└───────────────┴────┴────┴────┴────┴────┘

Após execucação do cliclo 3:

┌───────────────┬────┬────┬────┬────┬────┐
│ Núm. do ciclo │ L1 │ L2 │ L3 │ T1 │ T2 │
├───────────────┼────┼────┼────┼────┼────┤
│ 0 (inicial)   │ 4  │ 2  │ 0  │ S  │ N  │
├───────────────┼────┼────┼────┼────┼────┤
│ 1             │ 3  │ 2  │ 2  │ S  │ N  │
├───────────────┼────┼────┼────┼────┼────┤
│ 2             │ 2  │ 2  │ 4  │ S  │ N  │
├───────────────┼────┼────┼────┼────┼────┤
│ 3             │ 1  │ 2  │ 6  │ S  │ N  │
└───────────────┴────┴────┴────┴────┴────┘

Após execucação do cliclo 4:

┌───────────────┬────┬────┬────┬────┬────┐
│ Núm. do ciclo │ L1 │ L2 │ L3 │ T1 │ T2 │
├───────────────┼────┼────┼────┼────┼────┤
│ 0 (inicial)   │ 4  │ 2  │ 0  │ S  │ N  │
├───────────────┼────┼────┼────┼────┼────┤
│ 1             │ 3  │ 2  │ 2  │ S  │ N  │
├───────────────┼────┼────┼────┼────┼────┤
│ 2             │ 2  │ 2  │ 4  │ S  │ N  │
├───────────────┼────┼────┼────┼────┼────┤
│ 3             │ 1  │ 2  │ 6  │ S  │ N  │
├───────────────┼────┼────┼────┼────┼────┤
│ 4             │ 0  │ 2  │ 8  │ N  │ N  │
└───────────────┴────┴────┴────┴────┴────┘

petri-network-engine's People

Contributors

daniellferreira avatar giselamd avatar maxwellfb avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.