Buscar

Trabalho de PE - Teoria das Filas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIVERSIDADE DO ESTADO DO RIO DE JANEIRO
 INSTITUTO DE MATEMÁTICA E ESTATÍSTICA
Profª.: André Luiz Diniz
Disciplina: Processos Estocásticos I
Teoria das filas
Rio de Janeiro
2013
Introdução
Este trabalho tem o objetivo de simular a evolução de um sistema de filas. Para isso, são gerados aleatoriamente valores de tempos de chegada e atendimento, denominados por x1 e x2, conforme uma distribuição exponencial.
Para a execução da simulação foi criada uma planilha desenvolvida no excel e código através da ferramenta Visual Basic for Applications (VBA). Com essa automatização, o usuário pode determinar o número de iterações que deseja fazer de modo a obter melhores conclusões da realidade.
Este trabalho foi desenvolvido com base na seguinte problemática:
Considerando um sistema com as seguintes características:
• Número de atendentes: 1;
• Taxa de chegada (λ): 9 usuários por minuto;
• Taxa de atendimento (μ): 10 usuários por minuto
Calcular o tempo médio de espera na fila para os clientes desse sistema.
Calcular a probabilidade de, em um determinado instante de tempo qualquer, não haver ninguém na fila.
Código do VBA
Como já dito, para a execução da simulação foi implementado em VBA uma lógica de modo a gerar automaticamente os valores de tempo conforme quantidade informada pelo usuário. O códido criado é o seguinte:
Sub teoria_filas()
 observacoes = InputBox("Informe o número de observações", "Mensagem", "1000")
 iteracoes = InputBox("Informe o número de iterações", "Mensagem", "10000")
 
 Application.DisplayAlerts = False
 Application.ScreenUpdating = False
 
 'Limpa a planilha e copia a fórmula que gera x para o tamanho de observações informado
 Sheets("Análises").Select
 Range("G3:I1048576").Select
 Selection.ClearContents
 Range("H2:I2").Select
 Selection.Copy
 Range("H3:I" & observacoes + 1).Select
 ActiveSheet.Paste
 Application.CutCopyMode = False
 
 Range("G3") = Range("G2") + 1
 Range("G2:G3").Select
 Selection.AutoFill Destination:=Range("G2:G" & observacoes + 1)
 
 Sheets("iterações").Select
 Range("A2:B1048576").Select
 Selection.Clear
 
 'Guarda o valor da média dos valores gerados e simula outro até atingir o número de iterações informado
 For i = 1 To iteracoes
 Range("A" & i + 1).Select
 ActiveCell.FormulaR1C1 = "=AVERAGE(Análises!C[7])"
 Range("B" & i + 1).Select
 ActiveCell.FormulaR1C1 = "=AVERAGE(Análises!C[7])"
 Range("A" & i + 1 & ":B" & i + 1).Select
 Selection.Copy
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 :=False, Transpose:=False
 Calculate
 Next
 
 Sheets("Análises").Select
 Range("B17").Value = "Para uma amostra de " & observacoes & " observações"
 Range("B27").Value = "Após " & iteracoes & " iterações"
 Calculate
 MsgBox ("Término da simulação!!")
End Sub
Como gerar valores de tempos?
Para que a simulação fosse realizada, foram gerados x’s que reresentam os tempos de chegada e atendimento, modelados por uma distribuição exponencial. Foi utilizado, portanto, o cálculo do inverso da distribuição acumulada da exponencial, que é o seguinte:
Então:
Portanto, no Excel:
Resultados da simulação
Podemos perceber que ao simularmos observações ou iterações em números cada vez maiores, os resultados irão se aproximar dos valores teóricos, que são os resultados obtidos através da aplicação nas fórmulas dos parâmetros dados.
Item a) 
No caso do cálculo do tempo médio de espera na fila para os clientes desse sistema, a fórmula a ser aplicada seria a seguinte:
Realizando simulação, com um númerro de observações igual a 1.000.000, encontramos: 
Item b)
No caso, do cálculo da probabilidade de, em um determinado instante de tempo qualquer, não haver ninguém na fila, a fórmula a ser aplicada seria:
Por simulação, com um númerro de observações igual a 1.000.000, encontramos: 
Análise por meio de gráficos
Através da planilha que elaboramos, é possível perceber que a tendência é de os valores observados, obtidos através de x’s gerados na simulação se aproximarão dos teóricos. 
Para entender melhor, vamos analisar por gráficos de dispersão os parâmetros e medidas de desempenho encontrados por meio de 100, 1.000 e 10.000 simulações, respectivamente, tendo cada simulação uma quantidade de valores observados descritos abaixo. 
- Resultados com número de observações igual a 100:
 
	
	
- Resultados com número de observações igual a 1000:
 
- Resultados com número de observações igual a 10000:
Analisando os gráficos e a linha de tendência é possível perceber que os valores tendem para:
λ = 9; μ = 10; ρ = 0,9; Wq= 0,9 ; P0 = 0,1; P1 = 0,09
Esses são exatamente os valores teóricos, que podem ser encontrados aplicando apenas os parâmetros dados no enunciado nas fórmulas de interesse.
Código vba para gerar os gráficos
Sub montar_graficos()
 
 observacoes = InputBox("Informe o tamanho da amostra de tempos a ser gerada por simulação", "Mensagem", "1000")
 plot = InputBox("Informe o número de resultados que deseja que sejam plotados no gráfico", "Mensagem", "1000")
 Application.DisplayAlerts = False
 Application.ScreenUpdating = False
 'Adiciona planilha que informará os resultados dos gráfico
 Sheets("Gráficos").Select
 Range("A1:F1").Select
 Selection.Copy
 Sheets.Add after:=Sheets(Sheets.Count)
 ActiveSheet.Paste
 Application.CutCopyMode = False
 Sheets("Gráficos").Select
 ActiveWindow.SelectedSheets.Delete
 Sheets(Sheets.Count).Name = "Gráficos"
 'Limpa a planilha e copia a fórmula que gera x para o tamanho de observações informado
 Sheets("Análises").Select
 Range("G3:I1048576").Select
 Selection.ClearContents
 Range("H2:I2").Select
 Selection.Copy
 Range("H3:I" & observacoes + 1).Select
 ActiveSheet.Paste
 Application.CutCopyMode = False
 
 Range("G3") = Range("G2") + 1
 Range("G2:G3").Select
 Selection.AutoFill Destination:=Range("G2:G" & observacoes + 1)
 
 'Guarda o valor da média dos valores gerados e simula outro até atingir o número de observações informado
 Sheets("Gráficos").Select
 For i = 1 To plot
 Range("A" & i + 1).Select
 ActiveCell.FormulaR1C1 = "=Análises!R20C5"
 Range("B" & i + 1).Select
 ActiveCell.FormulaR1C1 = "=Análises!R21C5"
 Range("C" & i + 1).Select
 ActiveCell.FormulaR1C1 = "=Análises!R22C5"
 Range("D" & i + 1).Select
 ActiveCell.FormulaR1C1 = "=Análises!R23C5"
 Range("E" & i + 1).Select
 ActiveCell.FormulaR1C1 = "=Análises!R24C5"
 Range("F" & i + 1).Select
 ActiveCell.FormulaR1C1 = "=Análises!R25C5"
 Range("A" & i + 1 & ":F" & i + 1).Select
 Selection.Copy
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 :=False, Transpose:=False
 Calculate
 Next
 
 'Gráficos
 Columns("A:A").Select
 ActiveSheet.Shapes.AddChart.Select
 ActiveChart.ChartType = xlXYScatter
 ActiveChart.SetSourceData Source:=Range("Gráficos!$A:$A")
 ActiveChart.SeriesCollection(1).Select
 ActiveChart.SeriesCollection(1).Trendlines.Add
 ActiveChart.SeriesCollection(1).Trendlines(1).Select
 With Selection.Format.Line
 .Visible = msoTrue
 .ForeColor.ObjectThemeColor = msoThemeColorAccent1
 .ForeColor.TintAndShade = 0
 .ForeColor.Brightness = 0
 End With
 With Selection.Format.Line
 .Visible = msoTrue
 .ForeColor.RGB = RGB(255, 0, 0)
 .Transparency = 0
 End With
 With Selection.Format.Line
 .Visible = msoTrue
 .Weight = 1
 End With
 
 Columns("B:B").Select
 ActiveSheet.Shapes.AddChart.Select
 ActiveChart.ChartType = xlXYScatter
 ActiveChart.SetSourceData Source:=Range("Gráficos!$B:$B")
 ActiveChart.SeriesCollection(1).Select
 ActiveChart.SeriesCollection(1).Trendlines.AddActiveChart.SeriesCollection(1).Trendlines(1).Select
 With Selection.Format.Line
 .Visible = msoTrue
 .ForeColor.ObjectThemeColor = msoThemeColorAccent1
 .ForeColor.TintAndShade = 0
 .ForeColor.Brightness = 0
 End With
 With Selection.Format.Line
 .Visible = msoTrue
 .ForeColor.RGB = RGB(255, 0, 0)
 .Transparency = 0
 End With
 With Selection.Format.Line
 .Visible = msoTrue
 .Weight = 1
 End With
 
 Columns("C:C").Select
 ActiveSheet.Shapes.AddChart.Select
 ActiveChart.ChartType = xlXYScatter
 ActiveChart.SetSourceData Source:=Range("Gráficos!$C:$C")
 ActiveChart.SeriesCollection(1).Select
 ActiveChart.SeriesCollection(1).Trendlines.Add
 ActiveChart.SeriesCollection(1).Trendlines(1).Select
 With Selection.Format.Line
 .Visible = msoTrue
 .ForeColor.ObjectThemeColor = msoThemeColorAccent1
 .ForeColor.TintAndShade = 0
 .ForeColor.Brightness = 0
 End With
 With Selection.Format.Line
 .Visible = msoTrue
 .ForeColor.RGB = RGB(255, 0, 0)
 .Transparency = 0
 End With
 With Selection.Format.Line
 .Visible = msoTrue
 .Weight = 1
 End With
 
 Columns("D:D").Select
 ActiveSheet.Shapes.AddChart.Select
 ActiveChart.ChartType = xlXYScatter
 ActiveChart.SetSourceData Source:=Range("Gráficos!$D:$D")
 ActiveChart.SeriesCollection(1).Select
 ActiveChart.SeriesCollection(1).Trendlines.Add
 ActiveChart.SeriesCollection(1).Trendlines(1).Select
 With Selection.Format.Line
 .Visible = msoTrue
 .ForeColor.ObjectThemeColor = msoThemeColorAccent1
 .ForeColor.TintAndShade = 0
 .ForeColor.Brightness = 0
 End With
 With Selection.Format.Line
 .Visible = msoTrue
 .ForeColor.RGB = RGB(255, 0, 0)
 .Transparency = 0
 End With
 With Selection.Format.Line
 .Visible = msoTrue
 .Weight = 1
 End With
 
 Columns("E:E").Select
 ActiveSheet.Shapes.AddChart.Select
 ActiveChart.ChartType = xlXYScatter
 ActiveChart.SetSourceData Source:=Range("Gráficos!$E:$E")
 ActiveChart.SeriesCollection(1).Select
 ActiveChart.SeriesCollection(1).Trendlines.Add
 ActiveChart.SeriesCollection(1).Trendlines(1).Select
 With Selection.Format.Line
 .Visible = msoTrue
 .ForeColor.ObjectThemeColor = msoThemeColorAccent1
 .ForeColor.TintAndShade = 0
 .ForeColor.Brightness = 0
 End With
 With Selection.Format.Line
 .Visible = msoTrue
 .ForeColor.RGB = RGB(255, 0, 0)
 .Transparency = 0
 End With
 With Selection.Format.Line
 .Visible = msoTrue
 .Weight = 1
 End With
 
 Columns("F:F").Select
 ActiveSheet.Shapes.AddChart.Select
 ActiveChart.ChartType = xlXYScatter
 ActiveChart.SetSourceData Source:=Range("Gráficos!$F:$F")
 ActiveChart.SeriesCollection(1).Select
 ActiveChart.SeriesCollection(1).Trendlines.Add
 ActiveChart.SeriesCollection(1).Trendlines(1).Select
 With Selection.Format.Line
 .Visible = msoTrue
 .ForeColor.ObjectThemeColor = msoThemeColorAccent1
 .ForeColor.TintAndShade = 0
 .ForeColor.Brightness = 0
 End With
 With Selection.Format.Line
 .Visible = msoTrue
 .ForeColor.RGB = RGB(255, 0, 0)
 .Transparency = 0
 End With
 With Selection.Format.Line
 .Visible = msoTrue
 .Weight = 1
 End With
 
 MsgBox ("Pronto!!")
End Sub

Outros materiais