Professional Documents
Culture Documents
98770
11011EMT023
Sumrio
1.
Objetivos....................................................................................................................3
2.
Introduo..................................................................................................................4
3.
Fundamentos Tericos................................................................................................5
4.
Materiais Utilizados...................................................................................................6
5.
Procedimento Experimental.......................................................................................6
6.
Concluses.................................................................................................................7
1. Objetivos
Para o segundo mdulo prtico da disciplina de Simulao de Sistemas
Automatizados, foi trabalhado o conceito de modelos computacionais. Dois mtodos
distintos de criao de modelos foram aplicados para um mesmo problema de simulao
de fila e atendimento: utilizao de simulador e programao em linguagem de alto
nvel. Uma comparao feita entre os mtodos, sendo, porm, o simulador mais
explorado.
2. Introduo
acabados e taxas de utilizao dos operrios, por exemplo. Com essas informaes,
possvel tomar decises sobre como aumentar a eficincia do processo.
3. Fundamentos Tericos
4. Materiais Utilizados
Os materiais utilizados para esse mdulo prtico foram:
5. Procedimento Experimental
5.1.
Matlab
status_corte;
status_parafuso;
status_pino.
Durante o processo produtivo, a chegada de insumos a um dos postos de
atividades leva duas aes possveis, dependendo do estado do posto. Caso ele esteja
desocupado, o insumo entra no posto, a atividade iniciada e o posto fica bloqueado
durante esse meio tempo. J caso esteja ocupado, o insumo deve entrar em uma fila para
esperar at que o posto se desocupe para o atende. Essas filas so:
cilindros produzidos pelo posto de corte possuam 67% de serem encaminhados para o
posto de Parafusos e 33% de irem para o de Pinos. Isso foi conseguido gerando um
nmero randmico (distribuio uniforme) entre 0 e 1. Caso o valor fosse menor que
0,67, os 100 cilindros iriam para o posto de parafuso e, caso contrrio, iriam para o
posto de pinos.
Para registrar a quantidades de produtos acabados e os tempos de atendimento
totais durante o tempo de simulao, foram usadas as variveis:
corte;
soma_2: somatria dos tempos de todos os atendimentos efetuados pelo posto de
parafusos;
soma_3: somatria dos tempos de todos os atendimentos efetuados pelo posto de
pinos.
Essas so as variveis principais do cdigo elaborado. O algoritmo de simulao
tempo_p_chegada_mp
<=
tempo_p_corte
&&
tempo_p_chegada_mp
<=
...
Assim, avalia-se qual evento deve ocorrer primeiro e avana-se a simulao para
aquele instante. Comandos anlogos so utilizados para os outros eventos. Dentro do
cdigo do evento, a atividade esperada pela entidade realizada, ocorrendo, em geral, a
retirada de elementos de uma fila para outra ou para outro posto diretamente. Aps isso,
Resultados
Os resultados das simulaes realizadas pelo cdigo Matlab so resumidas na
tabela 1. Como citado anteriormente, o tempo simulado corresponde a um ms de
trabalho com 27 dias teis de 8 horas, sendo a simulao repetida 10 vezes.
Tabela 1: Sntese dos resultados da simulao via algoritmo codificado em Matlab.
Mdia
Nmero de
atendimento
Taxa de
utilizao
Nmero de
elementos
nas filas
Nmero de
elementos
produzidos
Cilindros
Parafuso
Desvio-
5155
padro
75
Mximo
Mnimo
5290
5064
s
Pinos
Cilindros
Parafuso
3224
3248
3212
1709
79,66
54
1,04
1826
81,53
1642
78,60
s
Pinos
Cilindros
Parafuso
99,66
0,31
100,00
99,19
34,34
3
0,31
4
36,06
11
33,24
0
22120
4334
28700
15500
10
515510
32
7525
100
529000
0
506400
322440
930
324800
321200
170940
5446
182600
164200
s
Pinos
Cilindros
Parafuso
s
Pinos
6. Concluses
10
Anexo A
Algoritmo utilizado para resoluo do problema estudado.
11
12
close all
clear all
atendimento = zeros(10,3);
tx_ut= zeros(10,3);
n_fila = zeros(10,3);
soma_elementos = zeros(10,3);
for cont = 1:100
t_max=27*8*60; %tempo mximo de simulao
status_corte=0;
status_parafuso=0;
status_pino=0;
relogio=0;
tempo_p_chegada_mp=0;
tempo_p_corte=t_max+1;
tempo_p_parafuso=t_max+1;
tempo_p_pino=t_max+1;
n_fila_1=0;
n_fila_2=0;
n_fila_3=0;
soma_cil=0;
soma_par=0;
soma_pin=0;
soma_1=0;
soma_2=0;
soma_3=0;
atendimento_1=0;
atendimento_2=0;
atendimento_3=0;
while relogio <= t_max
if tempo_p_chegada_mp <= tempo_p_corte && tempo_p_chegada_mp
<= tempo_p_parafuso && tempo_p_chegada_mp <= tempo_p_pino %Trata
Eventos de Chegada
relogio=tempo_p_chegada_mp;
relogio);
13
teste = rand();
if(teste <= 2/3)
if status_parafuso == 0 % se atendente disponivel
%fprintf('Novo parafuso = %4.2f\n', relogio);
status_parafuso=1;
soma_par=soma_par+100;
t_parafuso=normrnd(4,1); % Nmero aleatorio da
distribuio normal com mdia 2
soma_2=soma_2+t_parafuso;
atendimento_2=atendimento_2+1;
tempo_p_parafuso=tempo_p_corte+t_parafuso;
else
n_fila_2=n_fila_2+100;
%fprintf('Fila de parafusos = %d\n',
n_fila_2);
end
else
else
n_fila_3=n_fila_3+100;
%fprintf('Fila de pinos = %d\n', n_fila_3);
end
end
else
end
n_fila_1=n_fila_1+1;
%fprintf('Estoque de cilindros = %d\n', n_fila_1);
14
atendimento_1=atendimento_1+1;
tempo_p_corte=relogio+t_corte;
soma_cil=soma_cil+100;
teste = rand();
if(teste <= 2/3)
if status_parafuso == 0 % se atendente disponivel
%fprintf('Novo parafuso = %4.2f\n', relogio);
status_parafuso=1;
soma_par=soma_par+100;
t_parafuso=normrnd(4,1); % Nmero aleatorio da
distribuio normal com mdia 2
soma_2=soma_2+t_parafuso;
atendimento_2=atendimento_2+1;
tempo_p_parafuso=relogio+t_parafuso;
else
n_fila_2=n_fila_2+100;
%fprintf('Fila de parafusos = %d\n',
n_fila_2);
end
else
n_fila_3=n_fila_3+100;
%fprintf('Fila de pinos = %d\n', n_fila_3);
end
else
status_corte=0;
tempo_p_corte=t_max+1;
end
elseif tempo_p_parafuso < tempo_p_chegada_mp &&
tempo_p_parafuso < tempo_p_corte && tempo_p_parafuso <= tempo_p_pino
%Trata Eventos de Chegada
relogio=tempo_p_parafuso;
if n_fila_2 > 0;
%fprintf('Novo parafuso = %4.2f\n',relogio)
n_fila_2=n_fila_2-100;
%fprintf('Fila de parafusos = %d\n', n_fila_2);
15
soma_par=soma_par+100;
t_parafuso=normrnd(4,1); % Nmero aleatorio da
distribuio normal com mdia 2
soma_2=soma_2+t_parafuso;
atendimento_2=atendimento_2+1;
tempo_p_parafuso=relogio+t_parafuso;
else
status_parafuso=0;
tempo_p_parafuso=t_max+1;
end
elseif tempo_p_pino < tempo_p_chegada_mp && tempo_p_pino <
tempo_p_corte && tempo_p_pino < tempo_p_parafuso %Trata Eventos de
Chegada
relogio=tempo_p_pino;
if n_fila_3 > 0;
%fprintf('Novo pino = %4.2f\n',relogio)
soma_pin=soma_pin+100;
n_fila_3=n_fila_3-100;
%fprintf('Fila de pinos = %d\n', n_fila_3);
t_pino=normrnd(2.6,0.8);
distribuio normal com mdia 2
% Nmero aleatorio da
soma_3=soma_3+t_pino;
atendimento_3=atendimento_3+1;
tempo_p_pino=relogio+t_pino;
else
status_pino=0;
tempo_p_pino=t_max+1;
end
end
end
tx_utilizacao_1=100*(soma_1/t_max); % Tx. Utilizao Atendente
tx_utilizacao_2=100*(soma_2/t_max); % Tx. Utilizao Atendente
tx_utilizacao_3=100*(soma_3/t_max); % Tx. Utilizao Atendente
fprintf('\n\n#########################################################
##############\n');
fprintf('\n\nNmero de Atendimentos cilindros = %1.0f\n',
atendimento_1);
fprintf('Nmero de Atendimentos parafusos = %1.0f\n',
atendimento_2);
fprintf('Nmero de Atendimentos pinos = %1.0f\n', atendimento_3);
16
fprintf('\n\n#########################################################
##############\n');
fprintf('\n\n#########################################################
##############\n');
fprintf('\nMdia de Nmero de Atendimentos: cilindros = %1.0f;
parafusos = %1.0f; pinos = %1.0f\n', mean(atendimento));
fprintf('Mdia de Taxa de Utilizao do Atendente: cilindros = %4.2f;
parafusos = %4.2f; pinos = %4.2f\n', mean(tx_ut))
fprintf('Mdia de Nmero de elementos na Fila: cilindros = %1.0f;
parafusos = %1.0f; pinos = %1.0f\n', mean(n_fila))
fprintf('Mdia de Nmero de elementos produzidos: cilindros = %4.2f;
parafusos = %4.2f; pinos = %4.2f\n', mean(soma_elementos))
fprintf('\n\nDesvio de Nmero de Atendimentos: cilindros = %1.0f;
parafusos = %1.0f; pinos = %1.0f\n', std(atendimento));
fprintf('Desvio de Taxa de Utilizao do Atendente: cilindros = %4.2f;
parafusos = %4.2f; pinos = %4.2f\n', std(tx_ut))
fprintf('Desvio de Nmero de elementos na Fila: cilindros = %1.0f;
parafusos = %1.0f; pinos = %1.0f\n', std(n_fila))
fprintf('Desvio de Nmero de elementos produzidos: cilindros = %4.2f;
parafusos = %4.2f; pinos = %4.2f\n', std(soma_elementos))
fprintf('\n\nMximo de Nmero de Atendimentos: cilindros = %1.0f;
parafusos = %1.0f; pinos = %1.0f\n', max(atendimento));
fprintf('Mximo de Taxa de Utilizao do Atendente: cilindros = %4.2f;
parafusos = %4.2f; pinos = %4.2f\n', max(tx_ut))
fprintf('Mximo de Nmero de elementos na Fila: cilindros = %1.0f;
parafusos = %1.0f; pinos = %1.0f\n', max(n_fila))
17
18