Prof. Lorí Viali, Dr. viali@pucrs.br http://www.pucrs.br/famat/viali/ Dentre a grande variedade de sistemas que podem ser modelados e para os quais a simulação pode ser aplicada com proveito, uma classe mostra-se particularmente de interesse. É a classe dos sistemas construídos pelo homem (artificiais), que interagem com o ambiente (abertos), que se alteram com o tempo (dinâmicos), onde existem mudanças que não podem ser previstas (estocásticos) e onde as alterações ocorrem em pontos isolados do tempo (discretos). Caracterizado o sistema, duas das principais decisões que precisam ser tomadas é como se darão as modelagens das estruturas estática e dinâmica do sistema. 1
Estrutura Estática É necessário identificar as componentes principais do sistema, definindo sua estrutura lógica e decidir como será feito o manuseio do tempo: se através do enfoque do processo, da atividade ou do evento. A modelagem da estrutura estática consiste em identificar os componentes principais, através da definição das entidades e suas inter-relações, eventos (atividades ou processos), atributos, filas (e suas disciplinas), etc. Quase todas as linguagens de simulação utilizam alguma forma gráfica (diagramas) para representar o sistema a ser modelado, tanto para auxiliar no processo de construção do modelo quanto na sua implementação. O manuseio do tempo Uma das vantagens da simulação é que a velocidade na qual o experimento ocorre pode ser controlada. Pode-se simular semanas e meses ou mesmo anos em poucos minutos de tempo computacional. A essência da simulação é que as mudanças de estado do sistema são modeladas através do tempo. Assim, é importante considerar como o fluxo do tempo pode ser gerenciado. 2
Na vida real, o tempo flui numa taxa uniforme. Num computador digital não é possível ter variáveis mudando continuamente. Existe um tamanho mínimo de incremento de qualquer variável num computador digital. O incremento constante é o caminho mais simples de controlar o fluxo do tempo. Esta abordagem é conhecida como "tempo fatiado" (time slicing) [CARRIE, 1992 e PIDD, 1997]. Ela consiste em atualizar e examinar o modelo em intervalos regulares. Para uma fatia de tempo dt, o modelo é atualizado para o tempo t + dt, para mudanças ocorridas no intervalo (t, t + dt). Um problema óbvio com esta abordagem é que a decisão sobre o tamanho do incremento deve ser tomada antes da simulação ser desenvolvida. Isto poderá acarretar descompassos. Pode-se ter fatias muito largas, que podem impossibilitar certas atividades, ou fatias muito pequenas, que vão gerar ineficiência que é refletida em tempos computacionais longos e por checagens freqüentes e nem sempre necessárias. A diferença entre manusear o tempo em incrementos fixos ou variáveis é ilustrada pelo exemplo abaixo, devido a PIDD, 1997. O incremento variável consiste em atualizar o modelo somente na ocorrência dos eventos. 3
Exemplo Uma fábrica é constituída pelas máquinas A e B. O tempo para processar um lote de peças, depende do tipo de máquina e do tamanho do lote, da seguinte forma: Tempo na máquina A = (Tamanho do lote/50 + 1) dias, Tempo na máquina B = (Tamanho do lote/100 + 3) dias. A fábrica somente inicia o processamento de um lote, que deve ser processado nas duas máquinas, quando todo o lote foi processado numa máquina. Isto é, nenhum lote pode iniciar seu processamento em uma máquina até que todo o lote anterior tenha sido processado nesta máquina. Os lotes chegam à fábrica de acordo com as datas da tabela. Lote número Tamanho Dia da chegada 1 200 1 2 400 8 3 100 14 4 200 18 Os tempos de processamento de cada lote em cada máquina são: Lote número Máquina A Máquina B 1 5 5 2 9 7 3 3 4 4 5 5 4
Simulando o funcionamento da fábrica através de incrementos constantes de um dia, os quatro lotes serão processados em 32 dias. A tabela 1 mostra a simulação a incrementos constantes dos lotes. Dia Trabalhos esperando pela Trabalhos em progresso para Máquina A Máquina B Máquina A Máquina B 1 - - 1-2 - - 1-3 - - 1-4 - - 1-5 - - 1-6 - - - 1 7 - - - 1 8 - - 2 1 9 - - 2 1 10 - - 2 1 11 - - 2-12 - - 2-13 - - 2-14 3-2 - 15 3-2 - 16 3-2 - 17 - - 3 2 18 4-3 2 19 4-3 2 20-3 4 2 21-3 4 2 22-3 4 2 23-3 4 2 24 - - 4 3 25-4 - 3 26-4 - 3 27-4 - 3 28 - - - 4 29 - - - 4 30 - - - 4 31 - - - 4 Conforme a tabela 1, no primeiro dia o lote 1 chega e é imediatamente processado na máquina A. Nos dias 2, 3, 4 e 5 não há alterações, pois a máquina A, ainda está processando o lote 1 somente no sexto dia a máquina B inicia o processamento do primeiro lote. 32 - - - 4 No sétimo dia também não ocorrem alterações e no oitavo, temos a chegada do lote 2 e a máquina A inicia o seu processamento e assim por diante. Vê-se que esta abordagem além de tediosa é uma forma ineficiente de simular o sistema suposto acima, uma vez que o modelo estará sendo examinado a cada fatia do tempo (1 dia) e em 32/36 = 88,9% dos dias nenhuma alteração acontecerá. 5
Em virtude destes períodos de tempo estáticos é que normalmente é preferível utilizar simulação a incrementos variáveis. Para elaborar a simulação a incrementos variáveis, considera-se os seguintes eventos: Chegada da tarefa; Máquina A inicia o trabalho; Máquina A termina o trabalho; Máquina B começa o trabalho; Máquina B termina o trabalho. Cada um destes eventos pode ocorrer no máximo quatro vezes durante a simulação, uma para cada tarefa. De fato, como a tabela 4 mostra, alguns coincidem e o modelo necessita somente ser atualizado em 16 ocasiões. Enquanto a tabela 1, mostra as inevitáveis 32 atualizações da abordagem tempo em incrementos constantes. O método de incrementos variáveis, neste caso, concentra-se no progresso de cada lote, quando eles passam através da fábrica. Tabela 2 - Simulação a incrementos variáveis Máquina A Máquina B Desta forma a técnica do Tarefa número Data de chegada Inicio Fim Inicio Fim 1 1 5 6 10 2 8 8 16 17 23 3 14 17 19 24 27 4 18 20 24 28 32 incremento variável possui duas vantagens sobre a abordagem tempo fatiado. Fonte: Pidd, 1988 6
A primeira, é que o tamanho do incremento de tempo ajusta-se automaticamente para períodos de alta ou baixa atividade, evitando desta forma checagens dispendiosas e/ou desnecessárias dos estados do modelo. A segunda, é deixar claro a ocorrência de eventos significativos na simulação. A desvantagem é a necessidade de manter mais informação para controlar a simulação. A simulação a incrementos variáveis pode ser realizada através de várias formas, no entanto, todas possuem um denominador comum que é produzir programas com estrutura hierárquica de três níveis (FISHMAN, 1973) que são os seguintes: Nível 1 - Programa de controle ou executivo; Nível 2 - Operações; Nível 3 - Rotinas detalhadas. No primeiro nível, está o programa de controle ou executivo. Ele é o responsável por: 7
Referências: (a) programar eventos futuros, (b) executar eventos em uma seqüência de simulação própria e (c) atualizar a variável relógio (clock) que controla o tempo. CARRIE, Allan. Simulation of Manufacturing Systems. Great Britain: John Wiley & Sons, 1992, 417 p. CHEN, Shin-Ken. The Design, Evaluation and Test of Flexible Manufacturing System: A hybrid Approach of Optimization and Phisical emulation. USA: Case Western Reserve University, May 1987. Ph.D. Thesis. FISHMAN, G. S. Concepts and Methods in Discrete Event Digital Simulation. New York: Willey, 1973. HILLIER, F. S., LIEBERMAN, G. J. Introduction to Operations Research. New York (NY): McGraw Hill, 2002. Seventh Edition. 805 p. NANCE, Richard E., TECH, Virginia. The Time and State Relationships in Simulation Modeling. Communications of the ACM. USA, v. 24, n. 4, p. 173-79, Apr. 1981. PIDD, M. Computer Simulation in Management Science. New York: John Wiley & Sons, 1997, 5nd ed., 307 p. SOBOL, I. O método de Monte Carlo. Editora Mir. Moscou. 1983, 64 p. TOCHER, K. D. The Art of Simulation. London: Universities Press, 1963. 184 p. 8