Modelagem e Simulação
Material 6
Linguagem GPSS (parte 1)
Prof. Simão Sirineo Toscani
Introdução
„
„
„
„
„
„
„
A primeira versão do GPSS foi lançada em 1961, pela IBM.
Originalmente, GPSS significava Gordon’s Programmable Simulation
System, em homenagem a Geoffrey Gordon, seu criador. Mais tarde,
passou a significar General Purpose Simulation System.
GPSS sempre foi a principal linguagem de simulação da IBM. Como
tal, um grande número de aplicações foram desenvolvidas nestes
seus quase 50 anos de existência.
A idéia principal que guiou o projeto do GPSS foi a de criar uma
ferramenta que pudesse ser usada por não especialistas. Isso
motivou a representação dos modelos de forma gráfica. Um modelo
GPSS é um diagrama de blocos, por onde fluem transações, que são
as entidades temporárias do sistema.
Atualmente, as versões disponíveis mais conhecidas são GPPS/H,
GPSS World e WebGPSS.
Muitas ferramentas de simulação (por exemplo, a linguagem Arena)
foram fortemente influenciadas pelo GPSS.
Como veremos, a linguagem não é orientada a eventos nem a
processos. Na verdade, GPSS lembra uma linguagem tipo data-flow.
Blocos GPSS
„
„
„
„
„
Na linguagem GPSS, um modelo é descrito
através de um diagrama de blocos.
Existe um conjunto de blocos à disposição do
programador, os quais podem ser
interconectados para representar um sistema
(i.é, para criar um modelo).
A figura ao lado mostra os desenhos dos
principais blocos, no ambiente WebGPSS.
Um dos blocos, chamado GENERATE, é usado
para gerar transações
As transações são as entidades temporárias do
modelo.
Um exemplo
ASUS
STORAGE
2
; declaração de um
; depósito (recurso)
; com duas unidades
GENERATE
360,40
QUEUE
CUA,1
ENTER
ASUS,1
DEPART
CUA,1
ADVANCE
100,15
LEAVE
ASUS,1
TERMINATE
1
Uma visão inicial
„
„
„
„
„
„
As transações fluem pelo diagrama, passando de bloco em bloco.
Quando uma transação entra num bloco, a ação correspondente ao
bloco é executada. Cada tipo de bloco desempenha uma função
específica, que atua sobre as entidades do modelo.
A maioria das entidades de um modelo não precisam ser declaradas
(são pré-definidas).
As informações de saída (estatísticas da execução) são geradas
automaticamente pelo GPSS.
Cada transação possui (carrega consigo) um conjunto de atributos,
que podem ser testados e alterados durante a vida da transação.
Quando uma transação entra num bloco, os seus atributos podem
ser usados para moldar a ação a ser executada pelo bloco.
Entidades do GPSS
„
Entidades básicas
‰
‰
„
Equipamentos
‰
‰
‰
„
Recursos ou “facilidades” (facilities)
Depósitos (storages)
Chaves lógicas (logical switches)
Estatísticas
‰
‰
„
Blocos (que formam o diagrama)
Transações (que fluem pelo diagrama)
Filas
Tabelas
Outras entidades
‰
‰
‰
Savevalues
Variáveis (expressões)
Funções
Tipos de blocos
„
Existem blocos para:
‰
Criar e destruir transações (GENERATE e TERMINATE)
‰
Alterar parâmetros de transações (ASSIGN)
‰
Desviar o fluxo de transações (TEST, TRANSFER, ...)
‰
Fazer uma transação esperar por um período de tempo (ADVANCE)
‰
Requisitar/liberar recurso (SEIZE/RELEASE)
‰
Requisitar/liberar um depósito (ENTER/LEAVE)
‰
Coletar estatísticas (QUEUE, TABULATE, ...)
‰
Duplicar transações (SPLIT)
‰
Encadear transações à filas (LINK)
‰
E muitos outros
Transações
„
„
„
„
„
„
„
„
A transação é a única forma de representar uma entidade temporária
que se movimenta no sistema (p.ex., pessoa em um supermercado,
navio em um porto, mensagem em uma rede, etc.).
As transações são criadas pelo bloco GENERATE e se movimentam de
bloco em bloco até serem bloqueadas (retidas).
Um mesmo bloco pode bloquear (reter) diversas transações.
Novas cópias de uma transação podem ser geradas pelo bloco SPLIT.
Uma transação sai (é removida) do sistema quando entra num bloco
TERMINATE.
O bloco TERMINATE possui um operando que é usado para decrementar
o contador de FIM_DE_SIMULAÇÃO. Quando o contador atinge zero, a
simulação termina.
O valor inicial do contador de FIM_DE_SIMULAÇÃO é estabelecido no
comando START, que coloca o modelo em funcionamento.
Os resultados da simulação são mostrados automaticamente, no final
da execução.
Barbearia do João em GPSS
* Barbearia do João com 3 cadeiras na sala de espera
*
CAD
STORAGE
3
; 3 cadeiras na sala de espera
GENERATE
10,2
TEST LE
S$CAD,2,DESISTE
ENTER
CAD,1
SEIZE
BARB
LEAVE
CAD,1
ADVANCE
12,2
RELEASE
BARB
DESISTE TERMINATE
1
O resultado da simulação (para um comando START 100)
START TIME
0.000
END TIME
1044.298
NAME
BARB
CAD
DESISTE
LABEL
FACILITY
BARB
ENTRIES
87
STORAGE
CAD
FACILITIES
1
STORAGES
1
VALUE
10001.000
10000.000
8.000
LOC
1
2
3
4
5
6
7
8
DESISTE
BLOCKS
8
BLOCK TYPE
GENERATE
TEST
ENTER
SEIZE
LEAVE
ADVANCE
RELEASE
TERMINATE
UTIL.
0.989
ENTRY COUNT CURRENT COUNT RETRY
103
0
0
103
0
0
89
2
0
87
1
0
86
0
0
86
0
0
86
0
0
100
0
0
AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
11.873 1
101
0
0
0
2
CAP. REM. MIN. MAX.
3
0
0
3
ENTRIES AVL.
89
1
AVE.C. UTIL. RETRY DELAY
2.345 0.782
0
0
CEC XN
101
PRI
0
M1
1017.901
ASSEM
101
CURRENT
4
NEXT
5
PARAMETER
VALUE
FEC XN
104
PRI
0
BDT
1046.630
ASSEM
104
CURRENT
0
NEXT
1
PARAMETER
VALUE
Atributos de uma transação
„
„
Cada transação possui atributos que podem ser manipulados no
bloco onde a transação se encontra.
Os atributos de uma transação são:
‰
‰
‰
‰
‰
„
„
número da transação (identificação única)
número do grupo de montagem (assembly set)
tempo de criação (mark time)
prioridade
parâmetros
Com exceção dos parâmetros, todos os atributos são inicializados
automaticamente quando a transação é criada pelo bloco GENERATE.
Sobre os parâmetros:
‰
‰
Eles servem para armazenar informações arbitrárias sobre a transação
(altura, peso, cor, próxima operação, tempo da operação, etc.)
Podem ser manipulados apenas pelo bloco no qual a transação se
encontra no momento (bloco onde a transação “está executando”). Não
podem ser manipulados por outras transações.
Blocos que alteram os atributos de uma transação
„
Os blocos que manipulam os atributos de uma transação são:
‰
ASSIGN (atribui um valor a um parâmetro)
‰
MARK (coloca o tempo atual em um parâmetro)
‰
PRIORITY (altera a prioridade da transação)
‰
„
SPLIT (cria cópias da transação; a transação original e as cópias vão
constituir um grupo de montagem).
Observações:
‰
‰
‰
‰
Mark time é o tempo em que a transação foi criada.
O tempo de trânsito da transação é o tempo atual (este tempo é
referido por C1) menos o mark time da transação (este tempo é
referido por M1).
A prioridade zero é a menor (mais baixa ou menos urgente)
O grupo de montagem (assembly set) é manipulado pelos blocos
ASSEMBLE, GATHER e MATCH.
Os atributos numéricos do sistema (SNAs)
„
„
Os SNAs (System Numeric Attributes) podem ser vistos como
“variáveis implícitas” do sistema, que mantêm informações sobre o
estado do modelo em execução.
Exemplos de SNAs:
C1
tempo atual da simulação (relógio da simulação)
M1 tempo de trânsito da transação (tempo que transcorreu desde que ela foi criada)
Si
ocupação atual do depósito i (número de unidades que estão ocupadas)
FNi valor da i-ésima função
Qi
tamanho corrente da fila i
QAi tamanho médio da fila i
QMi tamanho máximo da fila i
RNi um valor aleatório gerado pelo i-ésimo gerador
Wi
número de transações esperando no i-ésimo bloco do programa
Cadeias do GPSS e algoritmo de execução
„
As duas principais cadeias (listas encadeadas) do sistema são as
seguintes:
‰
‰
„
Cadeia dos Eventos Correntes (Current Event Chain – CEC), que contém
as transações a serem movimentadas no tempo atual;
Cadeia dos Eventos Futuros (Future Event Chain – FEC), que contém as
transações a serem movimentadas no tempo futuro (ordenadas pelo
tempo em que devem ser movimentadas).
Algoritmo de execução:
1.
Atualiza o relógio para o tempo da primeira transação da FEC
2.
Transfere todas as transações com esse tempo da FEC para a CEC
3.
Para cada transação da CEC, repete os dois passos a seguir até que
a transação fique retida:
1. Movimenta a transação para o próximo bloco
2. Executa a ação correspondente ao bloco
4.
Volta para o passo 1
GPSS World Student Version
„
„
„
É a versão gratuita (para estudantes) do GPSS World.
O instalador do sistema já está disponibilizado no material da
disciplina, no ambiente Moodle.
Junto com o sistema de simulação são “instalados” dois manuais
(em inglês):
‰
‰
„
Tutorial
Manual de referência
Após a instalação do sistema, os passos para construir um modelo e
“executá-lo” são os seguintes:
1. File → New → Model (abre uma janela de edição para a digitação de
um modelo).
Após a digitação do modelo, prossegue-se no passo 2 (menu Command)
2. Command → Create Simulation (o programa é compilado e o resultado é
mostrado na janela JOURNAL);
3. Command → START (inializa o contador de fim de simulação e coloca o
modelo em execução).
A ser continuado
(to be continued)
Download

Modelagem e Simulação Material 6 Linguagem - aulas