Estruturas de Dados - T.332

Projeto de Implementação Nº 1

Simulação de um Chão de Fábrica

utilizando Tipos Abstratos de Dados

1. Descrição do Problema

•	Uma fábrica vai modernizar o setor de empacotamento de produtos. Ela precisa decidir quais e quantas máquinas de empacotar vai adquririr. 
•	O objetivo da fábrica é o de amortizar o preço de aquisição das máquinas o mais rápido possível. Para isso vai direcionar todo o lucro para a amortização das máquinas.
•	Os produtos a serem empacotados são de 3 diferentes tipos e chegam misturados ao galpão de empacotamento através de uma única esteira rolante, de onde são distribuídos para empacotar.
•	Para decidir quantas e quais máquinas adquirir, a fábrica fará uma simulação do empacotamento.

2. Descrição dos Produtos da Empresa

A empresa trabalha com produtos congelados que chegam ao empacotamento em lotes.
•	Cada lote deve ser empacotado em um pacote. Há três tipos de lotes: coxinhas, filé de peixe e almôndegas, distribuídos uniformemente.
•	As máquinas levam tempos diferentes para empacotar cada tipo de lote.
•	O lucro que a empresa tem é calculado como o preço de atacado de um lote menos o custo de produção de um produto (onde estão incluídos todos os fatores até o empacotamento)  e o custo operacional da máquina para empacotar o produto.
•	Os produtos são perecíveis e devem estar (cada lote) empacotado em um tempo máximo após chegar (do contrário será jogado fora).

Produto   %Produto  Custo Produção  Preço Atacado  Tempo Deterioração
coxinhas      50		  0,80	              1,45		    50 s.
peixe	          30		  0,70	              2,00		    20 s.
almondega   20		  0,40		      0,80		    90 s.
3. Descrição Geral das Máquinas
•	Há vários modelos de máquina empacotadora no mercado. Algumas empacotam somente um tipo de produto, outras empacotam vários tipos diferentes. Os preços, o consumo de energia e as velocidades de empacotamento são diferentes, de acordo com o modelo.
•	Todas as máquinas possuem uma fila de entrada onde vários lotes de produtos podem ser colocados, que a máquina processa um a um.
•	O tempo que uma máquina leva para processar um produto é uma variável aleatória distribuída uniformemente em +/- 10% do tempo dado no manual da máquina.
•	Todas as máquinas consomem energia, mesmo quando estão ociosas. O kilowatt-hora custa R$ 1,00. Uma hora possi 3.600 segundos.
•	Um produto que deteriorou na fila não pode ser empacotado e representa um prejuízo que será somado ao custo operacional.
3.1 Descrição das Máquinas
Há no mercado seis tipos diferentes de máquina empacotadora que a nossa empresa poderia utilizar:

Modelo	Produtos	Tempo +/- 10%	Consumo	Preço	
FishPak	Filé de Peixe	10 s	20 KWh	100.000	
FrangoPak	Coxinhas	16 s	20 KWh	100.000	
AllPak	Coxinhas	18 s	22 KWh	150.000	
	File de Peixe	12 s			
	Almôndegas	12 s			
Plastific	Todos	25 s	35 KWh	 60.000	
EnSacAll	Todos	30 s	40 KWh	 50.000	
Universal	Todos	35 s	35 KWh	 30.000	
Observe que o tempo de empacotamento sempre variará aleatoriamente no espaço +/- 10% do tempo de empacotamento da máquina para um produto dado na tabela. O tempo de empacotamento da máquina AllPak difere dependendo do tipo de produto.

4. Funcionamento da Fábrica
•	Os lotes de produtos chegam na esteira para ser empacotados em intervalos de 2s. A probabilidade de um lote ser coxinha, filé de peixe ou almôndega é a dada na tabela de produtos. As probabilidades devem ser consideradas como independentes.
•	Logo que chega, um lote é colocado na fila de uma máquina que pode empacotá-lo. Deve ser escolhida a menor fila das máquinas-candidatas.
•	O tempo que um produto leva para ser levado da esteira até a fila de uma máquina é irrelevante e não será considerado. 
•	O tempo de deterioração de um produto passa a ser calculado a partir do momento em que ele é colocado no fim na fila de entrada da máquina (=tempo de chegada). 
•	O tempo que uma máquina vai levar para empacotar o produto é calculado no momento em que ele é retirado da fila. A máquina somente estará livre para empacotar outro produto após este tempo. 
•	Verificamos se o produto deteriorou ou se pode ser empacotado no momento em que ele chega no início da fila e a máquina vai empacotá-lo. Se o produto estiver deteriorado, a máquina o descarta e verifica o próximo da fila.
•	Se um produto é descartado, seu custo de produção (= prejuízo) é somado ao custo operacional da máquina.
•	Outros detalhes, como o custo com falhas da máquina não serão considerados.
5. Cálculo da Amortização
•	A empresa quer pagar as máquinas o mais rápido possivel. Para isto todo o lucro será depositado em uma conta para pagar o valor de aquisição das máquinas.
•	Consideramos que a fábrica trabalha ininterruptamente, sem pausas.
•	O cálculo do lucro/hora do galpão de empacotamento é realizado da seguinte forma: soma do valor de venda de todos os produtos empacotados com sucesso menos o custo de todos os produtos produzidos (inclusive os jogados for) e o custo opeacional das máquinas.
•	A simulação deve parar quando foi realizado lucro suficiente para pagar todas as máquinas adquiridas.

6. Análise de Requisitos do Programa
•	O programa deverá ser capaz de permitir que o usuário escolha quantas máquinas de que tipos usará para a simulação. P.ex.: 1 máquina AllPak e 2 máquinas FishPak.
•	A simulação terminará quando houver sido juntado dinheiro suficiente para pagar as máquinas ou quando houverem se passado 2 anos.
•	O programa sempre deverá informar ao usuário as seguintes estatísticas:
1.	Custo operacional/hora total de cada máquina
2.	Taxa de lucro/hora de cada máquina
3.	A quantidade de produtos jogada fora por cada máquina e seu custo total.
4.	Tempo total para pagar o custo de aquisição das máquinas escolhidas para a simulação.

7. Modelagem da Fábrica
•	Um lote de produtos é um TAD simples que possui como informação: o tipo de lote. Custo de valor de revenda podem ser modelados como variáveis globais.
•	Uma máquina é um TAD que possui: uma variável indicando quando o próximo produto estará empacotado, uma fila de produtos, um custo operacional total, um lucro total, um contador de produtos processados e outro de produtos jogados fora e um prejuízo total por produtos jogados fora.
•	Um nodo de fila de produtos de uma máquina é um TAD que possui um produto, o tempo de entrada deste produto na fila (= hora de fabricação).
•	O setor de empacotamento é um TAD lista circular de máquinas, percorrida constantemente para ver qual é a próxima máquina onde um produto vai ficar pronto.
•	Além disso, o setor de empacotamento possui uma variável relógio interno, que funciona em segundos. Há duas formas de se implementá-lo: orientado a eventos ou orientado a segundos.