br.uerj.petrinetanalyzer.engine
Class ImplSimulator

java.lang.Object
  extended by br.uerj.petrinetanalyzer.engine.ImplSimulator
All Implemented Interfaces:
IntfEngineConstants, IntfSimulator

public class ImplSimulator
extends java.lang.Object
implements IntfSimulator, IntfEngineConstants

Implementa a engine do funcionamento da simulação.

Author:
Felipe Lino
Data: 19/01/2007
Atualização: 24/03/2007

Field Summary
private  int[] arrMarking
          Array de marcações de Lugar.
private  boolean[] arrTransFire
          Array informando se a transição está ou não habilitada para disparo.
private  ImplPetriNetBase pn
          Rede de Petri a ser simulada.
 
Fields inherited from interface br.uerj.petrinetanalyzer.common.interfaces.IntfEngineConstants
ERROR_CODE, STATE_DUPLICADO, STATE_FRONTEIRA, STATE_INTERIOR, STATE_TERMINAL, TOKEN_INFINITO
 
Constructor Summary
ImplSimulator(ImplPetriNetBase pn)
          Construtor que recebe como parâmetro a Rede de Petri a ser simulada
 
Method Summary
 void disparaTransicao(int posicao)
          Dispara transição indicada pela posição.
 int[] getMarcacoes()
          Retorna array com as marcações dos lugares, após o disparo de uma transição
 boolean[] getTransicoesDisponiveis()
          Uma transição está habilitada se, todos os Lugares de Entrada da Transição possuirem fichas maior ou igual ao peso do arco, que liga até a transição.
 void setState(int[] arrMarking, boolean[] arrTransFire)
          Seta o estado da simulação para algum específico.
 boolean temTransicaoDisponivel()
          Verifica se existe alguma transição disponível para ser disparada.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

pn

private ImplPetriNetBase pn
Rede de Petri a ser simulada.


arrMarking

private int[] arrMarking
Array de marcações de Lugar.


arrTransFire

private boolean[] arrTransFire
Array informando se a transição está ou não habilitada para disparo.

Constructor Detail

ImplSimulator

public ImplSimulator(ImplPetriNetBase pn)
Construtor que recebe como parâmetro a Rede de Petri a ser simulada

Parameters:
pn - Rede de Petri.
Method Detail

getTransicoesDisponiveis

public boolean[] getTransicoesDisponiveis()
Uma transição está habilitada se, todos os Lugares de Entrada da Transição possuirem fichas maior ou igual ao peso do arco, que liga até a transição.
 Algoritmo:
 Para toda Transicao Faça
                Transição.habilitada = true
 Fim Para;
 Para todo Arco de entrada
                Se Arco.Lugar.fichas >= arco.peso E Arco.transicao.habilitada = true Então
                        Arco.transicao está habilitada.
                Senão
                        Arco.transicao está desabilitada.
                Fim Se;
 Fim Para;
 

Specified by:
getTransicoesDisponiveis in interface IntfSimulator
Returns:
Array boleano informando se a transição está ou não habilitada.

getMarcacoes

public int[] getMarcacoes()
Retorna array com as marcações dos lugares, após o disparo de uma transição

Specified by:
getMarcacoes in interface IntfSimulator
Returns:
Array com as marcações dos Lugares.

disparaTransicao

public void disparaTransicao(int posicao)
Dispara transição indicada pela posição.
 Algoritmo:
 Para todo Lugar de Entrada da Transição Faça
                Lugar.fichas = Lugar.fichas - peso;
 Fim Para; 
 
 Para todo Lugar de Saída da Transição Faça
                Lugar.fichas = Lugar.fichas + peso; 
 Fim Para;
 

Specified by:
disparaTransicao in interface IntfSimulator
Parameters:
posicao -

temTransicaoDisponivel

public boolean temTransicaoDisponivel()
Verifica se existe alguma transição disponível para ser disparada.

Specified by:
temTransicaoDisponivel in interface IntfSimulator
Returns:
Retorna true caso, exista alguma transição disponível. Retorna false caso contrário.

setState

public void setState(int[] arrMarking,
                     boolean[] arrTransFire)
Seta o estado da simulação para algum específico.

Parameters:
arrMarking - Array de Marcações dos Lugares no estado desejado.
arrTransFire - Array informando se a Transição está ou não disponível no estado desejado.