Baixe o app para aproveitar ainda mais
Prévia do material em texto
Resumo – PO (Pesquisa Operacional) Aula 1. Tema 01 – Histórico e conceitos da Pesquisa Operacional PO = ‘’ É o estudo e desenvolvimento de métodos analiticos e complicados, usa-se bastante matematica, precisa fazer um estudo profundo de um problema. ‘’ As aplicações da PO podem ser em áreas como: Energia; Prospecção e exploração de petróleo; Gerência de operações; Logística; Finanças; Marketing; Planejamento e gestão de sistemas de serviços; Segurança da informação; Administração industrial; Gestão da qualidade e análise locacional. Entre as características da PO, estão o uso de métodos matemáticos e equipes multidisciplinares, o emprego de modelos etc. . Modelagem - Criar um modelo personalizado. desvantagem: Ira gastar dinheiro criando vantagem: Algo único, difícil de alguém copiar Tema 02 – Fases de estudo de Pesquisa Operacional “fases de estudo de pesquisa operacional”, - Estudo do problema; Levantamento e tratamento de dados; Definição da metodologia a ser empregada; Análise dos resultados obtidos. Se essas fases forem executadas, a solução do problema de PO será mais bem desenvolvida. Tema 03 – Modelo ‘’O objetivo do modelo em PO é basicamente representar um fenômeno físico, uma realidade existente. Se o modelo for simplificado em demasia, pode não representar a realidade; se for complexo em demasia, pode não ser exequível.’’ Modelo - Sistema pronto . Modelo - Ser imitado (Está pronto, vou copiar) - Usa-se para situações de baixa complexidade. TIPOS DE MODELOS: •Modelos conceituais: relacionam de maneira sequencial e lógica as interações e as atividades existentes no processo em estudo, de modo a possibilitar o estudo do processo e alcançar os objetivos definidos. É o tipo de modelo recomendado para as etapas iniciais do processo de modelagem. • Modelos físicos: são modelos reduzidos em escala, tais como modelos de aeronaves, maquetes de edificações etc. Não são empregados em PO. • Modelos heurísticos: são construídos quando a complexidade do problema é de tal ordem que a utilização de relações matemáticas é inviável ou extremamente dispendiosa. Esses modelos baseiam-se em regras empíricas ou intuitivas que, após se obter uma solução para o problema, permitem avançar para uma solução mais aprimorada. • Modelos matemáticos: necessitam que as informações e as variáveis relevantes do problema sejam quantificáveis. Consequentemente, as grandezas são representadas por variáveis de decisão, e se usam expressões/funções matemáticas para descrever as relações entre elas e a operação do sistema. • Modelos simbólicos, diagramáticos ou icônicos: usam símbolos gráficos para representar um sistema de maneira estática (o seu comportamento no tempo não é considerado), por exemplo: fluxograma de processo, mapas rodoviários, estações de metrô, estações de ônibus, organograma organizacional de empresa e outros. As suas limitações são não apresentar elementos quantitativos e não permitir apresentar muitos detalhes. O seu uso é mais adequado para documentar projetos e servir ferramenta de comunicação (visual). A priori, não são empregados em PO. Tema 04 – Modelagem ‘’A modelagem está relacionada à criação de modelos específicos, os quais são destinados a solucionar problemas complexos. O processo de modelagem proporciona diversas vantagens, entre as quais, a necessidade de os gestores explicitarem seus objetivos. Na bibliografia de PO, é possível encontrar diversas metodologias de modelagem. Consequentemente, faz-se necessário conhecê-las.’’ Modelagem - Algo que temos que criar “modelagem” possui algumas desvantagens, como o fato de requerer tempo para o desenvolvimento do modelo (prazos maiores), possuir maior custo em relação ao emprego de “modelo” etc vantagem: Algo único, difícil de alguém copiar Tema 05 – Programação Linear A Programação Linear (PL) foi desenvolvida conceitualmente após a Segunda Guerra Mundial para resolver problemas de logística militar. O marco de sua evolução foi o desenvolvimento do “método simplex” por Dantzig. O emprego do “método simplex” na economia proporcionou um prêmio Nobel ao russo Kantorovich. A PL pode ser empregada na logística, na designação de equipes, em problemas de mistura etc. Basicamente a PL consiste em um modelo matemático que emprega somente funções lineares e tem uma “forma–padrão”, na qual estão designadas a função objetivo e as restrições, sendo estas últimas inequações. O objetivo da PL é otimizar o emprego de recursos escassos. Obs. Linear = Traço continuo, reto Programação linear: de forma objetiva, Hillier e Lieberman (2010) informam que, para descrever um problema, a programação linear faz uso de um modelo matemático e que “o adjetivo linear significa que todas as funções matemáticas nesse modelo são necessariamente funções lineares”. De forma semelhante, Lachtermacher (2009) registra que a programação linear é um ramo da programação matemática em que a função-objetivo e as restrições são representadas por funções lineares. A programação linear é um algoritmo que pode ser usado para solucionar problemas diários das empresas, pois estas se deparam rotineiramente com a escassez de produtos ou matérias-primas e, consequentemente, precisam determinar o melhor emprego (solução ótima) daqueles recursos escassos. A solução obtida pela programação linear é chamada de solução ótima (a melhor solução entre soluções possíveis), de acordo com o modelo matemático, pois determinará o emprego dos recursos escassos da forma mais eficiente e eficaz. Aplicações e objetivos: a programação linear pode ser aplicada em diversas áreas, como (Lachtermacher,2009; Andrade, 2009): • Na administração/problemas de produção • Na análise de investimentos • Na alocação de recursos limitados 17 • No planejamento regional • Na logística • No custo/organização de transportes • Na localização da rede de distribuição • Na designação de equipes Em problemas de mistura de componentes Ao se fazer uso do algoritmo da programação linear, busca-se responder questões do tipo (Andrade, 2009): • Considerando as presentes condições de produção, ou seja, o cenário real, quais produtos e que quantidade, entre vários, devem ser produzidos para se obter o maior lucro possível? • Para atender determinadas especificações (restrições; limitações), qual é a composição da mistura (por exemplo: do alimento; da ração; da tinta...) que corresponde ao custo mínimo? • Definidas as localizações da produção, dos fornecedores e dos pontos de consumo, como estabelecer os circuitos de distribuição de modo a minimizar o custo total? Ou minimizar o tempo total? • Definidas as condições de trabalho, como designar o contingente de mão de obra entre as diferentes tarefas e especialidades, com o objetivo de minimizar as despesas ou maximizar a eficiência? • Definidas as condições de trabalho, como designar os equipamentos para atividades de forma a minimizar o tempo de operação ou minimizar as despesas? • Conhecido o valor nutricional dos alimentos que compõem uma ração, qual quantidade de cada um deve ser usada a fim de satisfazer condições nutricionais mínimas e dar ao animal o crescimento desejado ao custo mínimo? • Considerando determinadas condições de produção, quais insumos são plenamente usados? Quais insumos possuem estoque/disponibilidade para uso? Forma-padrão: diz-se que um problema de programação linear está na forma padrão se a formulação matemática está no seguinte modelo: Maximizar 𝑍 = 𝑐1𝑥1 + 𝑐2𝑥2 + ⋯ + 𝑐𝑛 𝑥𝑛, sujeito às restrições 𝑎11𝑥1 + 𝑎12𝑥2 + ⋯ + 𝑐1𝑛 𝑥𝑛 ≤ 𝑏1 𝑎21𝑥1 + 𝑎22𝑥2 + ⋯ + 𝑐2𝑛 𝑥𝑛 ≤ 𝑏2 .................................................. 𝑎𝑚1𝑥1 + 𝑎𝑚2𝑥2 + ⋯ + 𝑐𝑚𝑛 𝑥𝑛 ≤ 𝑏𝑚 e 𝑥1 ≥ 0, 𝑥2 ≥ 0, ..., 𝑥𝑛 ≥ 0 A terminologia comumpara o modelo de programação linear é (Hillier; Lieberman, 2010): • Função objetivo: é a função 𝑐1𝑥1 + 𝑐2𝑥2 + ⋯ + 𝑐𝑛 𝑥𝑛 que está sendo maximizada. • Restrições: são as limitações do tipo 𝑎𝑖1𝑥1 + 𝑎𝑖2𝑥2 + ⋯ + 𝑐𝑖𝑛 𝑥𝑛 ≤ 𝑏𝑖 , com (𝑖 = 1, 2, … , 𝑚). • Restrições de não negatividade (ou condições não negativas): 𝑥𝑗 ≥ 0, com (𝑗 = 1, 2, … , 𝑛). • Constantes numéricas (números): 𝑎𝑖𝑗, 𝑏𝑖 e 𝑐𝑗 . • Variáveis de decisão: são as variáveis independentes 𝑥1, 𝑥2, … , 𝑥𝑛, que se deseja conhecer; 𝑍 é a variável dependente Prosseguindo, Hillier e Lieberman (2010) apresentam de forma didática outras formas legítimas que podem fazer parte de problemas de programação linear. São as seguintes: 1. Minimizar em vez de maximizar a função objetivo: Minimizar 𝑍 = 𝑐1𝑥1 + 𝑐2𝑥2 + ⋯ + 𝑐𝑛 𝑥𝑛. 2. Algumas restrições com desigualdades do tipo maior do que ou igual a: 𝑎𝑖1𝑥1 + 𝑎𝑖2𝑥2 + ⋯ + 𝑐𝑖𝑛 𝑥𝑛 ≥ 𝑏𝑖 , para alguns valores de i, com (𝑖 = 1, 2, … , 𝑚). 3. Algumas restrições na forma de equação: 𝑎𝑖1𝑥1 + 𝑎𝑖2𝑥2 + ⋯ + 𝑐𝑖𝑛 𝑥𝑛 = 𝑏𝑖 , para alguns valores de i, com (𝑖 = 1, 2, … , 𝑚). 4. Eliminar as restrições não negativas para algumas das variáveis de decisão: 𝑥𝑗 irrestrita em sinal para alguns valores de j, com (𝑗 = 1, 2, … , 𝑛). Os autores destacam que qualquer problema que misture algumas dessas outras formas legítimas com as partes remanescentes do modelo na forma padrão ainda será um problema de programação linear. Entretanto, em razão dos objetivos da disciplina, os problemas a serem resolvidos serão os mais simples e didáticos possíveis. Hipóteses: a resolução de problemas de programação linear é referenciada nas seguintes hipóteses (Lachtermacher, 2007; Hillier; Lieberman, 2010): • Proporcionalidade: o valor da função objetivo é diretamente proporcional ao nível de atividade de cada variável de decisão. Essa hipótese descarta qualquer expoente que não seja 1 para qualquer variável em qualquer termo de qualquer função (seja a função objetivo ou a função que se encontra do lado esquerdo na declaração de uma restrição). • Aditividade: as variáveis de decisão são entidades totalmente independentes, não pode haver interdependência entre elas, isto é, não pode haver termos cruzados (termos que envolvem o produto de duas ou mais variáveis), tanto na função objetivo como nas restrições. Toda função em um modelo de programação linear (seja a função objetivo ou a função que se encontra do lado esquerdo na declaração de uma restrição), é a soma das contribuições individuais das respectivas atividades. • Divisibilidade: qualquer variável de decisão pode assumir quaisquer valores, inclusive valores fracionários. • Certeza: pressuposto que todos os parâmetros do modelo (as constantes aij, bi e cj ) são constantes conhecidas. Em aplicações reais, a hipótese da certeza raramente é satisfeita de forma precisa. Como haverá sempre um nível de incerteza, é importante realizar a análise de sensibilidade após uma solução ter sido classificada como ótima segundo os valores de parâmetros assumidos. Aula 2. Tema 01 – Modelagem em Programação Linear Problema de maximização. Para iniciar o estudo de problemas de PL, escolhemos um exemplo simples, que permitirá visualizar a construção do modelo de PL na forma-padrão, mas nem sempre os problemas são apresentados de forma estruturada como o proposto por Corrar, Theóphilo e Bergmann (2007) a seguir. A indústria Maximóveis fabrica dois tipos de produtos: cadeiras e mesas. Os produtos apresentam as margens de contribuição por unidade conforme a Tabela Os produtos são processados por dois departamentos: montagem e acabamento. Ao passar por esses departamentos, cada unidade do produto consome determinado número de horas, conforme indicado na Tabela Os departamentos apresentam, contudo, limitação em sua capacidade produtiva, como mostra a Tabela Deseja-se saber qual é a melhor combinação possível de cadeiras e mesas a serem produzidas, de forma a obter a maior margem de contribuição total. Solução proposta: Antes de resolver o problema de programação linear, é necessário elaborar a formulação matemática para obter forma-padrão, conforme descrito a seguir. a. Identificar as variáveis de decisão (𝑥1, 𝑥2): as variáveis de decisão são as quantidades que se deseja conhecer. De uma forma irreverente, para identificar as variáveis de decisão, às vezes basta fazer a pergunta: “show me the money?”. No problema em estudo, o que está associado ao dinheiro? Quais itens aumentam a margem de contribuição? Cadeiras e mesas. Portanto, temos 𝑥1: cadeiras; e 𝑥2: mesas. A unidade de medida para expressar a quantidade de cadeiras e de mesas é “unidade” (o uso de 𝑥1 e de 𝑥2 para designar cadeiras ou mesas é indiferente). b. Definir a função objetivo: a função objetivo 𝑍 = 𝑐1𝑥1 + 𝑐2𝑥2 + ⋯ + 𝑐𝑛 𝑥𝑛 será então, Maximizar 𝑍 = 10𝑥1 + 8𝑥2. Verifique que cada unidade de cadeira participa com $10 e cada unidade de mesa participa com $8 para a margem de contribuição da empresa. Assim, se soubermos qual é a combinação ótima de quantidade de cadeiras e de quantidade de mesas a serem produzidas e vendidas, conheceremos a maior margem de contribuição total. Por isso, o presente problema de PL é de maximização. c. Expressar matematicamente as restrições existentes: a partir das Tabelas 2.2 e 2.3, verifica- se que a produção de cadeiras e mesas depende dos departamentos de montagem e de acabamento. Tais departamentos produzem um ou outro produto, ou seja, cadeiras e mesas competem pela disponibilidade de tempo nestes departamentos, os quais possuem uma capacidade máxima disponível. Então, a função matemática que expressa a restrição do departamento de montagem é 3𝑥1 + 3𝑥2 ≤ 30, e a que expressa a restrição do departamento de acabamento é 6𝑥1 + 3𝑥2 ≤ 48. Observe que as constantes 𝑏𝑖 são positivas. d. Obter a forma-padrão: conforme apresentado anteriormente, é possível imaginar o uso de uma tabela esquemática, dado a sua praticidade para estruturar o problema de PL na forma- padrão. Espera-se que, com o tempo, a tabela seja dispensável, por se saber como compor o problema de PL na forma-padrão. Assim, a tabela teria o seguinte formato: O problema apresentado acima possui a formulação matemática, na forma-padrão, para ser empregado no algoritmo da PL na seguinte forma: Maximizar 𝑍 = 10𝑥1 + 8𝑥2, sujeito às restrições : Montagem 3𝑥1 + 3𝑥2 ≤ 30 Acabamento 6𝑥1 + 3𝑥2 ≤ 48 e 𝑥1 ≥ 0, 𝑥2 ≥ 0 sendo, 𝑥1: cadeiras (un.), e 𝑥2: mesas (un.). TEMA 2 – VARIÁVEIS DE DECISÃO E RESTRIÇÃO NO PLANO CARTESIANO O plano cartesiano. Para melhor compreensão do Tema 3, é necessário relembrar conceitos básicos de matemática. O sistema de coordenadas cartesianas (plano cartesiano) é usado para fazer a localização gráfica de pares de números reais e tem por base duas retas perpendiculares. O eixo horizontal é denominado eixo dos “x”, e o eixo vertical é denominado o eixo dos “y”. Para locar um ponto P, um ponto qualquer, no plano cartesiano é usado um par ordenado (𝑥𝑝, 𝑦𝑝), onde 𝑥𝑝 determina a posição de P no eixo x, e 𝑦𝑝 determina a posição de P no eixo de y. O primeiro termo do par ordenado, denominado de abscissa, é sempre usado no eixo horizontal – eixo dos x –, e o segundo termo do par ordenado, denominado ordenada, é sempre usado no eixo vertical – eixo dos y. Também é possível locar uma reta no plano cartesiano a partir de uma relação entre y e x. Veja os exemplos na Figura 1 de locação de ponto e de reta: o ponto P (3, 5) locado no plano cartesiano, possui 𝑥𝑝 igual a 3 e 𝑦𝑝 igual a 5; a reta 𝑦 + 2𝑥 = 4, com 𝑥 ≥ 0 e 𝑦 ≥ 0 pode ser locada a partir dos pontos (0, 4) e (2, 0). Para obter tais pontos pertencentes à referida reta, basta fazer 𝑥 = 0 na reta, para obter 𝑦 = 4 e,em seguida, fazer 𝑦 = 0 na reta, para obter 𝑥 = 2. As variáveis de decisão e restrições no plano cartesiano: o uso do plano cartesiano na construção de solução gráfica de um problema de PL permitirá a visualização e a compreensão do significado de restrições. De forma indiferente, podemos designar tanto o eixo 𝑥 como eixo 𝑥1 e o eixo 𝑦 como eixo 𝑥2; como, o eixo 𝑥 como eixo 𝑥2 e o eixo 𝑦 como eixo 𝑥1. O resultado final será o mesmo. No entanto, a fim de evitar confusão, adotaremos a opção de designar o eixo 𝑥 como eixo 𝑥1 e o eixo 𝑦 como eixo 𝑥2. Na Figura 2 há diferentes exemplos de locação de retas de provenientes das equações de restrições. No momento, vamos nos ater apenas à locação. Assim, sejam as seguintes equações a serem plotadas no plano cartesiano: a. 2,5 𝑥1 + 4 𝑥2 = 10 b. 3𝑥1 + 2 𝑥2 = 9 c. 𝑥2 = 3 d. 𝑥1 = 4,5 A equação c. é uma reta horizontal, com valor da ordenada constante e igual a 3 A equação d. é uma reta vertical, com valor da abscissa constante e igual a 4,5. TEMA 3 – SOLUÇÃO GRÁFICA Solução gráfica: a solução gráfica permite apresentar no máximo três variáveis de decisão, porém sua montagem é bastante trabalhosa Vale lembrar o que foi comentado anteriormente, de que dificilmente haverá um problema de programação linear com apenas duas variáveis de decisão no “mundo real”. Na elaboração da solução gráfica, apenas a parte (quadrante) do plano cartesiano que possui abscissa e ordenada “positivas” será usada. Isso se deve ao fato de que as variáveis de decisão deverão ser sempre maiores ou iguais a zero (𝑥1 ≥ 0 e 𝑥2 ≥ 0). Um roteiro simples para elaborar a solução gráfica é o seguinte: a. Traçar as retas originárias das inequações que definem as restrições; b. Determinar os pontos de interseção entre as retas (esta etapa pode ser executada após a letra c., para se calcular apenas os pontos de interesse); c. Identificar a área que as inequações definem como verdade (área comum às inequações): a área determina todos os pontos que atendem as inequações; e d. De forma pragmática, testar as possíveis soluções (vértices) para encontrar o valor da função objetivo. Solução gráfica do exemplo 1. A forma-padrão do problema do exemplo 1 é a seguinte: Maximizar 𝑍 = 10𝑥1 + 8𝑥2, sujeito às restrições Montagem 3𝑥1 + 3𝑥2 ≤ 30 Acabamento 6𝑥1 + 3𝑥2 ≤ 48 e 𝑥1 ≥ 0, 𝑥2 ≥ 0 sendo, 𝑥1: cadeiras (un.), e 𝑥2: mesas (un.) Portanto, a área que atende as duas inequações é apresentada na Figura 3b. A área hachurada (preenchida) é a que atende simultaneamente as duas inequações, e nela estão localizadas todas as soluções possíveis. d. De forma pragmática, testar as possíveis soluções (vértices) para encontrar o valor da função objetivo. O que se deseja saber é: qual é a melhor combinação possível de cadeiras e mesas a serem produzidas, de forma a obter a maior margem de contribuição total. Para isso, a função objetivo é maximizar 𝑍 = 10𝑥1 + 8𝑥2, consequentemente a solução estará nos pontos mais distantes da origem (0, 0), porque se deseja a maior contribuição. Os pontos mais afastados são: (0, 10): 𝑍 = 10(0) + 8(10) = 80 (6, 4): 𝑍 = 10(6) + 8(4) = 92 (8, 0): 𝑍 = 10(8) + 8(0) = 80 e. Solução: para se obter a maior contribuição, deve-se produzir 6 cadeiras e 4 mesas. A maior contribuição será $92,00. TEMA 4 – TERMINOLOGIA PARA SOLUÇÕES: SOLUÇÕES INEXISTENTES, ILIMITADAS E MÚLTIPLAS Terminologia: para tratar de tipos de soluções para modelos de programação linear, usa-se a seguinte terminologia (Lachtermacher, 2007; Hillier, Lieberman, 2010): • Solução: qualquer especificação de valores para as variáveis de decisão, independentemente de ser desejável ou mesmo ser uma opção admissível. • Solução viável: é aquela para a qual todas as restrições são satisfeitas. Por exemplo, na Figura 5, verifica-se que P1 e P2 são soluções viáveis. • Solução inexistente: existe a possibilidade de que o problema de programação linear não possua solução viável, ou seja, não existe solução para o problema. Tal situação é apresentada na Figura 6. • Solução inviável: é aquela para a qual pelo menos uma das restrições é violada. Por exemplo, na Figura 5, verifica-se que P3 não atende a restrição 𝒙𝟏 ≤ 𝟒, e P4 não atende a restrição 𝟔𝒙𝟏 + 𝟑𝒙𝟐 ≤ 𝟒𝟖. • Região de soluções viáveis: é o conjunto de todas as soluções viáveis • Solução ótima: uma solução viável que tem o valor mais favorável da função objetivo, isto é, maximiza (maior valor) ou minimiza (menor valo) a função objetivo em toda a região viável, podendo ser única ou não. • Soluções ótimas múltiplas: é a situação em que há um número infinito de soluções ótimas, cada uma com o mesmo valor ótimo da função objetivo. TEMA 5 – A PRODUÇÃO DE BEBIDA NA LE PETIT PAIN: UM PROBLEMA DE MISTURA Problemas de mistura são relativamente frequentes em Programação Linear. Seu objetivo é encontrar a melhor mistura de ingredientes nos produtos finais para atender a determinadas especificações, e pode ainda visar tanto a maximizar como minimizar. A padaria Le Petit Pain deseja lançar uma nova bebida para seus frequentadores, em especial aos moradores do bairro, geralmente pessoas com mais de 60 anos. A nova bebida é basicamente composta por uma bebida láctea e por um complemento alimentar (farinha) em diversos sabores. Sabe-se que os nutrientes da bebida láctea e do complemento alimentar fornecem as quantidades de vitaminas dadas na Tabela 2.4. Deseja-se calcular quais são as quantidades de bebida láctea e de complemento alimentar capazes de satisfazer as quantidades diárias mínimas de nutrientes (vitaminas) a um custo mínimo. A definição das quantidades determinará a proporção a ser utilizada no preparo da bebida. Solução: inicialmente será desenvolvida a modelagem do problema a fim de obter a forma- padrão e, em seguida, será elaborada a solução gráfica do problema. 1. Modelagem: a. Identificar as variáveis de decisão (𝑥1, 𝑥2): a partir do enunciado, pode-se identificar que se deseja conhecer as quantidades de bebida láctea e de complemento alimentar. Assim, tem-se que: 𝑥1: bebida láctea (l); e 𝑥2: complemento alimentar (kg). b. Definir a função objetivo: como se deseja obter um custo mínimo, e a partir dos dados da Tabela 2.4 se obtém a seguinte função objetivo, minimizar 𝑍 = 3𝑥1 + 17𝑥2. c. Expressar matematicamente as restrições existentes: fazendo uso novamente dos dados existentes na Tabela 2.4, é possível elaborar a função matemática que expressa a restrição de vitamina A como 0,25𝑥1 + 2𝑥2 ≥ 1, a restrição de vitamina B como 25𝑥1 + 20𝑥2 ≥ 50 e a restrição de vitamina C como 3𝑥1 + 6𝑥2 ≥ 10. d. Obter a forma-padrão: a partir dos dados anteriores, é possível montar o seguinte modelo matemático para o problema de programação linear: Minimizar 𝑍 = 3𝑥1 + 17𝑥2, sujeito às restrições Foi seguido o seguinte roteiro para obter a solução gráfica da Figura 9: a. Traçaram-se as retas originárias das inequações (restrições); b. Identificou-se a área que as inequações definem como verdade (área comum às inequações); c. A partir da definição da área, foram obtidos os pares ordenados dos pontos P1, P2, P3 e P4, conforme apresentado a seguir: 26 - P1 (0, 2,5) foi obtido diretamente do gráfico; - P4 (4, 0) foi obtido diretamente do gráfico. - P2 (1,11, 1,11) foi obtido a partir da interseção entre as retas: Por fim, os pontos (vértices) acima foram testados na função objetivo 𝑍 = 3𝑥1 + 17𝑥2. Observe que esses pontos foram escolhidos porque estão nas arestas inferiores da região de soluções viáveis. Como o problema é de minimização, não há, neste caso, a necessidade da limitação superior da região de soluções viáveis. Por isso se avaliam os pontos (vértices) que estão mais próximos da origem (0, 0), porque serão os menores valores da funçãoobjetivo, como apresentado a seguir: - 𝑍(0, 2,5) = 3(0) + 17(2,5) = 42,5 - 𝑍(1,11, 1,11) = 3(1,11) + 17(1,11) = 22,22 - 𝑍(3,11, 0,11) = 3(3,11) + 17(0,11) = 11,22 - 𝑍(4, 0) = 3(4) + 17(0) = 12 Conclusão: o menor custo será $11,22 (𝑍𝑚𝑖𝑛 = 11,22), a quantidade de leite será de 3,11 litros e do suplemento alimentar, de 0,11 quilogramas, para se obter a quantidade diária de vitaminas. Como é um produto a ser vendido, outra referência é a proporcionalidade entre leite e suplemento alimentar, que é a dosagem de 35,37 gramas do suplemento alimentar para cada litro de leite. Aula 3. Aula 3. Tema 01 – Método simplex Ideia geral. “O método simplex combina conceitos de álgebra matricial com conjunto de regras básicas que conduzem à identificação dos problemas de Programação Linear” (Corrar; Theóphilo; Bergmann, 2007). De forma resumida, usando o argumento de Andrade (2009), pode-se afirmar que o simplex é um método de resolução de equações lineares. Por outro lado, Hillier e Lieberman (2013) informam que “o método simplex é um procedimento algébrico. Conceitos aplicados: antes de se iniciar o algoritmo do método simplex, é necessário transformar as desigualdades lineares das restrições (inequações) em equações lineares. Recurso Disponibilidade Madeira 12 m² Mão de obra 8 H.h (homem.hora) O processo de produção é tal que, para fazer 1 mesa, a fábrica emprega 2 m² de madeira e 2 H.h de mão de obra, e, para fazer 1 armário, são gastos 3 m² de madeira e 1 H.h de mão de obra. Além disso, o fabricante sabe que cada mesa dá uma margem de contribuição para o lucro de $ 4, e cada armário dá uma margem de $ 1. O fabricante deseja encontrar o programa de produção que maximiza a margem de contribuição total para o lucro. Para o problema acima, a forma-padrão e a solução gráfica são as seguintes: Maximizar 𝑍 = 4𝑥1 + 1𝑥2, TEMA 2 – O ALGORÍTIMO DO MÉTODO SIMPLEX O algoritmo: o método simplex usa uma forma tabular – tableau – a partir de informações essenciais, as quais são obtidas da forma-padrão, tais como: coeficientes das variáveis, constantes de restrições e variáveis básicas e não básicas (Lachtermacher, 2007). A seguir, é apresentado um roteiro do método simplex proposto por Andrade (2009), o qual será usado para resolver o problema apresentado no tema anterior. Seja, portanto, a seguinte forma padrão: Maximizar 𝑍 = 4𝑥1 + 1𝑥2, sujeito às restrições Madeira 2𝑥1 + 3𝑥2 ≤ 12 Mão de obra 2𝑥1 + 1𝑥2 ≤ 8 e 𝑥1 ≥ 0, 𝑥2 ≥ • Passo 1: introduzir as variáveis de folga; uma para cada desigualdade (restrição). A partir da forma-padrão, são incluídas as variáveis de folga 𝑥1 e 𝑥2. Maximizar 𝑍 = 4𝑥1 + 1𝑥2 + 0𝑥3 + 0𝑥4 sujeito a 2𝑥1 + 3𝑥2 + 1𝑥3 = 12 2𝑥1 + 1𝑥2 + +1𝑥4 = 8 e 𝑥1 ≥ 0, 𝑥2 ≥ 0, 𝑥3 ≥ 0, 𝑥4 ≥ 0 • Passo 2: montar um quadro para os cálculos, colocando os coeficientes de todas as variáveis com seus respectivos sinais e, na última linha, incluir os coeficientes da função objetivo transformada. Inicialmente, na forma-padrão, a função objetivo não possui um valor (constante) no lado direito da equação, assim deve-se fazer a seguinte modificação para que possua uma constante: 𝑍 = 4𝑥1 + 1𝑥2 + 0𝑥3 + 0𝑥4 → 𝑍 − 4𝑥1 − 1𝑥2 − 0𝑥3 − 0𝑥4 = 0 • Passo 3: estabelecer uma solução básica inicial, usualmente atribuindo valor zero às variáveis originais e achando valores positivos para as variáveis de folga. • Passo 4: como próxima variável a entrar na base, escolher a variável não básica que fornece, na última linha, a maior contribuição para o aumento da função objetivo (ou seja, tem o maior valor negativo). Se todas as variáveis que estão fora da base tiverem coeficientes nulos ou positivos nessa linha, a solução atual é ótima. Se alguma dessas variáveis tiver coeficiente nulo, isso significa que ela pode ser introduzida na base sem aumentar o valor da função objetivo. Isso quer dizer que temos outra solução ótima, com o mesmo valor da função objetivo. • Passo 5: para escolher a variável que deve deixar a base, deve-se realizar o seguinte procedimento: o Dividir os elementos da última coluna (constante) pelos correspondentes elementos positivos da coluna da variável (coeficiente) que vai entrar na base. Caso não haja elemento algum positivo nessa coluna (coeficiente da variável), o processo deve parar, 10 já que a solução seria ilimitada; se o coeficiente da variável for 0 (zero), não realizar a divisão; o No caso de haver dois quocientes com o mesmo valor, escolher um deles e continuar as operações; o O menor quociente indica a equação cuja respectiva variável básica deverá ser anulada, tornando-se variável não básica. • Passo 6: empregando operações válidas com as linhas da matriz (quadro), transformar o quadro de cálculos de modo a encontrar a nova solução básica. A coluna da nova variável básica deverá se tornar um vetor identidade, no qual o elemento 1 aparece na linha correspondente à variável que está sendo anulada. • Passo 7: retornar ao Passo 4 para iniciar outra iteração. Antes de prosseguir para a próxima iteração, é recomendável verificar se: o Todas as constantes na coluna de b, referentes às restrições, estão positivas. Isto é uma imposição do procedimento do método. Caso haja valor negativo, rever as operações realizadas para fazer as devidas correções; e o Há valor negativo na linha da função objetivo, na linha de Z. Caso haja, deve-se iniciar uma nova iteração. Caso não haja, a solução atual é a solução ótima. TEMA 3 – A PRODUÇÃO DE PÃES SALGADOS NA LE PETIT PAIN: UM PROBLEMA DE MAXIMIZAÇÃO sendo, 𝑥1: pão salgado ‘tradicional’ (kg), 𝑥2: pão salgado ‘+queijo’ (kg), e 𝑥3: pão salgado ‘+calabresa’ (kg). Após a obtenção da forma-padrão, deve-se introduzir as variáveis de folga, uma para cada restrição TEMA 4 – MÉTODO SIMPLEX: INTERPRETAÇÃO DE VALORES DO TABLEAU Interpretando valores. À medida que se desenvolve o método simplex, é possível identificar soluções viáveis em cada tableau obtido ao final de cada iteração. A análise apresentada nos parágrafos a seguir pode ser realizada em qualquer tableau, entretanto a mais significativa é a realizada nos dados do tableau que possui a solução ótima. O tableau com a solução ótima do exemplo apresentado no tema anterior fornece os seguintes dados: 𝑥1 = 81,32, 𝑥2 = 221,84, 𝑥3 = 0, 𝑥4 = 18,73 , 𝑥5 = 0 e 𝑥6 = 0, onde as variáveis básicas possuem valores diferentes de 0, e as variáveis não básicas são nulas. Destes valores, podemos avaliar o seguinte: - 𝑥1 = 81,32: é uma variável de decisão, refere-se à produção em quilogramas do pão salgado “tradicional”. Indica que a sua produção deve ser de 81,32 kg; - 𝑥2 = 221,84: é uma variável de decisão, refere-se à produção em quilogramas do pão salgado “+queijo”. Indica que a sua produção deve ser de 221,84 kg; - 𝑥3 = 0: é uma variável de decisão, refere-se à produção em quilogramas do pão salgado “+calabresa”. Indica que não deverá ser produzido; - 𝑥4 = 18,73: é uma variável de folga referente ao uso do recurso trigo. A quantidade disponível de trigo para uso diário é de 200 kg. Como a equação referente ao uso do trigo é 0,6𝑥1 + 0,6𝑥2 + 0,6𝑥3 + 1𝑥4 + 0𝑥5 + 0𝑥6 = 200, tem se que 1𝑥4 = 200 − 0,6𝑥1 − 0,6𝑥2 − 0,6𝑥3 ou seja, 1𝑥4 = 200 − 0,6(81,32) − 0,6(221,84) − 0,6(0) = 18,10, a diferença de valores é devida ao uso das aproximações (número de casas decimais). Conclui-se que há sobra (estoque) de um pouco mais de 18 kg de trigo. - 𝑥5 = 0: é uma variável de folga referente ao uso do recurso muçarela. A quantidade disponível de muçarela para uso diário é de 150 kg. Como a equação referente ao uso de muçarela é 0,2𝑥1 + 0,6𝑥2 + 0,4𝑥3 + 0𝑥4 + 1𝑥5 + 0𝑥6 = 150, tem-se que 1𝑥5 = 150 − 0,2𝑥1 − 0,6𝑥2 − 0,4𝑥3, ou seja, 1𝑥5 = 150 − 0,2(81,32) − 0,6(221,84) − 0,4(0) = 0,63, a diferença de valoresé devida ao uso das aproximações (número de casas decimais). Conclui-se que todo o recurso muçarela foi usado na produção. - 𝑥6 = 0: é uma variável de folga referente ao uso do recurso calabresa. A quantidade disponível de calabresa para uso diário é de 60kg. Como a equação referente ao uso de calabresa é 0,2𝑥1 + 0,2𝑥2 + 0,6𝑥3 + 0𝑥4 + 0𝑥5 + 1𝑥6 = 60, tem-se que 1𝑥6 = 60 − 0,2𝑥1 − 0,2𝑥2 − 0,6𝑥3 ou seja, 1𝑥6 = 60 − 0,2(81,32) − 0,2(221,84) − 0,6(0) = 0,63, a diferença de valores é devida ao uso das aproximações (número de casas decimais). Conclui-se que todo o recurso calabresa foi usado na produção. Os dados acima refletem o atual planejamento da produção de pães salgados, e, se a solução atual é satisfatória, uma medida imediata que os gestores podem executar é reduzir a disponibilidade de trigo em 18 kg. O resultado obtido é um ponto de partida para estudo de diferentes cenários (estudos de estudos de sensibilidade, a ser abordado na próxima rota de estudo), tais como: qual seria o impacto na produção se houvesse aumento da quantidade disponível de muçarela e de calabresa? Qual é o preço mínimo para que o pão salgado “+calabresa” passe a ser produzido? TEMA 5 – MÉTODO SIMPLE: UMA INTRODUÇÃO A MÉTODO DE SOLUÇÃO DE PROBLEMAS DE MINIMIZAÇÃO O algoritmo simplex é o método mais conhecido para resolver problemas de programação linear. Por ser detalhista e trabalhoso, costuma ser um ponto de problema para os alunos, principalmente no curso de administração. A partir do exposto nos temas acima, você pode verificar o fato de que o simplex é um passo-a-passo que se repete até que a solução ótima do problema seja atingida. Se houver solução, não há como errar a resposta de um determinado problema Problemas de forma não padrão: nem todos os problemas de programação linear estão no formato padrão, isto é, são problemas de maximização com todas as restrições do tipo menor ou igual. Quando o formato não for o padrão, é necessário preliminarmente fazer uso de métodos para viabilizar o emprego do algoritmo do método simplex, que foi apresentado anteriormente (Lachtermacher, 2009). Você poderá encontrar problemas que apresentam modelos com configurações “abrangentes”, tais como: problema de maximização que possui restrições do tipo maior ou igual; problema de minimização que possui restrições do tipo maior e igual; e restrições do tipo menor ou igual. Nestas configurações, serão realizados os seguintes procedimentos preliminares: • A função objetivo de problemas de minimização é transformada em uma função objetivo de problemas de maximização, da seguinte forma: minimizar Z = maximizar -Z. Por exemplo: minimizar 𝑍 = 3𝑥1 − 5𝑥2, se transforma em maximizar 𝑊 = −𝑍 = −3𝑥1 + 5𝑥2 (Lachtermacher, 2009). • Quando a restrição for do tipo maior ou igual e for transformada para uma equação, a variável a ser acrescida é chamada variável de excesso, que possuirá coeficiente negativo. Isto se deve ao fato de que o valor da soma à esquerda da inequação é maior ou igual ao valor da constante, à direita da inequação. Assim, para se obter uma equação, é necessário subtrair (sinal negativo) o valor em excesso. Por exemplo: a restrição 3𝑥1 + 2𝑥2 ≥ 18 se transforma na equação 3𝑥1 + 2𝑥2 − 𝑥5 = 18, sendo 𝑥5 uma variável de excesso (Lactermacher, 2009). Observe que, quando incluímos as variáveis de folga nas restrições, estas foram também incluídas na função objetivo e, consequentemente, as variáveis de folga devem ser maiores ou iguais a zero. Este procedimento também deve ser aplicado às variáveis de excesso, entretanto, como apresentado acima, as variáveis de excesso possuem coeficiente negativo, quando deveriam ser maiores ou iguais a zero. A maneira de resolver essa “desconformidade” das variáveis de excesso envolve a criação de um novo problema com a inclusão de variáveis artificiais (que não pertencem ao problema original) nas equações em que as variáveis de excesso estão presentes. Após a resolução do novo problema, aplica-se o algoritmo do método simplex para obter a solução do problema de programação linear. Esse novo problema, gerado pela inclusão das variáveis artificiais, é resolvido pelo emprego de métodos, tais como: o “método do Big-M” e o “método de duas fases”. O estudo de tais métodos requer tempo, que não dispomos, para apresentar suas especificidades, por isso não são objeto desta disciplina, mas você pode aprender tais métodos estudando a bibliografia de programação linear, pois são métodos amplamente conhecidos e usados. Aula 4. Tema 01 – Ferramenta Solver do Excel O Solver realiza na planilha Excel todos os procedimentos do método simplex. Para isso, deve- se informar ao Excel os dados previamente definidos na caixa de diálogo “Parâmetros do Solver”. Tais parâmetros são obtidos com base na modelagem do problema de Programação Linear e estão inclusos tanto na função objetivo e como nas restrições. Mas, antes de aplicar o Solver, temos de estruturar/organizar a planilha de forma que os parâmetros necessários sejam “visíveis” àquela ferramenta. Os passos para preparar o Excel para usar a ferramenta Solver são apresentados a seguir, bem como um exemplo comentado passo a passo para facilitar a aprendizagem. Os passos para preparar o Excel para usar a ferramenta Solver são apresentados a seguir, bem como um exemplo comentado passo a passo para facilitar a aprendizagem. Habilitação do Solver: a primeira ação a ser realizada é a habilitação da ferramenta Solver na planilha Excel. Inicialmente, selecione a guia “Arquivo” na Faixa de Opções da planilha e, em seguida, na nova janela aberta, selecione a opção “Opções”. Será aberta uma nova janela e, no menu à esquerda, selecione “Suplementos” e em seguida clique no botão “Ir...”, na parte inferior da janela. Novamente, uma nova janela será aberta e nesta, selecione a opção “Solver” e em seguida clique no botão “Ok”. Agora, selecione a guia “Dados” na Faixa de Opões da planilha e identifique o ícone do Solver em “Análise”, conforme apresentado na Figura 1. Figura 1 – Localização do ícone da ferramenta Solver Adequação da planilha aos dados do problema Após a habilitação do Solver no Excel, é necessário estruturar a planilha para receber os dados obtidos na modelagem do problema de programação linear. Para usar o Solver, é necessário apenas os dados obtidos na modelagem, portanto você não precisa se preocupar em incluir outros tipos de variáveis, sejam de folga, excesso ou artificial. A organização proposta da planilha por Lachtermacher (2009) é didática e de fácil compreensão, por isso a tomamos como referencial. Ele nos diz que “a mágica da modelagem de um problema de programação linear em uma planilha eletrônica está na maneira como arrumamos a célula”. A partir da proposta daquele autor, designamos uma célula para representar cada uma das seguintes entidades: • Função objetivo (maximização/minimização): designação das variáveis de decisão e de seus coeficientes; • Variáveis (Solver): são os valores que o Solver vai calcular para as variáveis de decisão; • Z: é o valor da solução ótima, que será obtida pela multiplicação dos coeficientes das variáveis de decisão pelos valores calculados pelo Solver. • Para cada restrição: • Uma para o lado esquerdo da restrição – LHS (left hand side). Uma célula vai representar toda a expressão que está à esquerda do sinal de inequação. Assim, o valor nesta célula será a soma das multiplicações dos coeficientes de cada variável de decisão, nas linhas de restrição, pelo respectivo valor calculado pelo Solver. • Uma para o lado direito da restrição – RHS (right hand side). Uma célula terá o valor da constante (o b no quadro do simplex), que está do lado direito do sinal de inequação. A partir da designação das células, apresentadas acima, a estrutura da planilha terá o formado semelhante ao apresentadona Figura 2, que, no caso, foi configurada para 4 (quatro) variáveis de decisão e para 4 (quatro) restrições. Para exemplificar o preenchimento, vamos usar o exemplo da marcenaria (Andrade, 2009) apresentado na Rota de Ensino 3. A modelagem do problema gerou a forma-padrão e a solução gráfica – Figura 3 –, apresentadas a seguir. Assim, termos a planilha preenchida – Figura 4 –, na qual a fórmula na célula C5 (Zmáx) é C3*C4+D3*D4 (𝑍 = 4𝑥1 + 1𝑥2), na célula E8 (Madeira-LHS) é C4*C8+D4*D8 (2𝑥1 + 3𝑥2) e na célula E9 (Mão de obra-LHS) é C4*C9+D4*D9 (2𝑥1 + 1𝑥2). Os valores unitários de 𝑥1 (mesas) e de 𝑥2 (armários) são calculados pelo Solver e inseridos nas células C4 e D4. Consequentemente, os valores de Z e das restrições madeira (LHS) e mão de obra (LHS) são calculados e deixam de ter o valor igual a 0 (zero). A indicação dos sinais ≤ ao final das restrições é para lembrar o tipo de inequação existente em cada restrição e será útil quando for preencher a caixa de diálogo Parâmetros do Solver. Para preencher a caixa de diálogo Parâmetros do Solver – Figura 5 – para iniciar o cálculo, selecionamos a guia “Dados” e em seguida clicamos no ícone “Solver” em “Análise” para o Excel abri-la. Os passos para preencher a caixa de diálogo Parâmetros do Solver são os seguintes: • Definir objetivo: selecionar a célula C5 (Zmáx). • Para: Máx... já está previamente selecionado. Quando o problema for de minimização, deve- se fazer a seleção da opção Mín. • Alterando Células Variáveis: selecionar as células C4 e D4 (C4:D4), destacadas em “amarelo” na Figura 4. Estas células não devem conter quaisquer tipos de informações/dados porque são reservadas para uso do Solver. • Sujeito às restrições: neste espaço serão incluídas as relações LHS e os valores RHS, bem como os sinais das inequações. Para isso, você deve clicar no botão “Adicionar” para abrir uma caixa de diálogo – Figura 7 – para informar as relações das restrições, uma de cada vez. • Referência de célula: preencher com o valor do LHS. • O sinal <= já é previamente selecionado. Quando for necessário, deve ser alterado (por isso foi colocado ao final da restrição o sinal da inequação para lembrar quando for necessário fazer a alteração). • Restrição: preencher com o valor RHS, ou seja, o valor da constante. • Adicionar: clique neste botão para inserir uma nova restrição. • Ok: clique neste botão quando todas as restrições forem incluídas. • GRG Não Linear: deve ser modificado para LP Simplex. • Opções: este botão permite selecionar, em outra caixa de diálogo, a opção de Mostrar Resultados de Iterações. Tal opção permitirá a você identificar os valores dos tableau intermediários do algoritmo do método simplex. • Resolver: clique neste botão para realizar o cálculo. Após o preenchimento da caixa de diálogo Parâmetros do Solver conforme instruções acima, a caixa de diálogo deverá estar conforme apresentado na Figura 7. Agora, o passo seguinte é clicar no botão Resolver, o que vai fazer com que seja aberta a caixa de diálogo Resultados do Solver –– Figura 8. Para prosseguir, seleciona o botão OK, e o resultado final dos cálculos é conforme o apresentado na planilha da Figura 9. Figura 7 – Parâmetros do Solver preenchido TEMA 2 – PROBLEMA DE MAXIMIZAÇÃO: USO DO SOLVER O problema a seguir tem por objetivo primário aplicar o Solver para obter uma solução. Produção de pães salgados. Os gestores da padaria Le Petite Pain não ficaram satisfeitos com o cenário em que somente a versão “Tradicional” e a “+Queijo” deveriam ser produzidas para obter o máximo faturamento. Assim, decidiram adotar uma nova estratégia, em que limitam a produção diária da versão “Tradicional” a até 70kg para que as outras versões, com maior valor agregado, sejam vendidas. Além disso, atualizaram os seus dados de referência, modificando a disponibilidade diária de sua famosa calabresa artesanal, de 60kg para 70kg, conforme apresentado na Tabela 1. Nessas condições, os gestores desejam determinar qual quantidade de cada versão do pão salgado devem produzir a fim de obter o máximo faturamento com a venda dos pães. Tabela 1 – Pães salgados A planilha preenchida com os dados do problema é a apresentada na Figura 10. A partir dos dados da planilha – Figura 12 –,verifica-se que ao se limitar a produção diária do pão salgado “Tradicional” (𝑥1) em 70 kg e de acrescer 10 Kg de calabresa para a produção, obtém-se a produção de pão salgado “+Queijo” (𝑥2) de 211,43kg, de pão salgado “+Calabresa” (𝑥3), de 22,86kg e de um faturamento máximo de $ 6.342,86. Também se verifica a disponibilidade de 17,43Kg (200-182,57) de trigo e que a muçarela e a calabresa são completamente usados na produção definida. Tema 03 – Problema de transporte: uma introdução Problema de transporte é um tipo de problema real que acontece no cotidiano e que pode ser aplicado em Programação Linear. O “chamado problema de transporte recebeu esta denominação em virtude de suas aplicações envolverem como transportar mercadorias de maneira otimizada”. No entanto, algumas de suas importantes aplicações (por exemplo, cronograma de produção) não estão relacionadas ao transporte (Hillier; Lieberman, 2010). O administrador sabe que, no processo geral de produção e comercialização do produto, a estrutura de transporte deve ser cuidadosamente planejada a fim de cumprir seu objetivo com o menor acréscimo possível no custo final do produto (Andrade, 2009). TEMA 4 – PROBLEMA DA DESIGNAÇÃO: UMA INTRODUÇÃO Segundo Hillier e Lieberman (2010), o “denominado problema da designação envolve aplicações tais como distribuir pessoas para realizar determinadas tarefas”. Apesar de as aplicações parecerem distintas em relação as do problema de transporte, o problema da designação pode ser visto como um tipo especial de problema de transporte. Com o que concorda Andrade (2009), pois nos diz que “à primeira vista, não tem semelhança alguma com o problema de transporte, mas que, na verdade, pode ser modelada e resolvida de maneira análoga”. Consideramos que o estudo do problema da designação será útil ao administrador no desempenho de suas funções por tratar de problemas de sua rotina. TEMA 5 – ANÁLISE DE SENSIBILIDADE NO SOLVER Análise de sensibilidade: uma das hipóteses dos problemas de programação linear é a certeza que se tem sobre os valores dos coeficientes da função objetivo e das constantes das restrições (Lachtermacher, 2009). Para amenizar essa hipótese, realizamos uma análise pós- otimização verificando as possíveis variações, para cima e para baixo, dos valores dos coeficientes da função objetivo, dos coeficientes e das constantes das restrições, sem que a solução ótima seja alterada. Este estudo se denomina análise de sensibilidade. Uma análise de sensibilidade busca responder basicamente a três perguntas (Lachtermacher, 2009): • Qual é o efeito de uma mudança em um coeficiente da função objetivo? • Qual é o efeito de uma mudança em uma constante de uma restrição? • Qual é o efeito de uma mudança em um coeficiente de uma restrição? Existem dois tipos básicos de análise de sensibilidade. O primeiro estabelece limites inferiores e superiores para todos os coeficientes da função objetivo e para os coeficientes e as constantes das restrições. Esta análise é efetuada automaticamente pelo Excel, considerando a hipótese de apenas uma alteração a cada momento. O segundo verifica se mais de uma mudança simultânea em um problema altera a sua solução ótima, o que não é realizado pelo Excel por ser um estudo mais complexo. Uma maneira simples para se realizar este estudo, em problemas de pequeno e médio portes, é o de se realizar as alterações na modelagem do problema e encontrar sua nova solução realizando uma nova otimização (Lachtermacher, 2009). Relatórios do Solver: no processode solução do problema pelo Solver, a caixa de diálogo Resultados do Solver – Figura 8 – aparece e exibe uma mensagem de conclusão. No lado direito da caixa de diálogo, são relacionados os relatórios disponíveis – Respostas, Sensibilidade e Limites –, mas o nosso foco é o Relatório de Sensibilidade. Após você selecionar os relatórios desejados e clicar no botão OK, a planilha passa a exibir os resultados obtidos, e os relatórios selecionados são gerados (Corrar; Theóphilo; Bergmann, 2007). Relatório de Sensibilidade: quando um ou mais dados do problema sofrem alteração, o modelo inicial pode ser atualizado e recalculado com facilidade. O Solver permite que se alterem apenas os dados que sofrem alterações, recalculando a planilha e emitindo novos relatórios. Entretanto, podese desejar conhecer, a partir de um cenário, os impactos advindos de eventuais mudanças nos valores atuais das variáveis e restrições. Seja o Relatório de Sensibilidade – Figura 20 – obtido a partir da resolução do problema da marcenaria (Tema 01). Observa-se que o relatório é subdividido em duas partes: uma destinada às células variáveis (função objetivo) e outra, às restrições. Vamos a seguir apresentar alguns comentários: Aula 5 TEMA 1 – TEORIA DAS FILAS: HISTÓRICO, CONCEITOS E APLICAÇÕES A teoria das filas é um método analítico que aborda o assunto por meio de fórmulas matemáticas (Prado, 2006) e “trata de congestionamento de sistemas, cuja característica principal é a presença de ‘clientes’ solicitando ‘serviços’ de alguma maneira” (Andrade, 2009).O que são filas? A nossa rotina diária nos permite identificar exatamente o que são filas. Nós entramos em uma fila para fazer retirada em um caixa eletrônico, para pagar as compras em um supermercado, para comprar ingressos em um cinema, para pagar o pedágio em uma rodovia e em tantas outras situações. A teoria das filas estuda a situação de “espera” nas mais variadas formas e emprega “modelos de filas para representar os diversos tipos de sistemas de filas (sistemas que envolvem filas do mesmo tipo) que surgem na prática. Aplicações: Andrade (2009) nos apresenta algumas aplicações da teoria das filas em administração, as quais são listadas a seguir: • Estabelecimento de uma política de atendimento ao público em empresas concessionárias de serviços públicos, determinando o número de atendentes e a especialização de cada um. • Estudo de um sistema de almoxarifado, de modo a determinar os custos totais de operação. • Estudo da operação de um centro de processamento de dados com o objetivo de determinar políticas de atendimento e prioridades para execução de serviços. • Determinação de equipes de manutenção em grandes instalações, onde há custos elevados associados a equipamentos danificados, à espera de reparos. • Estudo de operação de caixas (bancos, supermercados etc.) com o objetivo de estabelecer uma política ótima de atendimento ao público; • Determinação de capacidade em pátios de estacionamentos de automóveis. TEMA 2 – SISTEMA DE FILAS: ELEMENTOS, CARACTERÍSTICAS E MEDIDAS DE EFETIVIDADE Elementos de uma fila: Na Figura 1 é apresentado o processo básico suposto pela maioria dos modelos de filas, no qual clientes que necessitam de atendimento são gerados de uma certa população. Tais clientes entram no sistema de filas e pegam uma fila, e, em dado momento, um integrante da fila é selecionado para o atendimento por alguma regra conhecida como disciplina de fila. Cliente é um termo genérico que pode designar uma pessoa, um navio, um lingote etc. Os termos “transação” ou “entidade” podem ser empregados como sinônimo de cliente. O atendimento é realizado por um ou mais servidores (ou atendentes ou canais de serviço) e pode designar um médico, um cais de atracação, uma máquina de lingotamento etc. Após o atendimento, o cliente deixa o sistema de filas (Prado, 2006; Hillier; Lieberman, 2010). Características de uma fila. Os elementos principais que caracterizam um fila são: • Clientes e tamanho da população. O tamanho é o número total de possíveis clientes distintos. Um cliente sempre será proveniente de uma população, a qual pode possuir um tamanho infinito ou finito. Como os cálculos são bem mais fáceis para o caso em que a população é infinita, parte-se dessa hipótese, mesmo quando o tamanho real for um número finito relativamente grande. Esta é a hipótese implícita para qualquer modelo de filas que não afirme o contrário. No caso da população infinita, a chegada de um novo cliente a uma fila não afeta a taxa de chegada de clientes subsequentes, e pode-se afirmar que as chegadas são independentes. O caso da população finita é mais difícil analiticamente, pois o número de clientes no sistema de filas afeta o número de possíveis clientes fora do sistema a qualquer momento (Prado, 2006; Hillier; Lieberman, 2010). • Processo de chegada. “A chegadas de clientes a um sistema ocorrem, na maioria das dos casos que têm interesse para a administração, de modo aleatório, ou seja, o número de clientes que chegam por unidade te tempo, varia segundo o acaso” (Andrade, 2009). A hipótese comum é que os clientes são gerados de acordo com um processo de Poisson (distribuição de Poisson), e uma hipótese equivalente é que a distribuição probabilística do tempo entre as chegadas consecutivas possui uma distribuição exponencial (Prado, 2006; Hillier; Lieberman, 2010). Um processo de chegada regular, ou seja, aquele em que não existe nenhuma variação entre os valores para os intervalos entre chegadas é raro de acontecer, porém ocorre apenas em processos altamente automatizados. Nesta situação, se dissermos que o intervalo entre chegadas é de 10 segundos, teremos que rigorosamente a cada 10 segundos chega um novo cliente (Prado, 2006). Resumindo, quando se estudam filas, o ritmo de chegada é uma importante variável randômica. Para quantificar esta variável se usa a letra grega λ para significar ritmo médio de chegada e se usa IC para o intervalo médio entre chegadas. Assim, no exemplo acima temos: λ = 20 clientes por minuto e IC = 3 segundos. Existem situações em que o ritmo de chegada sofre variações durante o dia. Por exemplo, em um banco a chegada de clientes é mais intensa no período do almoço. • Processo de atendimento. A priori, os postos de atendimentos são formados por pessoas, instalações e equipamentos que devem operar harmonicamente para prestar um bom serviço. O processo de atendimento é também quantificado por uma importante variável randômica. Retornando ao exemplo do pedágio, ao observarmos um atendente em serviço, poderíamos constatar, por exemplo, que ele atende 6 veículos por minuto ou que gasta 10 segundos para atender um veículo. Tais valores são médios, e, para descrevê-los corretamente, o melhor é caracterizá-lo em uma distribuição de probabilidades. Aqui também será raro identificarmos um atendimento regular, ou seja, a existência de um único valor (sem variação) para a duração do atendimento (Prado, 2006). A letra grega µ é usada para significar o ritmo médio de atendimento, e se usa TA para tempo ou duração média do serviço ou atendimento, que é o tempo decorrido entre o início do atendimento até o seu término. Em geral, pressupõe-se que todos os atendentes possuem a mesma distribuição probabilística de tempo de atendimento, e a distribuição que se supõe com mais frequência na prática é a distribuição exponencial; outra também considerada é a distribuição Erlang (gama). Considerando o exemplo acima, temos: µ = 6 clientes/minuto, e TA = 10 segundos/cliente (Prado, 2006; Hillier; Lieberman, 2010). • Número de servidores. A maioria dos modelos elementares parte do pressuposto de uma instalação de atendimento com um atendente (o sistema mais simples) ou com um número finito de atendentes. • Disciplina da fila. A disciplina da fila se refere à ordem na qual integrantesda fila são selecionados para atendimento. Normalmente, para modelos de filas, adota-se a ordem de chegada, ou seja, “o primeiro a chegar é o primeiro a ser atendido” (em inglês diz-se FIFO: First In First Out). Outras disciplinas podem existir, tais como “último a chegar, primeiro a ser atendido” (em inglês diz-se LIFO: Last In First Out), serviço por ordem de prioridade, serviço randômico, prioridade de certas classes etc. (Prado, 2006; Andrade, 2009; Hillier; Lieberman, 2010). • Medidas de efetividade de um sistema. No estudo de um sistema, podemos determinar várias medidas de desempenho do sistema, como as apresentadas a seguir. A escolha do parâmetro depende do objetivo do estudo (Prado, 2006; Andrade, 2009). • Tamanho médio da fila. Basicamente, é o número médio de clientes existentes em uma fila, por uma unidade de tempo, e, via de regra, é a principal referência que consideramos para decidir qual fila escolheremos. • Tamanho máximo da fila (Prado, 2006). Quando os clientes devem esperar, alguma área de espera deve existir, por exemplo: cadeiras para os clientes a espera de caixa livre em um banco; caminhões embarcando/desembarcando mercadorias em um CD etc. • Tempo médio de espera na fila (Prado, 2006). Esperar em fila pode gerar irritação, pois cada cliente possui uma expectativa de tempo a ser gasto em uma fila. • Ocupação do posto de atendimento (Andrade, 2009). Pode-se verificar pelo percentual de tempo ocioso/ocupado se o posto de atendimento está superdimensionado ou subdimensionado. • Tempo médio no sistema (Andrade, 2009). É a média dos tempos gastos pelo cliente desde o instante de sua entrada até o momento de sua saída do sistema. TEMA 3 – A DINÂMICA DE UMA FILA A situação mais comum é que os clientes cheguem de forma aleatória na chegada, e no atendimento ocorre uma duração aleatória, pois cada cliente exige um tempo próprio para solucionar seus problemas. Exemplo: uma fila de caixa. Imagine-se, neste momento, sentado confortavelmente, observando a movimentação de clientes na padaria Le Petit Pain e avaliando a dinâmica que ocorre na formação da fila de clientes, que esperam a sua vez para serem atendidos pelo caixa da padaria (Prado, 2006, adaptado). Chegada. Em um período de meia hora, você verificou que chegaram ao sistema (caixa da padaria) 12 clientes e que os intervalos entre as chegadas dos clientes, a partir do instante zero, estão apresentados na Tabela 1. O valor médio dos intervalos de chegada dos clientes é de 2,5 minutos (que é a soma de todos os intervalos de chegada, dividido pelo número de clientes), e, portanto, o sistema acima (fila do caixa) funcionou com um ritmo médio de 24 chegadas por hora, já que chegaram 12 clientes em 30 minutos, ou seja, λ = 30 clientes por hora, e TA = 2 minutos. • Atendimento. A partir da observação do comportamento do sistema, foram obtidos os dados referentes a cada atendimento, conforme apresentados na Tabela 5.2. • O 1º cliente chegou à fila da padaria no início do 3º minuto, e seu atendimento durou 1 minuto (e, consequentemente, encerrou-se no final do 3º minuto); • O 5º cliente chegou à fila da padaria no início do 17º minuto, e seu atendimento durou 3 minutos (e, assim, encerrou-se no final do 19º minuto); • O 6º cliente chegou à fila da padaria simultaneamente com o 5º cliente, no 17º minuto, e, então, teve que esperar na fila até completar o atendimento do 5º cliente (3 minutos), o que ocorreu no final do 19º minuto. Então, no início do 20º minuto, foi iniciado o atendimento do 6º cliente, que se estendeu até o final do 21º minuto; • O 7º cliente chegou à fila da padaria no 18º minuto e encontrou o caixa ocupado (em atendimento ao 5º cliente). Além disso, o 6º cliente também estava na fila. O atendimento do 7º cliente se iniciou no 22º minuto e durou 1 minuto; • Além dos clientes de número 6 e 7, também os clientes de número 9, 10, 11 e 12 tiveram que esperar na fila; • O último cliente (12º) saiu do atendimento no final do 35º minuto. • A partir da Figura 2, obtiveram-se os tempos em fila de cada cliente, conforme apresentado na Tabela 3. Ou seja, a capacidade de atendimento (µ) é superior ao ritmo de chegada (λ). Mesmo assim, houve formação de fila. A formação de filas ocorre porque os clientes não chegam ao caixa em tempos fixos e regulares de 2,5 minutos, mas de forma randômica. Portanto, pode-se concluir que, quando µ > λ, provavelmente ocorrerá a geração de fila, e quando µ ≤ λ, certamente haverá fila. TEMA 4 – CONCEITOS BÁSICOS: UMA ABORDAGEM MATEMÁTICA Variáveis randômicas fundamentais (Prado, 2006). Consideremos o sistema de filas da Figura 3, que possui uma situação estável (os valores de 𝜆 e 𝜇 não se alteram), na qual clientes chegam, entram em fila e aguardam o atendimento por um dos “c” servidores existentes. Tema 05 – Modelos A notação de Kendall (Prado, 2006). A notação básica para descrever um modelo de fila emprega a seguinte notação: A/B/c/K/m/Z, onde • A indica o tipo de distribuição de probabilidade dos intervalos entre chegadas; • B indica o tipo de distribuição de probabilidade do tempo de serviço (atendimento); • c é a capacidade de atendimento ou quantidade de atendentes; • K é a capacidade máxima do sistema (número máximo de clientes no sistema); • m é o tamanho da população de onde se originam os clientes; • Z é a disciplina da fila. Esta notação recebeu o nome de notação Kendall como homenagem ao seu criador, David Kendall. Os diferentes tipos de distribuição de probabilidade são designados por A e B, conforme apresentado a seguir: • M: Exponencial Negativa (ou Markoviana ou Poisson) • Em: Erlang de estágio m; • Hm: hiper-exponencial de estágio m; • Determinística; • Geral. Por exemplo, seja o modelo M/E2/5/20/∞/randômico, o qual possui as seguintes características: • A = M, as chegadas são Markoviana (ou Poisson); • B = E2, o atendimento possui uma distribuição tipo Erlang de segundo grau; • c = 5, ou seja, são 5 atendentes; • K = 20, então a capacidade máxima do sistema igual a 20 clientes; • m = ∞, população infinita; • Z, a disciplina da fila possui atendimento randômico. Aula 6 Tema 01 – Simulação de eventos discretos: conceitos e aplicações “Simulação é a técnica de solução de um problema pela análise de um modelo que descreve o comportamento do sistema usando um computador digital” Aspectos históricos: com o surgimento do computador, na década de 50, a modelagem de filas pode ser analisada pelo ângulo da simulação, em que não mais se usam fórmulas matemáticas, mas apenas tenta-se imitar o funcionamento do sistema real. O que é simulação? De forma sucinta, Cremonese (2014) afirma que simulação é o processo de execução do modelo, entretanto Chwif e Medina (2006) apresentam diversas abordagens para responder essa pergunta, entre as quais se destaca a de que a simulação não é uma ferramenta estritamente de otimização, mas uma ferramenta de análise de cenários, em razão de não ser capaz de identificar uma solução ótima. Vantagens e desvantagens Banks et al. (2004) listam diversas vantagens e desvantagens da simulação, baseadas no texto de Pegden, Shannon e Sadowski (1995) e Banks (1984). Entre as vantagens listadas estão: novas políticas, novos procedimentos, regras de decisão, fluxo de informações, as quais podem ser exploradas sem interrupção das operações do sistema real; o tempo pode ser comprimido ou expandido a fim de acelerar ou retardar o fenômeno investigado; insights podem ser obtidos a respeito das interações das variáveis e da importância destas no desempenho do sistema; e a possibilidade de identificação de gargalos, que são retardos excessivos que ocorrem no processo. Áreas de aplicação: o campo de aplicação da simulação é grande. Basicamente podemos dividira área de aplicação em dois grandes setores: serviço e manufatura. Podem-se apresentar, entre outas, as seguintes aplicações da simulação (Chwif; Medina, 2006): • Aeroportos e portos: dimensionar o número de checks-ins necessários; verificar se o número de equipamentos de movimentação de materiais e homens é adequado para carga e descarga de navios. • Bancos: verificar se o número de caixas eletrônicos é adequado; estudar disposição de layout. • Cadeias logísticas: determinar a melhor política de estocagem, transporte e distribuição. • Hospitais: estudar os procedimentos em UTI e a ocupação dos centros cirúrgicos; dimensionar ambulância. • Restaurantes e cadeias de fast-food: verificar tempos de espera e de utilização de mesas ou a capacidade da cozinha. • Supermercados: definir a melhor política de abertura de caixas, a relação entre caixas rápidos e normais. • Sistemas de movimentação e armazenagem de materiais: esteiras transportadoras. • Problemas de programação de produção. • Linhas de montagem. Simulação de eventos discretos: simulação, como técnica de resolução de problemas, antecede em muitos anos o aparecimento de computadores digitais (Creonese, 2014), entretanto o aumento da capacidade computacional e a consequente redução do custo de operação, além dos avanços da metodologia de simulação, permitiu que a simulação se transformasse em uma ferramenta amplamente usada e aceita em pesquisa operacional e análise de sistema (Banks et al., 2004), empregando um computador para sua realização. TEMA 2 – METODOLOGIA Para a realização do estudo de simulação, é necessário conduzi-lo obedecendo etapas, ou seja, é necessário realizá-lo segundo uma metodologia. Felizmente é possível encontrar autores que apresentam metodologias adequadamente elaboradas para a condução de modelagem e simulação de eventos discretos. Tais metodologias têm por objetivo final a obtenção de modelos que realmente representem o sistema em estudo e, consequentemente, permitam a realização de estudos de cenários, ou seja, explorando alternativas. Tais alternativas são referenciadas genericamente na literatura como “...e se?”, por exemplo: e se aumentássemos a produtividade da máquina X? E se acrescêssemos mais uma empilhadeira? Etc Metodologias de simulação. Após avaliarmos um dado sistema e concluirmos que a modelagem e a simulação são a melhor proposta, devemos seguir certos passos, a fim de que o estudo de simulação seja bem-sucedido, ou seja, devemos obedecer uma metodologia de simulação (Chwif; Medina, 2006). TEMA 3 – ESTUDO DO PROBLEMA E MODELAGEM DE DADOS O estudo do problema é a primeira ação a ser executada na realização de um estudo de simulação. A princípio, sabemos qual é o problema ou, pelo menos, sabemos o que precisa ser aperfeiçoado. Entretanto, precisamos definir um objetivo e o que se deseja conhecer efetivamente, para podermos realizar a modelagem e a simulação. Estudo do problema: Pidd (2004) identifica a existência de uma fase inicial onde se busca compreender as questões relacionadas ao problema a ser simulado, obter referências capazes de serem manuseadas, além do nível de detalhamento apropriado para o uso e a implementação do modelo de simulação. Modelagem de dados: a completa implementação do modelo computacional ocorrerá se a etapa de modelagem de dados de entrada tiver sido executada. Portanto, é necessário realizar o levantamento de dados referentes ao sistema em estudo, sem o qual não há como dar prosseguimento à simulação. Neste processo de levantamento, devemos atentar para que o método de amostragem empregado seja bem desenvolvido e documentado (Pidd, 2004). TEMA 4 – MODELO CONCEITUAL: CONSTRUÇÃO Modelo conceitual: na etapa de modelagem da metodologia proposta por Pidd (2004), é elaborado o modelo conceitual, quando se procura capturar as características essenciais do sistema em estudo e que está sendo modelado e, no caso específico de simulação de eventos discretos, identificar as principais entidades do sistema para compreender a lógica das interações destas entidades. Exemplo de ACD: Clínica Médica (Chwif; Medina, 2006): Neste modelo existem 3 tipos de entidades: os pacientes, os médicos (3) e as recepcionistas (2). Os pacientes chegam com um tempo médio entre chegadas sucessivas de 3 minutos (exponencialmente distribuídos). Eles formam uma fila única na recepção para o preenchimento da ficha (exponencialmente distribuídos com média de 10 minutos) e depois são encaminhados para um dos três médicos. Caso todos os médicos estejam ocupados, o cliente permanece em fila aguardando o seu atendimento. Os médicos levam em média 20 minutos para o atendimento, segundo uma distribuição exponencial. No final da consulta, os pacientes retornam às recepcionistas para efetuarem o pagamento e agendarem as próximas consultas, o que demora um tempo uniformemente distribuído entre 1 e 4 minutos. • Passo 1: monte um ciclo para cada entidade. • Passo 2: identifique quais atividades têm duas ou mais entidades envolvidas. • Passo 3: monte o ACD completo. Solução: Para elaborarmos o ciclo de vida de cada entidade, é recomendável identificar inicialmente as atividades que ocorrem, onde ocorrem e as entidades que participam. O primeiro esboço pode não ser o correto, mas compreenda que é um processo que permite ajustes a qualquer momento e em qualquer fase, mesmo que já tenha sido executada, até que tenhamos um modelo que podemos considerar apropriado. Assim, elaboramos o seguinte quadro para nos auxiliar: TEMA 5 – VALIDAÇÃO, VERIFICAÇÃO E EXPERIMENTOS Validar um modelo conceitual é verificar se o modelo elaborado consegue apresentar a dinâmica dos eventos que ocorrem no sistema entre entidades e recursos. Verificar um modelo computacional é checar se o modelo conceitual está corretamente representado no software de simulação ou se não há erros na lógica de programação. Validar um modelo operacional é testar estatisticamente se os dados obtidos na simulação são compatíveis com os dados reais. Entretanto, por mais que sejam realizadas validações e verificações, “não é possível validar o modelo em 100% ou garantir que seja 100% válido”, bem como “não há como garantir que um modelo seja totalmente livre de bugs” (Chwif; Medina, 2006). Validação e Verificação: Chwif e Medina (2006) consideram “validação” e “verificação” como conceitos distintos entre si, pois enquanto a validação está relacionada com o que será modelado, a verificação está relacionada com o modo como o modelo computacional está sendo implementado (ou modelo implementado em algum simulador – software de simulação). A respeito de validação, podemos encontrar os seguintes conceitos/definições: • Validação é a comprovação de que a precisão do modelo computacional, no seu domínio de aplicação, está dentro de seu intervalo aceitável de precisão, que é a precisão requerida do modelo para sua aplicação pretendida (Sargent, 2014); • Validação é o processo que confronta o modelo conceitual com o sistema do mundo real (Chwif; Medina, 2006); • A validação do modelo conceitual ocorre após se assegurar que as teorias e os pressupostos básicos do modelo conceitual estão corretos; que o modelo representando o problema, a estrutura do modelo, a lógica e as relações causais e matemáticas são "razoáveis" para a finalidade proposta do modelo (Sargent, 2014); • A validação operacional é a conferência se os resultados obtidos nos experimentos (dados obtidos a partir da simulação) são compatíveis com o sistema real simulado (Chwif; Medina, 2006); • A validação operacional é a confirmação de que o comportamento dos dados de saída do modelo possui a precisão requerida que atende o propósito do modelo, no domínio de aplicabilidade pretendido para ele (Sargent, 2014). A respeito de verificação, podemos encontrar os seguintes conceitos/definições:• Verificação é a garantia de que o programa de computador do modelo computacional e sua implementação estão corretos (Sargent, 2014); • A verificação do modelo computacional é definida como a garantia de que a programação no computador e a implementação do modelo conceitual estão corretas (Sargent, 2014). Tal verificação são recomendações para o uso de linguagens de programação de alto nível e de simulação, entretanto nada esclarece a respeito do uso de softwares de simulação, os quais não permitem acesso aos códigos-fonte do programa; • A verificação do modelo computacional é realizar um exame que confirme se o modelo computacional se comporta de acordo com o modelo conceitual. Para isso, é recomendável gerar alguns resultados, bem como observar se o modelo é uma representação precisa da realidade, conforme objetivo do estudo (Chwif; Medina, 2006) Modelo operacional: o modelo conceitual do exemplo da clínica médica, desenvolvido no tema anterior, foi implementado como modelo computacional no ambiente do software de simulação Simul8, conforme pode ser verificado na Figura 10. Neste modelo computacional, a entidade são os pacientes, e os recursos são as recepcionistas e os médicos. Cada um deles fica vinculado às atividades, conforme previsto no modelo conceitual. Experimentos: após a validação do modelo computacional, podemos, além de avaliar a situação vigente, realizar experimentos com diferentes cenários, ou seja, explorar possibilidades do tipo, “e se?”. Consequentemente, ao realizarmos experimentos, desejamos obter um benefício, que pode ser materializado em um produto tangível como resultado destes experimentos, tal como um documento, em que se registram conclusões e recomendações de ações que deveriam ou não deveriam ser implementadas a partir dos resultados obtidos (Pidd, 2004; Chwif; Medina, 2006).
Compartilhar