Pesquisa Operacional 1 Atualização: 22/02/2008

Tamanho: px
Começar a partir da página:

Download "Pesquisa Operacional 1 Atualização: 22/02/2008"

Transcrição

1 Pesquisa Operacional Atualização: 22/2/28 Unidade : Introdução à Modelagem Matemática Tópicos e 2: Introdução à Pesquisa Operacional Prof. Daniel Caetano Objetivo: Apresentar o que é Pesquisa Operacional e introduzí-la no âmbito dos Sistemas de Informação. Bibliografia: - MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. São Paulo: Ed. Thomson-Pioneira, ARENALES, M; ARMENTANO, V; MORABITO, R; YANASSE, H. Pesquisa Operacional. Rio de Janeiro: Editora Campus, 26 Introdução Embora o termo Pesquisa Operacional seja um termo novo para a maioria dos alunos do curso de graduação, a maioria das pessoas já "aplicou" Pesquisa Operacional em suas vidas, embora não de uma forma explícita ou exata. Qualquer pessoa que se desloque por uma cidade qualquer, seja a pé, de transporte público ou privado, já fez o cálculo mental para identificar o menor caminho para ir de um determinado ponto ao outro da cidade. O objetivo deste "cálculo mental" foi o de minimizar a distância percorrida, ou minimizar o tempo gasto, ou minimizar o combustível consumido, ou ainda evitar grandes ladeiras... e este é exatamente o objetivo da Pesquisa Operacional: estudar um problema ou atividade operacional (do dia a dia) e determinar uma forma de resolver este problema ou realizar esta atividade de maneira a maximizar um ganho ou minimizar uma perda, sejam elas quais forem. É claro que o problema de deslocamento não é o único na Pesquisa Operacional: há problemas relacionados a alocamentos de atividades a equipamentos ou equipamentos a atividades, rotas de transporte, organização de estoque, definição de carteiras de investimento, elaboração de cardápios equilibrados... e uma infinidade de outros problemas complexos. Em geral são problemas de grande monta, como calcular a distribuição de todas as cartas do correio o mais rápido possível e com o mínimo de carteiros ou ainda definir quais as rotas que os caminhões devem seguir, pelo país todo, para entregar refrigerante consumindo o mínimo de recursos. Pelo seu tamanho e número de possibilidades, torna-se impossível resolver estes problemas manualmente e, freqüentemente as empresas contratam equipes para produzir sistemas de informação que lhes calcule tais resultados. Resumidamente, a Pesquisa Operacional é área do conhecimento que estuda problemas de como melhorar a condução e coordenação de algumas operações dentro de uma organização. Em outras palavras, Pesquisa Operacional (ou PO) é a aplicação de métodos 28_SI_-_PesquisaOperacional_I_-_o27

2 Pesquisa Operacional 2 Atualização: 22/2/28 analíticos para auxiliar os executivos a tomar melhores decisões. Tanto quanto possível, a PO busca obter a melhor solução possível, chamada "solução ótima" para um dado problema. Chamamos isso de "otimizar" uma operação. De forma simplificada, otimizar significa encontrar uma combinação de fatores de operação que nos permite o melhor desempenho possível. Em outras palavras, se vamos transportar carga e podemos fazer isso de diversas formas, otimizar é determinar todos as características do transporte que nos trará um menor custo ou tempo, por exemplo. Da mesma forma, se queremos transportar um certo conjunto de dados por uma rede como a internet, onde temos diversos caminhos pelos quais uma informação pode ser transmitida, otimizar significa determinar o modo de transmissão e o caminho da transmissão de forma que a comunicação seja o mais rápida possível.. Breve Histórico da Pesquisa Operacional O início da Pesquisa Operacional data do início do século XX, tendo o termo Pesquisa Operacional sido cunhado no fim da década de 93, para descrever a atuação de cientistas na análise de problemas militares. Seu uso foi muito mais intenso na Segunda Guerra Mundial, devido à necessidade de alocar com urgência e da melhor forma possível diversos recursos escassos como munição e alimento. Terminadas as grandes guerras, os conhecimentos adquiridos acabaram por ser estendidos para organizações civis, e o uso da Pesquisa Operacional cresceu muito até meados da década de 97. Nas guerras mais recentes, como as do Iraque, também a Pesquisa Operacional se motrou presente nas estratégias de ocupação e ataque. Figura - Avanço das tropas americanas no Iraque (fonte: Reuters) 28_SI_-_PesquisaOperacional_I_-_o27 2

3 Pesquisa Operacional 3 Atualização: 22/2/28 Ainda na época da Segunda Guerra, surgiram sociedades profissionais de cientistas da área de Pesquisa Operacional. Uma delas é a Operational Research Society ( ) e outra é o Institute for Operations Reasearch and the Management Sciences - Informs ( ). No Brasil existe a Sociedade Brasileira de Pesquisa Operacional - Sobrapo ( ). 2. Conteúdo do Curso (Módulo ) O processo todo de solução de um problema por PO pode ser sintetizado em alguns passos: ) Definição da situação problema, ou seja, determinar quais são os objetivos desejados, quais são as restrições às soluções, quanto tempo existe para que o problema seja resolvido... e assim por diante. Neste passo informações genéricas e dispersas precisam ser transformadas em informações estruturadas e precisas. 2) Formulação de um modelo quantitativo, ou seja, formalizar todas as informações estruturadas no passo anterior em termos matemáticos, representando as relações entre variáveis dos problemas através de símbolos matemáticos. Na Programação Linear, uma das técnicas usadas pela PO, as relações são expressas por equações e inequações. 3) Resolução do Modelo, ou seja, manipular os valores das variáveis até que se obtenha a melhor solução possível, em termos do objetivo identificado no primeiro passo. É importante lembrar que algumas variáveis podem ser manipuladas livremente. Outras, entretanto, serão calculadas como resultado do processo. Estas últimas são chamadas variáveis de decisão. 4) Consideração de Fatores Imponderáveis, ou seja, analisar a solução encontrada e verificar se ela precisa ser modificada para incorporar fatores externos que não tenham sido considerados no modelo matemático. 5) Implementação da solução, ou seja, constatado que a solução é possível na prática, parte-se para a implementação, que deve ter sido projetada para uma transição o mais suave possível. Neste curso, serão apresentados alguns problemas clássicos de PO e seus modelos decorrentes, apresentando uma introdução aos 3 primeiros destes passos, ficando um aprofundamento a cargo do aluno. Os passos 4 e 5 são deixados para um curso de pós graduação. Apesar da ênfase às modelagens e aos métodos analíticos de solução, isso não deve ocultar, de forma alguma, o objetivo fundamental de se estudar Pesquisa Operacional, que é o de encontrar as melhors soluções possíveis para problemas práticos. 28_SI_-_PesquisaOperacional_I_-_o27 3

4 Pesquisa Operacional 4 Atualização: 22/2/ Etapa - Elaboração de Modelos Matemáticos Como dito anteriormente, na Pesquisa Operacional buscamos a configuração ótima de um sistema. Entretanto, este ótimo só pode ser obtido a partir de um modelo matemático e, se o modelo não for corretamente desenvolvido, a solução encontrada pode não ser viável na realidade. Quanto melhor o modelo matemático, menor é a chance da solução ótima ser inviável na prática. Por esta razão, pelo fato de a modelagem ser a parte que requer maior raciocínio e por ser a única etapa da resolução de um problema de PO que não pode ser feita com o auxílio de um computador, este curso dará uma grande ênfase na modelagem matemática. Trataremos apenas de problemas lineares Etapa 2 - Método Simplex O Método Simplex é a forma mais geral de se resolver um problema de Programação Linear, que são os problemas mais clássicos e básicos da Pesquisa Operacional. O Método Simplex consiste de uma seqüência de operações sistemáticas que, após o número suficiente de iterações, nos apresenta a solução ótima de um problema de Programação Linear. Problemas deste tipo podem ser "qual é o caminho mais curto de um ponto a outro?" ou "De qual maneira eu posso aplicar este meu recurso para obter maior lucro?". Pode ainda ser "Quantas unidades de cada tipo de produto eu produzo para maior lucro?" ou "Quais seriam os cardápios não repetidos que satisfariam todas as necessidades diárias de nutrientes e agradassem ao meu paladar?" e uma infinidade de outros Etapa 3 - O Algoritmo Húngaro Como será possível observar pelo método, em alguns tipos de problemas (grandes) o método Simplex pode ter desempenho pouco satisfatório; Isso ocorre porque o Simplex é um método genérico, que não tira proveito de nenhuma característica específica de um dado tipo de problema. Assim, para estes casos em que mesmo um computador rápido pode levar dias, meses ou até anos (...) para encontrar uma solução ótima pelo Simplex, muitas vezes são propostas metodologias de cálculo específicas para encontrar uma solução ótima mais rapidamente. Como um exemplo deste tipo de algoritmo, será apresentado o Algoritmo Húngaro, usado em problemas de atribuição e designação, que classicamente é apresentado como um problema de atribuição de equipes diferentes a projetos distintos, para minimizar o tempo total de conclusão dos projetos (horas pagas). 28_SI_-_PesquisaOperacional_I_-_o27 4

5 Pesquisa Operacional 5 Atualização: 22/2/28 Entretanto, o Problema de Atribuição é muito comum além desta esfera mais clássica. Em computação distribuída, por exemplo, o computador responsável pelo controle de execução das aplicações deve decidir qual é o outro computador que irá processar uma informação ou executar um dado software. Como cada equipamento pode ter recursos distintos (velocidade de processamento, memória, dispositivos, etc), trata-se de um problema de atribuição que o Sistema Operacional terá de resolver. Figura 2 - Qual programa será executado em qual computador? Hoje também estão se tornando comuns os computadores com dois processadores ou mais (Dual Core, como Core2 Duo, Athlon X2, etc) e isso traz uma tarefa ao Sistema Operacional, antes desnecessária: escolher qual dos processadores (neste caso, todos iguais) irá executar um dado thread (parte de um programa). Essa atribuição vai levar em conta qual a carga de cada processador, quais recursos cada um deles está usando, e assim por diante. Figura 3 - Qual tarefa será atribuída a cada processador? 3. Bibliografia ARENALES, M; ARMENTANO, V; MORABITO, R; YANASSE, H. Pesquisa Operacional. Rio de Janeiro: Editora Campus, 26 MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. São Paulo: Ed. Thomson-Pioneira, _SI_-_PesquisaOperacional_I_-_o27 5

6 Pesquisa Operacional Atualização: 22/2/28 Unidade : Introdução à Modelagem Matemática Tópico 3a a 3e: Técnicas de Modelagem Matemática Prof. Daniel Caetano Objetivo: Introduzir os conceitos de modelagem matemática. Bibliografia: - MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, 27. Introdução Como visto na aula anteior, a solução de problemas de Pesquisa Operacional, em específico os problemas da Programação Linear, podem ser resolvidos por um processo que pode ser sintetizado da seguinte forma: ) Definição da situação problema, ou seja, determinar quais são os objetivos desejados, quais são as restrições às soluções, quanto tempo existe para que o problema seja resolvido... e assim por diante. Neste passo informações genéricas e dispersas precisam ser transformadas em informações estruturadas e precisas. 2) Formulação de um modelo quantitativo, ou seja, formalizar todas as informações estruturadas no passo anterior em termos matemáticos, representando as relações entre variáveis dos problemas através de símbolos matemáticos. Na Programação Linear, uma das técnicas usadas pela PO, as relações são expressas por equações e inequações. 3) Resolução do Modelo, ou seja, manipular os valores das variáveis até que se obtenha a melhor solução possível, em termos do objetivo identificado no primeiro passo. É importante lembrar que algumas variáveis podem ser manipuladas livremente. Outras, entretanto, serão calculadas como resultado do processo. Estas últimas são chamadas variáveis de decisão. 4) Consideração de Fatores Imponderáveis, ou seja, analisar a solução encontrada e verificar se ela precisa ser modificada para incorporar fatores externos que não tenham sido considerados no modelo matemático. 5) Implementação da solução, ou seja, constatado que a solução é possível na prática, parte-se para a implementação, que deve ter sido projetada para uma transição o mais suave possível. Nestas aulas e nas seguintes serão focados os passos e 2. 28_SI_-_PesquisaOperacional_I_-_o27 6

7 Pesquisa Operacional 2 Atualização: 22/2/28. O Uso de Modelos na Pesquisa Operacional Tanto quanto possível, a PO busca obter a melhor solução possível, chamada "solução ótima" para um dado problema. Este tipo de resultado perfeito só é possível através do uso da matemática e, portanto, existe a necessidade de transformar um problema real em um modelo matemático teórico que possa ser resolvido. A solução ótima do modelo matemático teórico será aplicável à realidade se e somente se o modelo matemático descrever adequadamente o problema real. Se o modelo matemático não descrever o problema corretamente, haverá grandes chances de que a solução encontrada não seja possível na realidade ou, mais freqüentemente, que ela não seja, de fato, a melhor solução. Por esta razão, a modelagem matemática tem uma grande importância no contexto da Pesquisa Operacional e seu aprendizado é baseado na prática. Neste curso serão apresentados problemas clássicos de PO e seus modelos decorrentes, os quais serão enfatizados. Ainda que uma parte do curso seja voltada a métodos analíticos de solução, isso não pode, de forma alguma, ocultar o objetivo fundamental de se estudar PO, que é o de descobrir soluções para problemas práticos... Modelagem Matemática para Programação Linear Os modelos matemáticos mais populares são aqueles, provavelmente, denominados Modelos de Programação Linear. Estes modelos servem para representar problemas em que a relação entre as variáveis destes problemas possam ser expressas na forma de equações ou inequações lineares. As características fundamentais de um modelo deste tipo são: ) Existe uma combinação de variáveis que deve ser maximizada ou minimizada, como por exemplo o custo de uma operação industrial ou rentabilidade média de ações. A esta combinação de variáveis dá-se o nome de função objetivo. Por exemplo: 7x + 2y, onde x e y são variáveis de interesse. As variáveis que aparecem na função objetivo são as chamadas variáveis de decisão. 2) A estrutura do problema é tal que existe uma limitação de recursos, não sendo possível ter um lucro tão grande quanto se queira nem um custo tão pequeno quanto se queira. Estas limitações de recursos são expressas como equações ou inequações matemáticas e são chamadas restrições. Assim, sempre que existir um problema em que se deseja definir qual é a melhor configuração de operação, ou seja, aquela que traz maior lucro ou reduz os custos, e for possível representar estes objetivo e restrições através de equações ou inequações lineares, é possível modelá-lo como um problema de Programação Linear para posterior resolução. 28_SI_-_PesquisaOperacional_I_-_o27 7

8 Pesquisa Operacional 3 Atualização: 22/2/28.2. Primeiro Exemplo de Modelagem A primeira modelagem que será vista é absolutamente simples, não representado sequer um problema real, mas será a base para a introdução de alguns conceitos-chave. Será apresentado um problema e em seguida a modelagem do mesmo, em passos. Problema: A esteira de uma seção de uma fábrica possui 7 metros. Sabendo que cada peça ocupa um espaço de 3,5 metros, maximize o número de peças que serão colocadas na esteira. Modelagem: O primeiro passo, que auxilia muito na solução, é fazer um pequeno quadro que resuma as informações do problema. Por exemplo: Tamanho Esteira 7 Tamanho Peça 3.5 Passo : Identificar as Variáveis Neste problema, o objetivo é claro: colocar o máximo possível de peças na esteira. Defina-se, então, como x o número de peças a serem colocadas na esteira. Passo 2: Identificar a Função Objetivo Pelo enunciado, o que se pede busca é maximizar o número de peças na esteira, não é? Então pode-se dizer que a função objetivo do problema é "maximizar o número de peças na esteira", o que pode ser escrito da seguinte forma: F.O.: [MAX] x Entretanto, é possível colocar quantas peças se desejar na esteira? NÃO! E para tornar isso claro matematicamente, é preciso indicar as restrições, que nada mais são que as limitações da solução do problema. Passo 3: Identificar as Restrições A principal restrição neste problema refere-se ao comprimento da esteira. É possível dizer que o comprimento total das peças colocadas em fila não deve ser maior que 7 metros (que é o tamanho da esteira). É possível indicar isto da seguinte forma: Comprimento Total das Peças ü 7 Ou, abreviadamente: C TP ü 7 28_SI_-_PesquisaOperacional_I_-_o27 8

9 Pesquisa Operacional 4 Atualização: 22/2/28 Entretanto, C TP é um valor que precisa estar relacionado com x, que representa o número de peças. É necessário encontrar esta relação, e neste caso isso é possível. O raciocínio é bastante simples. Como cada peça mede 3,5 metros, pode-se escrever uma equação que diga "o comprimento total de x peças" que, em outras palavras, será exatamente o C TP. Obter essa equação é fácil. Observe: - Se tivermos peça, o comprimento total será * 3,5; - Se tivermos 2 peças, o comprimento total será 2 * 3,5; - Se tivermos 3 peças, o comprimento total será 3 * 3,5; Assim... - Se tivermos x peças, o comprimento total será x * 3,5; Pode-se escrever, então: Comprimento total ocupado pelas peças = 3,5 * x Ou ainda... C TP = 3,5 * x Como se sabe que C TP ü 7, é possível escrever: 3,5*x ü 7 E esta é a restrição do problema. Assim, é possível apresentar este modelo matemático completo da seguinte forma: F.O.: [MAX] x S.A.: 3,5*x ü 7 Note que "F.O." significa "Função Objetivo" e "S.A." significa "Sujeito À". A sigla "F.O." normalmente precede a função objetivo e a sigla "S.A." é indicada na linha em que começam as restrições (que podem ser várias). Uma vez que o modelo matemático esteja feito, o passo seguinte é encontrar sua solução. Para a maioria dos problemas, a solução não é simples. Mas para um problema tão pequeno, é possível encontrá-la apenas por inspeção. Qual é o valor máximo que x pode receber e que a restrição apresentada não será ferida? Pense!.3. Parâmetros x Variáveis de Decisão: Uma Primeira Noção Independente do problema, antes de partir para a geração de um modelo, é importante ressaltar a diferença entre Parâmetros e Variáveis de Decisão. Parâmetros são valores que são fornecidos e nos quais não se pode mexer; devem permanecer como estão. Variáveis de decisão são valores que podem ser alterados e, em geral, são valores que se deseja 28_SI_-_PesquisaOperacional_I_-_o27 9

10 Pesquisa Operacional 5 Atualização: 22/2/28 determinar. As variáveis de decisão normalmente são expressas algebricamente, como x, x 2, x 3... observe que é comum o uso de índices (os pequenos números ao lado da letra). Estes índices são usados para indicar diferentes instâncias de um mesmo tipo de variável. Por exemplo: pode-se dizer que x é uma variável que indica quanto combustível foi abastecido e o índice indica em que posto este abastecimento ocorreu. Assim, segundo o exemplo acima, é possível dizer que x é a quantidade de combustível que foi abastecida no posto, x 2 é a quantidade que foi abastecida no posto 2, x 3 é a quantidade que foi abastecida no posto 3... e assim por diante. É importante ressaltar que os índices têm um papel importante na especificação do modelo e não há um significado pré-definido para os mesmos. É tarefa do pesquisador descrever o que os índices significam..4. Uma Modelagem mais Completa? Observando o exemplo acima, uma relação direta pode ser feita com o problema clássico de minimizar o gasto com combustível em uma dada viagem. Considere que o caminho a percorrer consome em torno de 5 litros de combustível e na estrada existem três postos de combustível: p, p 2 e p 3. Adicionalmente, é sabido que cada um dos postos tem um custo (preço) de combustível diferente: c, c 2 e c 3. O que se deseja saber então é: Quanto se deve abastecer no posto (p ), quanto no posto 2 (p 2 ) e quanto no posto 3 (p 3 ) para gastar o mínimo possível? Bem, se o desejo é saber quanto será abastecido em cada posto, é porque pretende-se tomar uma decisão que envolve estes valores. Por esta razão estas são chamadas de variávies de decisão. Seguindo a definição feita anteriormente, em que x é uma variável que indica quanto combustível foi abastecido e o índice indica em que posto este abastecimento ocorreu, é possível dizer que x indica o quanto será abastecido no posto, x 2 indica o quanto será abastecido no posto 2 e x 3 indica o quanto será abastecido no posto 3. Assim, x, x 2 e x 3 são as variáveis de decisão deste problema e os valores de x, x 2 e x 3 vão expressar o número de litros de combustível abastecido em cada posto. Se não houver a necessidade de abastecer em um dado posto, a variável de decisão que se refere à quantida de combustível abastecida naquele posto terá valor igual a zero. Por exemplo: se a melhor opção for não abastecer no posto 2, o valor de x 2 será (x 2 = ). Com isto em mente, é possível dizer que o valor gasto no posto será o quanto foi abastecido no posto, multiplicado pelo preço do litro de combustível no posto, ou seja: x * p Afinal, se for abastecido litro, será pago vez o preço de um litro. Se for abastecido 2 litros, será pago 2 vezes o preço do litro e assim por diante. Da mesma forma, se nada for abastecido, x valerá zero e nada será pago no posto. 28_SI_-_PesquisaOperacional_I_-_o27

11 Pesquisa Operacional 6 Atualização: 22/2/28 Seguindo o mesmo raciocínio, é possível dizer que o custo no posto 2 será x 2 * p 2 e que no posto 3 o custo será x 3 * p 3. Chamando os custos em cada posto de c, c 2 e c 3, é possível reescrever os custos da seguinte forma: c = x * p c 2 = x 2 * p 2 c 3 = x 3 * p 3 O custo total de abastecimento será c = c + c 2 + c 3, o que pode ser descrito da seguinte forma:... c = x * p + x 2 * p 2 + x 3 * p 3 Como o desejo é gastar o mínimo possível, ou seja, ter o menor custo possível, é possível dizer que se deseja minimizar este custo. A maneira formal de dizer isso é: [MIN] x * p + x 2 * p 2 + x 3 * p 3 Esta função, que descreve o que se deseja do problema é, como dito anteriormente, chamada de função objetivo e, neste caso, x, x 2 e x 3 são variáveis de decisão e p, p 2 e p 3 são os parâmetros Restrições Na seção anterior, foi representado o desejo de gastar o mínimo possível. Entretanto, a solução para o problema apresentado é "fique em casa, não abasteça nada e não gaste nada", já que em lugar algum foi descrito que sair de casa é obrigatório. Para que o problema representado se assemelhe mais com as necessidades, é preciso adicionar mais informações ao problema. Tais informações são acrescentadas na forma de restrições. Uma destas restrições poderia ser, por exemplo: "Não é possível 'ficar em casa'". Entretanto, é preciso indicar este tipo de restrição usando as variáveis de decisão que já estão sendo usadas. No caso, a informação que pode ser usada é um consumo conhecido da viagem, que seria, por exemplo, de 5 litros de combustível. Como acrescentar esta informação? Bem, se vai ser abastecido x litros no posto, x 2 litros no posto 2 e x 3 litros no posto 3, é possível dizer que o total de litros abastecido é:... total abastecido = x + x 2 + x 3 28_SI_-_PesquisaOperacional_I_-_o27

12 Pesquisa Operacional 7 Atualização: 22/2/28 Ora, o total abastecido precisa ser um valor maior ou igual aos 5 litros necessários para a viagem; ou seja, formalmente:... x + x 2 + x 3 5 Com isso, é possível apresentar um primeiro modelo matemático muito simplificado: Ou ainda: [MIN] x * p + x 2 * p 2 + x 3 * p 3 Sujeito à: x + x 2 + x [MIN] x * p + x 2 * p 2 + x 3 * p 3 S.A. x + x 2 + x Condição de Não-Negatividade Em programação linear, uma restrição sempre existente (mas implícita) é a de que as variáveis de decisão não podem assumir valores negativos. Isso faz todo o sentido do mundo, uma vez que as variáveis de decisão praticamente sempre indicam quantidades... e quantidades negativas não fazem sentido. Por esta razão, sempre é posível incluir ao modelo restrições deste tipo: x x 2 x 3 Ficando assim, o modelo final: [MIN] x * p + x 2 * p 2 + x 3 * p 3 S.A. x + x 2 + x 3 5 x x 2 x 3 28_SI_-_PesquisaOperacional_I_-_o27 2

13 Pesquisa Operacional 8 Atualização: 22/2/28 2. Modelagem Exemplo Problema (extraído de MOREIRA, 26): Uma fábrica produz dois produtos, A e B. Cada um deve ser processado por duas máquinas, M e M 2. Devido à programação de outros produtos que também usam estas máquinas, estão disponíveis para os produtos A e B apenas 24 horas da máquina M e 6 horas da máquina M 2. Para produzir uma unidade do produto A, são necessárias 4 horas em cada uma das máquinas e para produzir uma unidade do produto B, são necessárias 6 horas em M e 2 horas em M 2. Cada unidade de A vendida gera um lucro de R$ 8, e cada unidade de B vendida gera um lucro de R$ 6,. Existe uma previsão de demanda máxima de 3 unidades para B, mas nenhuma restrição de demanda para A. Deseja-se saber: quanto produzir de cada produto para maximizar o lucro? Solução O primeiro passo que auxilia muito na solução, é fazer um pequeno quadro de informações. Por exemplo: Produto A B Horas Disp. Horas de M Horas dem Demanda Max Lucro Unitário Neste problema, o objetivo é claro: maximizar o lucro. Assim, a função objetivo será de maximização. Mas como se pode descrever esta função objetivo em termos dos dados apresentados? Ora, é sabido o lucro gerado por cada unidade de A e B: se uma unidade de A for vendida, o lucro será de R$ 8,. Se uma unidade de B for vendida, o lucro será de R$ 6,. Consideradno o número de unidades de A vendidas como x A e o número de unidades de B vendidas como x B, é possível dizer que: Lucro pelas vendas de A = 8 * x A Lucro pelas vendas de B = 6 * x B Lucro Total = 8 * x A + 6 * x B Ora, então essa é a função objetivo, já que se deseja maximizar este lucro... E x A e x B são as variáveis de decisão. A função objetivo pode ser formalizada como: Função Objetivo: [MAX] 8 * x A + 6 * x B 28_SI_-_PesquisaOperacional_I_-_o27 3

14 Pesquisa Operacional 9 Atualização: 22/2/28 Esta é a primeira parte do modelo, mas ele ainda está longe de estar completo... Afinal, na forma com que foi representado, pode-se definir um lucro infinito... e na prática isso não ocorre! Como contornar isso? Impondo as limitações que o próprio problema apresenta: - Limitação de Horas de M : 24 - Limitação de Horas de M 2 : 6 - Limitação de Demanda para B : 3 Como escrever isso matematicamente? Deve-se estudar caso a caso. Limitação de Horas de M : 24 A máquina M terá de ser compartilhada pela produção de A e B, uma vez que ambos a utilizam. Sabe-se que cada unidade de A produzida consome 4 horas de M e cada unidade de B produzida consome 6 horas de M. Ora, se o número de unidades produzidas de A (x A ) for multiplicado por 4, o resultado será o número de horas de M que é gasto com produção de A e multiplicando o número de unidades produzidas de B (x B ) por 6, o resultado será o número de horas de M que é gasto com a produção de B: Tempo de M gasto com produção de A : Tempo de M gasto com produção de B : Tempo total de M : 4 * x A 6 * x B 4 * x A + 6 * x B Mas a limitação de horas de M é 24 horas, ou seja, é possível usar M por qualquer número de horas, desde que ele não exceda 24 horas. Isso pode ser escrito da seguinte forma: Tempo total de M = 4 * x A + 6 * x B Tempo total de M ü 24 Juntando ambos... 4 * x A + 6 * x B ü 24 <= Restrição do número de horas de M Limitação de Horas de M 2 : 6 A máquina M 2 também terá de ser compartilhada pela produção de A e B. Sabe-se que cada unidade de A produzida consome 4 horas de M 2 e cada unidade de B produzida consome 2 horas de M 2. Ora, se o número de unidades produzidas de A (x A ) for multiplicado por 4, o resultado será o número de horas de M 2 que é gasto com produção de A e multiplicando o número de unidades produzidas de B (x B ) por 2, o resultado será o número de horas de M 2 que é gasto com a produção de B: 28_SI_-_PesquisaOperacional_I_-_o27 4

15 Pesquisa Operacional Atualização: 22/2/28 Tempo de M 2 gasto com produção de A : Tempo de M 2 gasto com produção de B : Tempo total de M 2 : 4 * x A 2 * x B 4 * x A + 2 * x B Mas a limitação de horas de M 2 é 6 horas, ou seja, é possível usar M 2 por qualquer número de horas, desde que ele não exceda 6 horas. Isto pode ser escrito da seguinte forma: Tempo total de M 2 = 4 * x A + 2 * x B Tempo total de M 2 ü 6 Juntando ambos... 4 * x A + 2 * x B ü 6 <= Restrição do número de horas de M 2 Limitação de Demanda para B : 3 Em tese, pode-se produzir qualquer número de unidades de A e B, desde que sejam respeitados os limites de horas disponíveis em cada máquina. Entretanto, foi fornecida uma informação adicional: a de que caso sejam produzidos mais do que 3 unidades de B, as que excederem este valor não serão vendidas. Unidades não vendidas significam custo para produzir e nenhum lucro. Assim, não é adequado permitir que isso ocorra, pois isso faria com que o lucro da empresa fosse menor. Para evitar este problema, basta adicionar uma limitação a mais, indicando que qualquer número de unidades produzidas de B (x B ) é adequado, desde que não exceda 3. Matematicamente: x B ü 3 <= Restrição de Demanda para B Condição de Não-Negatividade Em programação linear, uma restrição sempre implícita é a de que as variáveis de decisão não podem assumir valores negativos. Isso faz todo o sentido do mundo, uma vez que as variáveis de decisão praticamente sempre indicam quantidades... e quantidades negativas não fazem sentido. Por esta razão, serão incluídas duas restrições ao modelo: x A ; x B <= Restrições de não-negatividade 28_SI_-_PesquisaOperacional_I_-_o27 5

16 Pesquisa Operacional Atualização: 22/2/28 Modelo Final O resultado da junção da função objetivo com todas as restrições é o modelo matemático final para o problema: Função Objetivo: [MAX] 8 * x A + 6 * x B Restrições: 4 * x A + 6 * x B ü 24 <= Restrição do número de horas de M 4 * x A + 2 * x B ü 6 <= Restrição do número de horas de M 2 x B ü 3 <= Restrição de Demanda para B x A ; x B <= Restrições de não-negatividade Onde as variáveis de decisão são x A e x B. 3. Exercícios L ) Um navio tem um limite de transporte de 3m 3 de carga ou 5t de carga. Ele será usado para transportar dois tipos de carga: a carga A é transportada em unidades de 6m3, que pesam t. A carga B é transportada em unidades de 25m 3, e pesam 8t. O lucro pelo transporte de cada unidade de A é R$ 5,, e o lucro pelo transporte de cada unidade de B é de R$ 72,. Deseja-se o modelo de programação linear com que se possa obter qual é a melhor composição de carga para a obtenção de máximo lucro. 2) Um computador () tem um limite de 4GB (considerado GB = MB) de memória e seu usuário pode exectuar até executar até 72 horas de processamento por semana. Todos os dados que serão processados nestas 72 horas da semana precisam ser carregados ao mesmo tempo. Isso significa que tudo tem que caber nos 4GB de memória. Um cliente lhe muitos pacotes de dados, de quatro tipos diferentes: a) pacotes que exigem 5 MB, hora de processamento cada um, pagando R$, por unidade processada. b) 25 pacotes que exigem MB, 7 horas de processamento cada um, pagando R$ 5, por unidade processada. c) 3 pacotes que exigem 5 MB, 4 horas de processamento cada um, pagando R$ 35, por unidade processada. d) 7 pacotes que exigem 35 MB, horas de processamento cada um, pagando R$ 65, por unidade processada. Deseja-e o modelo de programação linear para definir quais pacotes serão processados para que o maior lucro seja obtido. 3) (livro) Uma empresa do ramo de confecções está considerando quanto deve produzir de seus dois modelos de terno, denominados Executivo Master e Caibem, de forma a maximizar o lucro. É impossível produzir quanto se queira de cada um, pois existem 28_SI_-_PesquisaOperacional_I_-_o27 6

17 Pesquisa Operacional 2 Atualização: 22/2/28 limitações nas horas disponíveis para costura em máquina e acabamento manual. Para a costura, existe um máximo de 8 horas-máquina disponíveis e para o acabamento existe um máximo de 24 homens-hora. Em termos de lucro unitário e produção, os dois modelos de terno apresentam as seguintes características: a) Executivo Master - Lucro unitário: R$ 2, - horas-máquina de costura por unidade: 2 - homens-hora de acabamento por unidade: 2 b) Caibem - Lucro unitário: R$ 7, - horas-máquina de costura por unidade: - homens-hora de acabamento por unidade: 4 Formule o problema como um modelo de programação linear. 4. Bibliografia MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, _SI_-_PesquisaOperacional_I_-_o27 7

18 Pesquisa Operacional Atualização: 7/3/28 Unidade : Introdução à Modelagem Matemática Tópico 4: Solução Gráfica de Problemas Prof. Daniel Caetano Objetivo: Apresentar graficamente a solução de um problema de programação linear e a análise dos resultados gráficos. Bibliografia: - MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. Ed. Pioneira, 27. Introdução Apesar de não ser qualquer tipo de problema de programação linear que permite uma solução gráfica, alguns deles permitem e a apresentação deste tipo de solução pode ser bastante positivo para a compreensão dos problemas em si, da modelagem matemática e até mesmo o funcionamento do algoritmo Simplex que, será apresentado nas próximas aulas. Com este objetivo, esta aula será devotada à resolução gráfica de um dos problemas apresentados anteriormente. Adicionalmente serão feitos alguns comentários com relação à análise dos resultados obtidos.. A Modelagem e Solução Problema (extraído de MOREIRA, 26): Uma fábrica produz dois produtos, A e B. Cada um deve ser processado por duas máquinas, M e M 2. Devido à programação de outros produtos que também usam estas máquinas, estão disponíveis para os produtos A e B apenas 24 horas da máquina M e 6 horas da máquina M 2. Para produzir uma unidade do produto A, são necessárias 4 horas em cada uma das máquinas e para produzir uma unidade do produto B, são necessárias 6 horas em M e 2 horas em M 2. Cada unidade de A vendida gera um lucro de R$ 8, e cada unidade de B vendida gera um lucro de R$ 6,. Existe uma previsão de demanda máxima de 3 unidades para B, mas nenhuma restrição de demanda para A. Deseja-se saber: quanto produzir de cada produto para maximizar o lucro? 28_SI_-_PesquisaOperacional_I_-_o27 8

19 Pesquisa Operacional 2 Atualização: 7/3/28 Modelo Final Função Objetivo: [MAX] 8 * x A + 6 * x B Sujeito a: 4 * x A + 6 * x B ü 24 <= Restrição do número de horas de M 4 * x A + 2 * x B ü 6 <= Restrição do número de horas de M 2 x B ü 3 <= Restrição de Demanda para B x A ; x B <= Restrições de não-negatividade Onde as variáveis de decisão são x A e x B... Solução Gráfica Sempre que um problema de programação linear tiver apenas duas variáveis de decisão, será possível resolvê-lo graficamente. Embora seja um tanto limitada e também não seja a forma mais rápida de resolver um problema, é uma maneira interessante de entender o mecanismo de solução de problemas de programação linear. A idéia por trás da solução gráfica é delimitar a área em que todas as soluções possíveis se encontram e então buscar, neste espaço - chamado Espaço de Soluções - a melhor solução possível. Bem, se o desejo é encontrar as soluções possíveis e tem-se o conhecimento de que elas são limitadas pelas restrições, então são estas que serão usadas para delimitar o espaço de soluções possíveis. Observe as restrições com atenção: 4 * x A + 6 * x B ü 24 <= Restrição do número de horas de M 4 * x A + 2 * x B ü 6 <= Restrição do número de horas de M 2 x B ü 3 <= Restrição de Demanda para B x A ; x B <= Restrições de não-negatividade O primeiro passo é desenhar um plano cartesiano, onde serão traçadas, uma a uma, as áreas representadas pelas inequações: 28_SI_-_PesquisaOperacional_I_-_o27 9

20 Pesquisa Operacional 3 Atualização: 7/3/28 Deve ser traçada, então, a reta equivalente à primeira restrição, 4 * x A + 6 * x B ü 24, que é a reta 4 * x A + 6 * x B = 24. A tabela para esta construção é apresentada a seguir: X (x A ) 6 Y (x B ) 4 Marcando os pontos e ligando-os, tem-se a seguinte reta: Entretanto, esta reta representa apenas a borda de um plano, afinal, a restrição original era uma inequação e não uma equação (que foi utilizada para desenhar a reta). A representação para a inequação deve incluir não apenas os pontos como (,4) e (6,) que satisfazem à igualdade, mas também aqueles que satisfazem a 4 * x A + 6 * x B < 24. É possível testar um ponto claramente de um lado e de outro da reta, de forma a identificar qual dos lados representa a desigualdade. Pelo gráfico acima, o ponto (,) claramente está do lado de baixo da reta; substituindo-o na equação, tem-se que 4 * + 6 * < 24 => < 24, o que é correto. Logo, a área abaixo da reta também faz parte da representação da área da inequação: 28_SI_-_PesquisaOperacional_I_-_o27 2

21 Pesquisa Operacional 4 Atualização: 7/3/28 Agora, deve-se traçar a reta que representa a equação relacionada à segunda restrição, 4 * x A + 2 * x B ü 6, no mesmo gráfico em que foi traçada a reta anterior. Para facilitar a visualização, foi eliminado temporariamente o preenchimento da área na próxima figura. Entretanto, mais uma vez não se trata de uma equação e sim de uma inequação, que delimita um plano. Com o mesmo teste de lado pode-se verificar que a área delimitada pela inequação 4 * x A + 2 * x B ü 6 é a seguinte: Entretanto, note que uma parte da área permitida pela Restrição 2 não é permitira pela Restrição (área acima da reta da restrição e abaixo da restrição 2, onde está o ponto (,5), por exemplo). Assim, a área permissível pelas duas restrições será representada na próxima figura, mostrando como acrescentar a restrição 2 reduziu o espaço de soluções: 28_SI_-_PesquisaOperacional_I_-_o27 2

22 Pesquisa Operacional 5 Atualização: 7/3/28 A terceira restrição é mais simples: x B ü 3. A equação associada é x = 3, que será representada na próxima figura: E na próxima figura, será marcada a área permissível apenas pela restrição 3, ignorando as outras duas restrições: E agora, marcando apenas a área permissível ao mesmo tempo por todas as três restrições: 28_SI_-_PesquisaOperacional_I_-_o27 22

23 Pesquisa Operacional 6 Atualização: 7/3/28 Entretanto, é possível observar que a área está se estendendo por regiões negativas tanto no eixo X (x A ) quanto no eixo Y (x B ). Isto está incorreto pois, como já comentado, existem sempre as duas restrições de não negatividade: x A ; x B. No próximo gráfico estão traçadas as restrições de não-negatividade e a área final já está delimitada: Com isso, temos a região de soluções possíveis delimitada. Todos os pontos internos à área vermelha representam soluções possíveis (boas ou ruins) e todos os pontos externos representam soluções inviáveis, ou seja, que ferem uma ou mais restrições. Mas, dentro desta área, qual das soluções é a melhor? Antes de fornecer a resposta, convém apresentar uma importante propriedade matemática: "A solução ótima de um problema está em um dos pontos extremos da região permissível" Em outras palavras, a solução ótima está em um dos "cantos" do espaço de soluções possíveis. A tabela abaixo apresenta os diversos pontos extremos do gráfico acima. Sua determinação é feita através das equações das retas que se cruzam para formar cada um deles: Ponto Extremo x A x B Função Objetivo: 8*x A + 6*x B Pelos valores calculados para a função objetivo, é possível ver que o ponto extremo 3 (x A = 3 e x B = 2) tem a melhor solução pois maximiza o lucro. Entretanto, esta não é a única forma de verificar a melhor solução. Pelo próprio gráfico é possível avaliar qual é o ponto extremo da melhor solução, se desenharmos a família de retas representada pela função 28_SI_-_PesquisaOperacional_I_-_o27 23

24 Pesquisa Operacional 7 Atualização: 7/3/28 objetivo. Por exemplo: 8*x A + 6*x B =, 8*x A + 6*x B = 8... e assim por diante, até encontrarmos o último ponto da figura que a reta da função objetivo toca, como indicado na figura a seguir. 2. Análises Possíveis Através da representação gráfica dos problemas, é possível verificar porque algumas soluções indesejadas podem ocorrer. A seguir serão analisadas algumas destas situações e também será visto um pouco sobre o que é uma "análise de sensibilidade". 2.. Restrições Incompatíveis É possível que alguns problemas não possuam solução alguma (solução impossível), fato este causado por incompatibilidade entre as restrições. Por exemplo: [MAX] *x + 2*y Sujeito a: x 4 y 5 y ü 3 Certamente há um problema aqui: y não pode ser, ao mesmo tempo, maior ou igual a cinco E menor ou igual a três. Entretanto, a incompatibilidade nem sempre é tão óbvia. É possível observar no gráfico a seguir como esta incompatibilidade de fato existe. Estão pintadas as áreas permissíveis a partir de cada restrição: note como não há nenhuma área que atenda simultaneamente às três restrições. 28_SI_-_PesquisaOperacional_I_-_o27 24

25 Pesquisa Operacional 8 Atualização: 7/3/28 Como não há nenhum ponto extremo que obedeça às três restrições, este problema é de solução impossível Solução sem Fronteiras Considere um problema como este: [MAX] *x + 2*y Sujeito a: x 4 y 5 Isto representa um problema não limitado, o que normalmente é chamado de "Solução sem Fronteiras". O que isto significa? Significa que não há um máximo definido para a função objetivo: ela pode ser tão grande quanto se deseje, já que seu valor aumenta com o crescimento de X e Y e nenhuma destas variáveis tem seu valor máximo limitado. No gráfico a seguir, esta situação é representada, valendo a pena notar que as regiões sombreadas não se limitam à área apresentada, estendendo-se infinitamente para cima e para a direita. Por esta razão, não é possível identificar o ponto extremo de máximo, que se daria justamente quando X e Y tiverem o valor infinito. Note que este é um problema que fere um dos princípios da programação linear, que não serve, obviamente, para resolver problemas ilimitados, como o representado pelo modelo matemático apresentado acima. 28_SI_-_PesquisaOperacional_I_-_o27 25

26 Pesquisa Operacional 9 Atualização: 7/3/28 Considere o seguinte problema: [MAX] *x + 2*y Sujeito a: x ü 4 y ü 5 y ü Restrições Redundantes Este problema possui o que são chamdas de "Restrições Redundantes", no caso, para a variável Y. A restrição y ü 3 claramente já "inclui" a restrição y ü 5, uma vez que se y ü 3 for respeitada, y ü 5 também sempre o será, automaticamente. A representação deste problema em gráfico pode ser visualizada na próxima figura. Convém observar, entretanto, que este não é um "problema" em si, já que não atrapalha a solução do problema de programação linear. É interessante, porém, eliminar as restrições redundantes que se identifique, a fim de simplificar o problema matemático a ser resolvido Soluções Alternativas Em alguns problemas é impossível determinar um único ponto de extremo que seja a soluçao ótima. isso ocorre na situação em que a reta que representa a função objetivo é paralela à uma das restrições. Por exemplo: [MAX] *y Sujeito a: x ü 4 y ü 5 A representação gráfica a seguir mostra que, quando a reta da função objetivo toca o extremo da área de soluções possíveis, um segmento de reta inteiro fica marcado (e não 28_SI_-_PesquisaOperacional_I_-_o27 26

27 Pesquisa Operacional Atualização: 7/3/28 apenas um ponto). Por esta razão, existem infinitas soluções ótimas para este problema, sendo qualquer uma delas aceitável de acordo com o modelo matemático apresentado Análise de Sensibilidade Normalmente, quando se obtém uma solução ótima para um problema, ocorre uma preocupação adicional: a solução encontrada deverá implementada na prática. Mas por que razão isso pode ser um problema? Ocorre que alguns parâmetros que foram especificados no modelo podem não ser muito precisos. Por exemplo, no exercício apresentado, o número de horas disponíveis da Máquina foi apresentado com o valor de 24 horas. Mas o que ocorreria se, por alguma razão, ficassem disponíveis apenas 23 horas da máquina M? Isso mudaria muito a solução? Qual seria esta mudança? Seria necessário reprogramar as operações para maximizar lucro? Da mesma forma, uma empresa concorrente poderia colocar no mercado um produto similar ao da empresa para qual o modelo foi desenvolvido, fazendo com que o preço de um dos produtos dela caísse. Neste caso, será que a operação da fábrica precisaria ser reajustada? Até que valor seria possível abaixar o preço de um produto sem a necessidade de alterar a programação de produção? Estas análises podem ser feitas também com análises gráficas. Entretanto, este tipo de análise será deixada para cursos futuros. Bibliografia MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, _SI_-_PesquisaOperacional_I_-_o27 27

28 Pesquisa Operacional Atualização: 7/3/28 Unidade : Introdução à Modelagem Matemática Tópico 5: Modelagem na Forma Padrão Prof. Daniel Caetano Objetivo: Apresentar as modificações na modelagem matemática necessárias para a especificação de um modelo na forma padrão em um problema simples. Bibliografia: - MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. Ed. Pioneira, 27. Introdução A solução gráfica para problemas de programação linear, vista nas aulas anteriores, é bastante elucidativa. Entretanto, é uma forma desajeitada de resolver problemas, além de se tornar complexa ou impossível de ser aplicada para problemas com mais de duas variáveis de decisão. Uma forma alternativa é o uso do Método Simplex para a resolução dos problemas de programação linear. O Método Simplex é um método sistemático, baseado em um tableau, onde são indicados todos os dados do problema e, realizando algumas operações, encontra-se a solução ótima. Porém, apesar de ter sido apresenada, nas aulas anteriores, a maneira de converter um problema real em um modelo matemático, tais modelos ainda não estão corrretamente preparados para sua resolução pelo Simplex. Para que o modelo mamtemático se adapte às necessidades do Simplex, ainda são necessárias algumas modificações em sua forma, sem alterar o seu significado matemático. A forma final, pronta para o Simplex, é chamada de Forma Padrão.. Requisitos do Simplex para a Modelagem Antes de mais nada, é interessante comentar a lógica por trás do Método Simplex. Na aula anterior, foi desenhado um gráfico que representava a região de soluções viáveis para o problema então modelado: 28_SI_-_PesquisaOperacional_I_-_o27 28

29 Pesquisa Operacional 2 Atualização: 7/3/28 Também foi dito que as soluções ótimas estariam sempre nas regiões extremas desta área; em geral, nos vértices. O Simplex é um método matemático que explora estas características. A idéia é a seguinte: dada uma solução inicial (um dos pontos de vértice), ele utiliza as inequações das restrições para determinar o próximo vértices e, escolhendo o melhor vértice encontrado, repete o processo. Resumidamente, se na figura anterior fosse iniciado o processo pelo vértice (,), o método calcularia o valor da função objetivo nos vértices (,3) e (4,) (que são os vértices vizinhos ao vértice (,)) e escolheria aquele que a função objetivo tivesse o maior valor (é um problema de maximização). Supondo que este vértice seja o vértice (4,), o método calcularia o valor dos vértices (,) e (3,2), que são os vértices vizinhos e, mais uma vez, escolheria aquele que tem o maior valor na função objetivo... repetindo este processo até que não fosse possível melhorar a solução. Ora, como pode ser observado, para que esse processo seja iniciado, antes de mais nada é preciso encontrar uma solução inicial viável; garantindo isso, o método pressupõe que todas as soluções calculadas serão viáveis (mas nada pode ser garantido se o método for iniciado com uma solução inviável). Note que uma solução inicial viável não significa que ela precisa ser ótima... nem mesmo boa! Ocorre que nem sempre é simples encontrar essa solução inicial viável na forma com que determinamos o modelo anteriormente. Assim, serão feitas algumas modificações no modelo com o objetivo de facilitar a determinação desta solução. Adicionalmente, o Método Simplex age como a região viável fosse somente as bordas da região viável. Para tanto, exige que as restrições sejam todas equações, ou seja, expressas por igualdades. Claramente isso não é o caso comum e será necessário fazer uma alteração no modelo que transforme as inequações (com sinais ü ou ), em equações (com sinal =) sem modificar o significado do modelo. Neste ponto serão apresentados os truques para lidar com restrições do tipo ü, ficando para aulas posteriores a análise de restrições do tipo ü... e, como será visto, para faciliar a determinação da solução inicial, mesmo as restrições que já são igualdades (=) precisarão de um pequeno ajuste. Visando a solução por computador, é necessário que todas as variáveis estejam presentes em todas as restrições e na função objetivo. Como isso nem sempre ocorre "naturalmente", já que freqüentemente algumas restrições envolvem apenas uma ou duas variáveis, será necessário adicionar as variáveis faltantes, mais uma vez sem modificar o significado matemático das restrições. Também serão indicados coeficientes em todas as variáveis, mesmo que este coeficiente seja "". 28_SI_-_PesquisaOperacional_I_-_o27 29

30 Pesquisa Operacional 3 Atualização: 7/3/28 2. A Modelagem Voltando ao Problema extraído de MOREIRA (26): Uma fábrica produz dois produtos, A e B. Cada um deve ser processado por duas máquinas, M e M 2. Devido à programação de outros produtos que também usam estas máquinas, estão disponíveis para os produtos A e B apenas 24 horas da máquina M e 6 horas da máquina M 2. Para produzir uma unidade do produto A, são necessárias 4 horas em cada uma das máquinas e para produzir uma unidade do produto B, são necessárias 6 horas em M e 2 horas em M 2. Cada unidade de A vendida gera um lucro de R$ 8, e cada unidade de B vendida gera um lucro de R$ 6,. Existe uma previsão de demanda máxima de 3 unidades para B, mas nenhuma restrição de demanda para A. Deseja-se saber: quanto produzir de cada produto para maximizar o lucro? Modelo Final Função Objetivo: [MAX] 8 * x A + 6 * x B Sujeito a: 4 * x A + 6 * x B ü 24 <= Restrição do número de horas de M 4 * x A + 2 * x B ü 6 <= Restrição do número de horas de M 2 x B ü 3 <= Restrição de Demanda para B as variáveis de decisão são x A e x B e aqui não serão mais representadas as restrições de não-negatividade, porque elas são implícitas pelo método Simplex. 2.. Resolvendo o Problema das Inequações O que fazer para eliminar as desigualdades, neste caso? Uma coisa é certa: não é possível fazer isso: Função Objetivo: [MAX] 8 * x A + 6 * x B Sujeito a (RESTRIÇÕES INCORRETAS!): 4 * x A + 6 * x B = 24 <= Restrição do número de horas de M 4 * x A + 2 * x B = 6 <= Restrição do número de horas de M 2 x B = 3 <= Restrição de Demanda para B E isso não é possível simplesmente porque assim o modelo seria modificado de uma maneira que modificaria o problema a ser resolvido. Em muitos casos, se isso fosse feito, o 28_SI_-_PesquisaOperacional_I_-_o27 3

31 Pesquisa Operacional 4 Atualização: 7/3/28 problema seria até mesmo insolúvel. Suponha, por exemplo, que a solução ótima do problema original fosse x A =2 e x B =2. Neste caso, pela restrição de hora de M : 4 * x A + 6 * x B = 24 => 4*2 + 6*2 = 24 => 8+2 = 24 => 2 = 24!?! Não! 2 g 24! Como resolver a questão, então? A solução é usar um pequeno truque: acrescentar uma variável a mais em cada restrição: Função Objetivo: [MAX] 8 * x A + 6 * x B Sujeito a: 4 * x A + 6 * x B + x S = 24 <= Restrição do número de horas de M 4 * x A + 2 * x B + x S2 = 6 <= Restrição do número de horas de M 2 x B + x S3 = 3 <= Restrição de Demanda para B Observe agora que, mesmo com o sinal de igual (=), as solução não estão mais sendo restringidas além do modelo original. Por exemplo, suponha novamente que a solução ótima do problema original fosse x A =2 e x B =2. Agora, pela restrição de horas de M, tem-se: 4 * x A + 6 * x B + x S = 24 <= Restrição do número de horas de M 4 * * 2 + x S = x S = x S = 24 x S = 24-2 x S = 4 Ou seja, a suposta solução ótima x A =2 e x B =2 implicou um x S = 4, mas a solução voltou a ser possível e o objetivo de uma restrição com o sinal de igual foi atingido. De qualquer forma, uma pergunta fica no ar: o que representa esta variável x S? Ora, neste caso, a variável x S representa o número de horas que sobraram da máquina M. x S é chamada uma variável de folga. Folga, em inglês, é Slack, daí o índice S na variável. Repare, também, que as variáveis de folga também precisam obedecer às restrições de não-negatividade, já que não faz sentido sobrar "- horas" da máquina M, por exemplo. Note que o raciocínio todo acima pode ser repetido para as outras restrições, envolvendo x S2 e x S3. 28_SI_-_PesquisaOperacional_I_-_o27 3

32 Pesquisa Operacional 5 Atualização: 7/3/ Resolvendo o Problema das Variáveis Faltantes Este problema é bem mais fácil de ser resolvido que o anterior: basta acrescentar todas as variáveis faltantes em cada equação do modelo matemático, indicando-as com coeficiente zero. As que já existem sem coeficiente devem receber um coeficiente. Assim, o modelo que era: Função Objetivo: [MAX] 8 * x A + 6 * x B Sujeito a: 4 * x A + 6 * x B + x S = 24 <= Restrição do número de horas de M 4 * x A + 2 * x B + x S2 = 6 <= Restrição do número de horas de M 2 x B + x S3 = 3 <= Restrição de Demanda para B Se torna: Função Objetivo: [MAX] 8 * x A + 6 * x B + * x S + * x S2 + * x S3 Sujeito a: 4 * x A + 6 * x B + * x S + * x S2 + * x S3 = 24 <= Restrição M 4 * x A + 2 * x B + * x S + * x S2 + * x S3 = 6 <= Restrição M 2 * x A + * x B + * x S + * x S2 + * x S3 = 3 <= Restrição B Observe que com as variáveis alinhadas a leitura do modelo se torna bem mais fácil, também. 3. Soluções Básicas e Não-Básicas: Encontrando uma Solução Inicial Considere o modelo matemático apresentado anteriormente: Função Objetivo: [MAX] 8 * x A + 6 * x B + * x S + * x S2 + * x S3 Sujeito a: 4 * x A + 6 * x B + * x S + * x S2 + * x S3 = 24 <= Restrição M 4 * x A + 2 * x B + * x S + * x S2 + * x S3 = 6 <= Restrição M 2 * x A + * x B + * x S + * x S2 + * x S3 = 3 <= Restrição B Observando esta formaulação, é possível verificar que há 5 incógnitas (x A, x B, x S, x S2, x S3 ) e apenas 3 equações de restrição (M, M 2 e B). Como há mais incógnitas do que equações, o problema é classificado como indeterminado, isto é, não é possível determinar uma solução única para ele, o que corrobora a solução gráfica, onde havia um grande número de soluções dentro da área de "soluções viáveis". 28_SI_-_PesquisaOperacional_I_-_o27 32

33 Pesquisa Operacional 6 Atualização: 7/3/28 Entretanto, se duas variáveis quaisquer forem escolhidas e tiverem seus valores fixados, o resultado será um sistema de 3 equações e 3 incógnitas, tornando-se um sistema determinado, possibilitando o cálculo das variáveis restantes. Por facilidade nas contas, os valores fixados para as variáveis em excesso é sempre (zero). As variáveis escolhidas para terem seu valor definido como zero formam o que é chamado de "solução não-básica". As variáveis restantes, cujos valores serão calculados, formam a chamada "solução básica". Note que a solução básica definida desta forma, sem nenhum cuidado, pode não ser viável. Em outras palavras, uma solução inicial criada simplesmente impondo que duas variáveis valem zero, sem qualquer outro critério, pode desrespeitar as restrições previamente impostas. Na aula anterior foi visto que a área de soluções viáveis para este problema era esta: Mais uma vez, foi visto que a solução ótima estava sempre num ponto extremo. Assim, para verificar um resultado interessante, será feita uma análise dos valores das variáveis nos pontos extremos. Os pontos serão nomeados da seguinte forma: o ponto A é o ponto (,) e os pontos B, C, D e E são os seguintes, seqüenciais, no sentido horário: Ponto X A X B X S X S2 X S3 A B 3 6 C,5 3 4 D 3 2 E Observe que em todos os pontos extremos há sempre duas variáveis iguais a zero! E os pontos extremos também representam todas as soluções básicas possíveis. Pode-se dizer, de forma genérica, que sempre que houver um problema de programação linear com m incógnitas e n equações, em todos os extremos da região de soluções possíveis teremos (m-n) incógnitas com valor igual a zero. 28_SI_-_PesquisaOperacional_I_-_o27 33

34 Pesquisa Operacional 7 Atualização: 7/3/ A Solução Inicial Como futuramente será necessário determinar uma solução inicial, convém analisar como encontrar tal solução inicial. O primeiro aspecto importante é que deve ser simples encontrar a solução incial, ou seja, seu cálculo deve ser simples. Adicionalmente, se o método para encontrar esta solução inicial puder ser similar para todos os problemas, tanto melhor. Curiosamente, existe uma solução inicial que se encaixa em todas estas características. E é uma solução tão simples e comum que ela é chamada, na matemática, de "solução trivial": basta definir que as variáveis de decisão originais valem ZERO, tornando-as variáveis não-básicas (fora da solução), a solução inicial será de cálculo imediato. Observe: Função Objetivo: [MAX] 8 * x A + 6 * x B + * x S + * x S2 + * x S3 Sujeito a: 4 * x A + 6 * x B + * x S + * x S2 + * x S3 = 24 <= Restrição M 4 * x A + 2 * x B + * x S + * x S2 + * x S3 = 6 <= Restrição M 2 * x A + * x B + * x S + * x S2 + * x S3 = 3 <= Restrição B As variáveis de decisão são x A e x B. Seus valores serão igualados a zero: x A = x B =. Substituindo os valores de x A e x B nas restrições: 4 * + 6 * + * x S + * x S2 + * x S3 = 24 <= Restrição M 4 * + 2 * + * x S + * x S2 + * x S3 = 6 <= Restrição M 2 * + * + * x S + * x S2 + * x S3 = 3 <= Restrição B Resolvendo os cálculos, isso pode ser reescrito da seguinte forma: + + x S + + = 24 <= Restrição M x S2 + = 6 <= Restrição M x S3 = 3 <= Restrição B Ora, limpando este monte de zeros, surge o resultado: x S = 24 <= Restrição M x S2 = 6 <= Restrição M 2 x S3 = 3 <= Restrição B E, como foi definido, x A = x B =. Estes cinco valores compõem a solução inicial (que, normalmente, não é uma solução ótima). 28_SI_-_PesquisaOperacional_I_-_o27 34

35 Pesquisa Operacional 8 Atualização: 7/3/28 Exercício L2. Coloque os três problemas abaixo (já modelados na L) na forma padrão. 2. Encontre as soluções iniciais, variáveis básicas e não básicas para cada um deles. ) Um navio tem um limite de transporte de 3m 3 de carga ou 5t de carga. Ele será usado para transportar dois tipos de carga: a carga A é transportada em unidades de 6m3, que pesam t. A carga B é transportada em unidades de 25m 3, e pesam 8t. O lucro pelo transporte de cada unidade de A é R$ 5,, e o lucro pelo transporte de cada unidade de B é de R$ 72,. Deseja-se o modelo de programação linear com que se possa obter qual é a melhor composição de carga para a obtenção de máximo lucro. 2) Um computador () tem um limite de 4GB (considerado GB = MB) de memória e seu usuário pode exectuar até executar até 72 horas de processamento por semana. Todos os dados que serão processados nestas 72 horas da semana precisam ser carregados ao mesmo tempo. Isso significa que tudo tem que caber nos 4GB de memória. Um cliente lhe muitos pacotes de dados, de quatro tipos diferentes: a) pacotes que exigem 5 MB, hora de processamento cada um, pagando R$, por unidade processada. b) 25 pacotes que exigem MB, 7 horas de processamento cada um, pagando R$ 5, por unidade processada. c) 3 pacotes que exigem 5 MB, 4 horas de processamento cada um, pagando R$ 35, por unidade processada. d) 7 pacotes que exigem 35 MB, horas de processamento cada um, pagando R$ 65, por unidade processada. Deseja-e o modelo de programação linear para definir quais pacotes serão processados para que o maior lucro seja obtido. 3) (livro) Uma empresa do ramo de confecções está considerando quanto deve produzir de seus dois modelos de terno, denominados Executivo Master e Caibem, de forma a maximizar o lucro. É impossível produzir quanto se queira de cada um, pois existem limitações nas horas disponíveis para costura em máquina e acabamento manual. Para a costura, existe um máximo de 8 horas-máquina disponíveis e para o acabamento existe um máximo de 24 homens-hora. Em termos de lucro unitário e produção, os dois modelos de terno apresentam as seguintes características: a) Executivo Master - Lucro unitário: R$ 2, - horas-máquina de costura por unidade: 2 - homens-hora de acabamento por unidade: 2 b) Caibem - Lucro unitário: R$ 7, - horas-máquina de costura por unidade: - homens-hora de acabamento por unidade: 4 Bibliografia MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, _SI_-_PesquisaOperacional_I_-_o27 35

36 Pesquisa Operacional Atualização: 2/3/28., Solução da Lista L Problema Resolução das Listas e 2 Prof. Daniel Caetano. Solução da Lista L ) Um navio tem um limite de transporte de 3m 3 de carga ou 5t de carga. Ele será usado para transportar dois tipos de carga: a carga A é transportada em unidades de 6m3, que pesam t. A carga B é transportada em unidades de 25m 3, e pesam 8t. O lucro pelo transporte de cada unidade de A é R$ 5,, e o lucro pelo transporte de cada unidade de B é de R$ 72,. Deseja-se o modelo de programação linear com que se possa obter qual é a melhor composição de carga para a obtenção de máximo lucro. Solução O primeiro passo que auxilia muito na solução, é fazer um pequeno quadro de informações. Por exemplo: Carga A B Disponível Volume Peso 8 5 Lucro Unitário Neste problema, o objetivo é claro: maximizar o lucro. Assim, haverá uma função objetivo de maximização. Mas como descrever esta função objetivo em termos dos dados fornecidos? Ora, é sabido o lucro que o transporte cada unidade de A e B gera: se uma unidade de A for transportada, o lucro será de R$ 5,. Se uma unidade de B for transportada, o lucro será de R$ 72,. Se for considerado o número de unidades de A transportadas como x A e o número de unidades de B transportadas como x B, pode-se dizer que: Lucro pelo transporte de A = 5 * x A Lucro pelo transporte de B = 72 * x B Lucro Total = 5 * x A + 72 * x B Ora, essa é, então, a função objetivo, já que se deseja maximizar este lucro... E x A e x B são as variáveis de decisão. A função objetivo pode ser formalizada como: Função Objetivo: [MAX] 5 * x A + 72 * x B 28_SI_-_PesquisaOperacional_I_-_o27 36

37 Pesquisa Operacional 2 Atualização: 2/3/28 Esta é a primeira parte do modelo, mas ele ainda está longe de estar completo... Afinal, da maneira que foi representado, é possível definir um lucro infinito e, na prática, isso não ocorre! Como contornar isso? Impondo as limitações que o próprio problema apresenta: - Limitação de Volume : 3 - Limitação de Peso : 5 A maneira correta de descrever isso será vista a seguir. Limitação de Volume: 3 O volume será compartilhado pelas cargas A e B, uma vez que ambos terão de ser colocados no mesmo navio. É sabido que cada unidade de A transportada ocupa 6 m 3 e cada unidade de B transportada ocupa 25 m 3. Ora, se for multiplicado o número de unidades transportadas de A (x A ) por 6, o resultado será o volume total ocupado pela carga A e multiplicando o número de unidades transportadas de B (x B ) por 25, o resultado será o volume total ocupado pela carga B: Volume total da carga A : Volume total da carga B : Volume total ocupado : 6 * x A 25 * x B 6 * x A + 25 * x B Mas a limitação de volume é 3 m 3, ou seja, é possível ocupar qualquer volume, desde que não exceda 3 m 3. Isso pode ser escrito da seguinte forma: Volume total ocupado = 6 * x A + 25 * x B Volume permitido ü 3 Juntando ambos... 6 * x A + 25 * x B ü 3 <= Restrição de volume Limitação de Peso: 5 O peso das cargas A e B também se somam para o cálculo do peso total, já que as cargas vão no mesmo navio. É sabido que cada unidade de A transportada pesa t e cada unidade de B transportada ocupa 8t. Ora, se for multiplicado o número de unidades transportadas de A (x A ) por, o resultado será o peso total da carga A e multiplicando o número de unidades transportadas de B (x B ) por 8, o resultado será o peso total da carga B: Peso total da carga A : Peso total da carga B : Peso total : * x A 8 * x B * x A + 8 * x B 28_SI_-_PesquisaOperacional_I_-_o27 37

38 Pesquisa Operacional 3 Atualização: 2/3/28 Mas a limitação de peso é 5t, ou seja, o peso total de nossa carga pode ser qualquer um, desde que não exceda 5t. É possível escrever isso da seguinte forma: Peso total = * x A + 8 * x B Peso permitido ü 5 Juntando ambos... * x A + 8 * x B ü 5 <= Restrição de peso Condição de Não-Negatividade Em programação linear, uma restrição sempre implícita é a de que as variáveis de decisão não podem assumir valores negativos. Isso faz todo o sentido do mundo, uma vez que as variáveis de decisão praticamente sempre indicam quantidades... e quantidades negativas não fazem sentido. Por esta razão, são incluidas duas restrições ao modelo: x A ; x B <= Restrições de não-negatividade Modelo Final Juntando a função objetivo com todas as restrições, o resultado é o modelo matemático final para o problema: Função Objetivo: [MAX] 5 * x A + 72 * x B Restrições: 6 * x A + 25 * x B ü 3 <= Restrição de volume * x A + 8 * x B ü 5 <= Restrição de peso x A ; x B <= Restrições de não-negatividade Onde as variáveis de decisão são x A e x B, representando respectivamente a quantidade a transportar da carga A (em unidades) e a quantidade a transportar da carga B (em unidades). 28_SI_-_PesquisaOperacional_I_-_o27 38

39 Pesquisa Operacional 4 Atualização: 2/3/28.2. Solução do Exercício 2 Problema 2) Um computador () tem um limite de 4GB (considerado GB = MB) de memória e seu usuário pode exectuar até executar até 72 horas de processamento por semana. Todos os dados que serão processados nestas 72 horas da semana precisam ser carregados ao mesmo tempo. Isso significa que tudo tem que caber nos 4GB de memória. Um cliente lhe muitos pacotes de dados, de quatro tipos diferentes: a) pacotes que exigem 5 MB, hora de processamento cada um, pagando R$, por unidade processada. b) 25 pacotes que exigem MB, 7 horas de processamento cada um, pagando R$ 5, por unidade processada. c) 3 pacotes que exigem 5 MB, 4 horas de processamento cada um, pagando R$ 35, por unidade processada. d) 7 pacotes que exigem 35 MB, horas de processamento cada um, pagando R$ 65, por unidade processada. Deseja-e o modelo de programação linear para definir quais pacotes serão processados para que o maior lucro seja obtido. Solução O primeiro passo que auxilia muito na solução, é fazer um pequeno quadro de informações. Por exemplo: Pacote A B C D Disponível memória (MB) , horas de proc. (h) lucro unitáro (R$) Pacotes disponíveis Neste problema, o objetivo é claro: maximizar o lucro. Assim, haverá uma função objetivo de maximização. Mas como descrever esta função objetivo em termos dos dados e variáveis disponíveis? Ora, é sabido o lucro que o processamento de cada pacote A, B, C, D e E gera: se uma unidade de A for processada, o lucro será de R$,. Se uma unidade de B for vendida, o lucro será de R$ 5,... e assim por diante. Se considerarmos o número de unidades de A, B, C e D processadas como x A, x B, x C e x D respectivamente, pode-se dizer que: Lucro pelo processamento de unidades A = * x A Lucro pelo processamento de unidades B = 5 * x B Lucro pelo processamento de unidades C = 35 * x C Lucro pelo processamento de unidades D = 65 * x D 28_SI_-_PesquisaOperacional_I_-_o27 39

40 Pesquisa Operacional 5 Atualização: 2/3/28 Assim, o lucro total será: Lucro Total = * x A + 5 * x B + 35 * x C + 65 * x D Ora, essa é, então, a função objetivo, já que se deseja maximizar este lucro... E x A, x B, x C e x D são as variáveis de decisão. A função objetivo pode ser formalizada como: Função Objetivo: [MAX] * x A + 5 * x B + 35 * x C + 65 * x D Esta é a primeira parte do modelo, mas ele ainda não está completo. Mais uma vez, da maneira com que foi representado, é possível definir um lucro infinito e, na prática, isso não ocorre. Serão impostas, então as restrições que o próprio problema apresenta: - Limitação de Memória : 4 - Limitação de Horas : 72 - Limitação de Unidades A: - Limitação de Unidades B: 25 - Limitação de Unidades C: 3 - Limitação de Unidades D: 7 A seguir serão avaliadas cada uma destas restrições. Limitação de Memória: 4 A memória será compartilhada por todos os pacotes a serem processados nas 72 horas. Assim, é necessário expressar o consumo de memória através das variáveis de decisão x A, x B, x C e x D. É sabido que cada unidade de A, por exemplo, consome 5MB de memória. Cada unidade de C, por exemplo, consome 5MB de memória. Ora, se for multiplicado o número de unidades processadas de A, B, C e D (x A, x B, x C e x D ) pelo seu consumo de memória respectivo, o resultado será a quandidade de memória total que os pacotes de um determinado tipo consumirão: Memória consumida por pacotes A: 5 * x A Memória consumida por pacotes B: * x B Memória consumida por pacotes C: 5 * x C Memória consumida por pacotes D: 35 * x D Memória consumida total: 5 * x A + * x B + 5 * x C + 35 * x D Mas a limitação de memória total é 4, ou seja, pode-se consumir qualquer quantidade de memória, desde que não exceda 4. Isso pode ser escrito da seguinte forma: Memória total necessária: 5 * x A + * x B + 5 * x C + 35 * x D Memória total disponível: 4 28_SI_-_PesquisaOperacional_I_-_o27 4

41 Pesquisa Operacional 6 Atualização: 2/3/28 Juntando ambos... 5 * x A + * x B + 5 * x C + 35 * x D ü 4 <= Restrição de Memória Limitação de Horas : 72 As horas serão gastas por todos os processamentos (de pacotes A, B, C e D), sendo eles executados seqüencialmente. É sabido que cada unidade de A processada consome hora e cada unidade de D processada consome horas, por exemplo. Ora, se for multiplicado o número de unidades processadas de A, B, C e D (x A, x B, x C e x D ) pelo seu consumo de horas respectivo, o resultado será o número de horas consumidas no total, devido ao processamento: Horas consumidas por pacotes A: * x A Horas consumidas por pacotes B: 7 * x B Horas consumidas por pacotes C: 4 * x C Horas consumidas por pacotes D: * x D Horas consumidas total: * x A + 7 * x B + 4 * x C + * x D Mas a limitação de horas é de 72, ou seja, pode-se consumir qualquer número de horas, desde que não exceda 72. Isso pode ser escrito da seguinte forma: Horas necessárias: * x A + 7 * x B + 4 * x C + * x D Horas disponíveis: 72 Juntando ambos... * x A + 7 * x B + 4 * x C + * x D ü 72 <= Restrição de Horas Limitação de Unidades A, B, C e D:, 25, 3, 7 (respectivamente) Além das restrições de hora e memória, temos há algumas restrições na quantidade máxima de cada tipo de unidade que pode ser processada. Por exemplo: só há unidades A para serem processadas; não faz sentido considerar o processamento de uma décima primeira unidade A. Assim, pode-se dizer que o número de unidades processadas de A, B, C e D (x A, x B, x C e x D ) deve ser inferior ou igual ao número de unidades disponíveis: x A ü x B ü 25 x C ü 3 x D ü 7 <= Restrição de Unidades A <= Restrição de Unidades B <= Restrição de Unidades C <= Restrição de Unidades D 28_SI_-_PesquisaOperacional_I_-_o27 4

42 Pesquisa Operacional 7 Atualização: 2/3/28 Condição de Não-Negatividade Em programação linear, a restrição de que as variáveis de decisão não podem assumir valores negativos é sempre implícita. Neste caso, elas serão explicitadas: x A ; x B ; x C ; x D <= Não-negatividade Modelo Final Juntando a função objetivo com todas as restrições, o resultado é o modelo matemático final para problema: Função Objetivo: [MAX] * x A + 5 * x B + 35 * x C + 65 * x D Restrições: 5 * x A + * x B + 5 * x C + 35 * x D ü 4 <= Restrição de Memória * x A + 7 * x B + 4 * x C + * x D ü 72 <= Restrição de Horas x A ü <= Restrição de Unidades A x B ü 25 <= Restrição de Unidades B x C ü 3 <= Restrição de Unidades C x D ü 7 <= Restrição de Unidades D x A ; x B ; x C ; x D <= Não-negatividade Onde as variáveis de decisão são x A, x B, x C e x D, representando a quandidade de cada tipo de pacote (A, B, C e D, respectivamente) a ser processado. 28_SI_-_PesquisaOperacional_I_-_o27 42

43 Pesquisa Operacional 8 Atualização: 2/3/28,3. Solução do Exercício 3 Problema 3) (livro) Uma empresa do ramo de confecções está considerando quanto deve produzir de seus dois modelos de terno, denominados Executivo Master e Caibem, de forma a maximizar o lucro. É impossível produzir quanto se queira de cada um, pois existem limitações nas horas disponíveis para costura em máquina e acabamento manual. Para a costura, existe um máximo de 8 horas-máquina disponíveis e para o acabamento existe um máximo de 24 homens-hora. Em termos de lucro unitário e produção, os dois modelos de terno apresentam as seguintes características: a) Executivo Master - Lucro unitário: R$ 2, - horas-máquina de costura por unidade: 2 - homens-hora de acabamento por unidade: 2 b) Caibem - Lucro unitário: R$ 7, - horas-máquina de costura por unidade: - homens-hora de acabamento por unidade: 4 Formule o problema como um modelo de programação linear. Solução O primeiro passo que auxilia muito na solução, é fazer um pequeno quadro de informações. Por exemplo: Terno Executivo Master Caibem Disponível horas-máquina 2 8 homens-hora Lucro Unitário Neste problema, o objetivo é maximizar o lucro. Assim, haverá uma função objetivo de maximização. Mas como descrever esta função objetivo em termos dos dados e variáveis disponíveis? Ora, é sabido o lucro que a venda de cada Executivo Master (EM) e Caibem (C) gera: se uma unidade de EM for vendida, o lucro será de R$ 2,. Se uma unidade de C for vendida, o lucro será de R$ 7,. Se for considerado o número de unidades de EM transportadas como x EM e o número de unidades de C transportadas como x C, pode-se dizer que: Lucro pela venda de EM = 2 * x EM Lucro pela venda de C = 7 * x C Lucro Total = 2 * x EM + 7 * x C 28_SI_-_PesquisaOperacional_I_-_o27 43

44 Pesquisa Operacional 9 Atualização: 2/3/28 Ora, essa é, então, a função objetivo, já que se deseja maximizar este lucro... E x EM e x C são as variáveis de decisão. A função objetivo pode ser formalizada como: Função Objetivo: [MAX] 2 * x EM + 7 * x C Esta é a primeira parte do modelo, mas ele ainda não está completo. Serão impostas, então, as limitações que o próprio problema apresenta: - Limitação de Horas-Máquina : 8 - Limitação de Homens-Hora : 24 Tais restrições serão analisadas em seguida: Limitação de Horas-Máquina : 8 As horas-máquina serão compartilhadas pela produção dos ternos EM e C. É sabido cada unidade de EM produzida gasta 2 horas-máquina e cada unidade de C produzida gasta hora-máquina. Ora, se for muliplicado o número de unidades produzidas de EM (x EM ) por 2, o resultado será o número de horas-máquina consumidas pela produção de EM e multiplicando o número de unidades produzidas de C (x C ) por, o resultado será o número de horas-máquina consumidas pela produção de C: Horas-máquina gastos por EM : Horas-máquina gastos por C : Horas-máquina gastas : 2 * x EM * x C 2 * x EM + * x C Mas a limitação de horas-máquina é de 8, ou seja, é possível gastar qualquer número de horas-máquina, desde que não exceda 8. Isso pode ser escrito da seguinte forma: Horas-máquina necessárias = 2 * x EM + * x C Horas-máquina disponíveis ü 8 Juntando ambos... 2 * x EM + * x C ü 8 <= Restrição de horas-máquina Limitação de Homens-Hora : 24 Os homens-hora serão compartilhados pela produção dos ternos EM e C. É sabido que cada unidade de EM produzida gasta 2 homens-hora e cada unidade de C produzida gasta 4 homens-hora. Ora, se for multiplicado o número de unidades produzidas de EM (x EM ) por 2, o resultado será o número de homens-horas consumidos pela produção de EM e multiplicando 28_SI_-_PesquisaOperacional_I_-_o27 44

45 Pesquisa Operacional Atualização: 2/3/28 o número de unidades produzidas de C (x C ) por 4, o resultado será o número de homens-hora consumidas pela produção de C: Homens-hora gastos por EM : Homens-hora gastos por C : Homens-hora gastos : 2 * x EM 4 * x C 2 * x EM + 4 * x C Mas a limitação de homens-hora é de 24, ou seja, é possível gastar qualquer número de homens-hora, desde que não exceda 24. Isso pode ser escrito da seguinte forma: Homens-horas necessários = 2 * x EM + 4 * x C Homens-horas disponíveis ü 24 Juntando ambos... 2 * x EM + 4 * x C ü 24 <= Restrição de homens-hora Condição de Não-Negatividade É necessário ainda explicitar a condição de não negatividade, que não permite que as variáveis de decisão recebam valores negativos. Assim, serão incluídas estas duas restrições ao modelo: x EM ; x C <= Restrições de não-negatividade Modelo Final Juntando a função objetivo com todas as restrições, o resultado é o modelo matemático final para o problema: Função Objetivo: [MAX] 2 * x EM + 7 * x C Restrições: 2 * x EM + * x C ü 8 <= Restrição de horas-máquina 2 * x EM + 4 * x C ü 24 <= Restrição de homens-hora x EM ; x C <= Restrições de não-negatividade Onde as variáveis de decisão são x EM e x C, representando a quantidade a ser produzida de cada um dos tipos de terno: Executivo Mater e Caibem, respectivamente. 28_SI_-_PesquisaOperacional_I_-_o27 45

46 Pesquisa Operacional Atualização: 2/3/28 2. Solução da Lista L2 2.. Coloque os três problemas modelados na L na forma padrão. Problema Modelagem original do primeiro problema: Função Objetivo: [MAX] 5 * x A + 72 * x B Restrições: 6 * x A + 25 * x B ü 3 <= Restrição de volume * x A + 8 * x B ü 5 <= Restrição de peso a) Eliminando as desigualdades das Restrições Como há duas restrições do tipo menor ou igual, é possível transformá-las em igualdades acrescentando variáveis de sobra em cada uma das restrições: 6 * x A + 25 * x B ü 3 => 6 * x A + 25 * x B + * x S = 3 * x A + 8 * x B ü 5 => * x A + 8 * x B + * x S2 = 5 Onde x S significa o volume não utilizado do navio e x S2 o peso livre do navio. b) Fazendo com que todas as equações tenham todas as variáveis Basta acrescentar em todas as equações as variáveis faltantes, com coeficiente zero: [MAX]5 * x A + 72 * x B + * x S + * x S2 6 * x A + 25 * x B + * x S * x S2 = 3 * x A + 8 * x B + * x S * x S2 = 5 28_SI_-_PesquisaOperacional_I_-_o27 46

47 Pesquisa Operacional 2 Atualização: 2/3/28 Problema 2 Modelagem original do segundo problema: Função Objetivo: [MAX] * x A + 5 * x B + 35 * x C + 65 * x D Restrições: 5 * x A + * x B + 5 * x C + 35 * x D ü 4 <= Restrição de Memória * x A + 7 * x B + 4 * x C + * x D ü 72 <= Restrição de Horas x A ü <= Restrição de Unidades A x B ü 25 <= Restrição de Unidades B x C ü 3 <= Restrição de Unidades C x D ü 7 <= Restrição de Unidades D x A ; x B ; x C ; x D <= Não-negatividade a) Eliminando as desigualdades das Restrições Como há duas restrições do tipo menor ou igual, é possível transformá-las em igualdades acrescentando variáveis de sobra em cada uma das restrições: 5*x A +*x B +5*x C +35*x D ü 4 => 5*x A +*x B +5*x C +35*x D +x S = 4 * x A + 7 * x B + 4 * x C + * x D ü 72 => * x A + 7 * x B + 4 * x C + * x D + x S2 = 72 * x A ü => * x A + x S3 = * x B ü 25 => * x B + x S4 = 25 * x C ü 3 => * x C + x S5 = 3 * x D ü 7 => * x D + x S6 = 7 Onde x A significa o número de pacotes A a serem processados, x B significa o número de pacotes B a serem processados, x C significa o número de pacotes C a serem processados, x D significa o número de pacotes D a serem processados. b) Fazendo com que todas as equações tenham todas as variáveis Basta acrescentar em todas as equações as variáveis faltantes, com coeficiente zero: [MAX] *x A + 5*x B + 35*x C + 65*x D + *x S + *x S2 + *x S3 + *x S4 + *x S5 + *x S6 5*x A + *x B + 5*x C + 35*x D + *x S + *x S2 + *x S3 + *x S4 + *x S5 + *x S6 = 4 *x A + 7*x B + 4*x C + *x D + *x S + *x S2 + *x S3 + *x S4 + *x S5 + *x S6 = 72 *x A + *x B + *x C + *x D + *x S + *x S2 + *x S3 + *x S4 + *x S5 + *x S6 = *x A + *x B + *x C + *x D + *x S + *x S2 + *x S3 + *x S4 + *x S5 + *x S6 = 25 *x A + *x B + *x C + *x D + *x S + *x S2 + *x S3 + *x S4 + *x S5 + *x S6 = 3 *x A + *x B + *x C + *x D + *x S + *x S2 + *x S3 + *x S4 + *x S5 + *x S6 = 7 28_SI_-_PesquisaOperacional_I_-_o27 47

48 Pesquisa Operacional 3 Atualização: 2/3/28 Problema 3 Modelagem original do terceiro problema: Função Objetivo: [MAX] 2 * x EM + 7 * x C Restrições: 2 * x EM + * x C ü 8 <= Restrição de horas-máquina 2 * x EM + 4 * x C ü 24 <= Restrição de homens-hora a) Eliminando as desigualdades das Restrições Como há duas restrições do tipo menor ou igual, podemos transformá-las em igualdades acrescentando variáveis de sobra em cada uma das restrições: 2 * x EM + * x C ü 8 => 2 * x EM + * x C + * x S = 8 2 * x EM + 4 * x C ü 24 => 2 * x EM + 4 * x C + * x S2 = 24 Onde x S significa o número de horas/máquina não usado e x S2 o número de homens/hora não usados. b) Fazendo com que todas as equações tenham todas as variáveis Basta acrescentar em todas as equações as variáveis faltantes, com coeficiente zero: [MAX]2 * x EM + 7 * x C + * x S + * x S2 2 * x EM + * x C + * x S * x S2 = 8 2 * x EM + 4 * x C + * x S * x S2 = Encontre as soluções iniciais, variáveis básicas e não básicas para cada um. Problema [MAX]5 * x A + 72 * x B + * x S + * x S2 6 * x A + 25 * x B + * x S * x S2 = 3 * x A + 8 * x B + * x S * x S2 = 5 Solução inicial: x A = x B = ; x S = 3; x S2 = 5 Variáveis não-básicas: x A e x B Variáveis básicas: x S e x S2 28_SI_-_PesquisaOperacional_I_-_o27 48

49 Pesquisa Operacional 4 Atualização: 2/3/28 Problema 2 [MAX] *x A + 5*x B + 35*x C + 65*x D + *x S + *x S2 + *x S3 + *x S4 + *x S5 + *x S6 5*x A + *x B + 5*x C + 35*x D + *x S + *x S2 + *x S3 + *x S4 + *x S5 + *x S6 = 4 *x A + 7*x B + 4*x C + *x D + *x S + *x S2 + *x S3 + *x S4 + *x S5 + *x S6 = 72 *x A + *x B + *x C + *x D + *x S + *x S2 + *x S3 + *x S4 + *x S5 + *x S6 = *x A + *x B + *x C + *x D + *x S + *x S2 + *x S3 + *x S4 + *x S5 + *x S6 = 25 *x A + *x B + *x C + *x D + *x S + *x S2 + *x S3 + *x S4 + *x S5 + *x S6 = 3 *x A + *x B + *x C + *x D + *x S + *x S2 + *x S3 + *x S4 + *x S5 + *x S6 = 7 Solução inicial: x A = x B = x C = x D = ; x S = 4; x S2 = 72; x S3 = ; x S4 = 25; x S5 = 3; x S6 = 7 Variáveis não-básicas: x A, x B, x C, x D Variáveis básicas: x S, x S2, x S3, x S4, x S5, x S6 Problema 3 [MAX]2 * x EM + 7 * x C + * x S + * x S2 2 * x EM + * x C + * x S * x S2 = 8 2 * x EM + 4 * x C + * x S * x S2 = 24 Solução inicial: x EM = x C = ; x S = 8; x S2 = 24 Variáveis não-básicas: x EM e x C Variáveis básicas: x S e x S2 28_SI_-_PesquisaOperacional_I_-_o27 49

50 Pesquisa Operacional Atualização: 2/3/28 Unidade 2: Método Simplex e Ferramentas Computacionais Tópico 6: Usando o Método Simplex para Solução de Problemas Prof. Daniel Caetano Objetivo: Apresentar o Método Simplex para solução de problemas de Programação Linear. Bibliografia: - MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, 27. Introdução A solução gráfica para problemas de programação linear é bastante elucidativa. Entretanto, é uma forma desajeitada de resolver problemas, além de se tornar complexa ou impossível de ser aplicada para problemas com mais de duas variáveis de decisão (pois seria necessário realizar figuras de 3, 4, 5... n dimensões). Uma forma alternativa é o uso do Método Simplex para a resolução dos problemas de programação linear. O Método Simplex é um método sistemático, baseado em um tableau, onde são indicados todos os dados do problema e, realizando algumas operações, a solução ótima é encontrada. Embora o Simplex use cálculos bastante simples, sua seqüência é bastante tediosa. Esta característica faz com que seja interessante criar programas para resolver problemas pelo Método Simplex. Entretanto, é necessário aprender todos os passos do Simplex, verificando suas qualidades e os pontos críticos onde podem surgir problemas, possibilitando uma correta interpretação dos resultados quando a solução por encontrada por meio de um software.. A Modelagem Voltando ao Problema extraído de MOREIRA (26) : Uma fábrica produz dois produtos, A e B. Cada um deve ser processado por duas máquinas, M e M 2. Devido à programação de outros produtos que também usam estas máquinas, estão disponíveis para os produtos A e B apenas 24 horas da máquina M e 6 horas da máquina M 2. Para produzir uma unidade do produto A, são necessárias 4 horas em cada uma das máquinas e para produzir uma unidade do produto B, são necessárias 6 horas em M e 2 horas em M 2. Cada unidade de A vendida gera um lucro de R$ 8, e cada unidade de B vendida gera um lucro de R$ 6,. Existe uma previsão de demanda máxima de 3 unidades para B, mas nenhuma restrição de demanda para A. Deseja-se saber: quanto produzir de cada produto para maximizar o lucro? 28_SI_-_PesquisaOperacional_I_-_o27 5

51 Pesquisa Operacional 2 Atualização: 2/3/28 Cujo modelo final era: Função Objetivo: [MAX] 8 * x A + 6 * x B Sujeito a: 4 * x A + 6 * x B ü 24 <= Restrição do número de horas de M 4 * x A + 2 * x B ü 6 <= Restrição do número de horas de M 2 * x B ü 3 <= Restrição de Demanda para B Sendo as variáveis de decisão x A e x B, indicando as quantidades de produção para cada produto A e B. O primeiro passo para a resolução para o Simplex será colocar o problema na forma padrão, para atender às exigências do método Simplex com relação às restrições e também para determinar mais facilmente a solução inicial. Como visto anteiormente, a forma padrão para este modelo é: Função Objetivo: [MAX] 8 * x A + 6 * x B + * x S + * x S2 + * x S3 Sujeito a: 4 * x A + 6 * x B + * x S + * x S2 + * x S3 = 24 <= Restrição M 4 * x A + 2 * x B + * x S + * x S2 + * x S3 = 6 <= Restrição M 2 * x A + * x B + * x S + * x S2 + * x S3 = 3 <= Restrição B 2. Soluções Básicas e Não-Básicas Como visto anteriormente, não é possível determinar uma solução inicial facilmente com os dados fornecidos até então, pois há 5 incógnitas mas apenas 3 equações, sendo um problema indeterminado. Entretanto, como já visto, é possível escolher duas variáveis quaisquer e fixar seus valores, fazendo com que o problema fique com 3 equações e 3 incógnitas, tornando-se um sistema determinado; com isso, fica possível o cálculo das variáveis restantes, possibilitando encontrar a já conhecida "solução inicial viável". Por facilidade nas contas, os valores a serem fixados para as variáveis serão sempre (zero). As variáveis escolhidas para terem seu valor definido como zero formam a chamada "solução não-básica" e as variáveis restantes, cujos valores serão calculados, formam a chamada "solução básica". Note que, para que esta solução seja viável, é preciso que o modelo tenha sido colocado na forma padrão; isso implica aplicar todos os truques que já foram vistos e, em alguns casos, outros que ainda serão vistos no futuro. 28_SI_-_PesquisaOperacional_I_-_o27 5

52 Pesquisa Operacional 3 Atualização: 2/3/28 Algumas aulas atrás, foi vista a área de soluções possíveis para este problema: Também foi dito que as soluções ótimas estariam sempre nas regiões extremas desta área; em geral, nos vértices. O Simplex é um método matemático que explora estas características, iniciando por uma solução inicial viável. Por padrão, é definido que as variáveis de decisão iniciais (neste acaso, X A e X B ) é que serão zeradas, e com isso é possível calcular uma solução incial: Solução Básica: x S = 24 <= Restrição M x S2 = 6 <= Restrição M 2 x S3 = 3 <= Restrição B Solução Não-Básica: x A = x B = Revisando, a idéia do Simplex é a seguinte: dada uma solução inicial (um dos pontos de vértice), ele utiliza as inequações das restrições para determinar o próximo vértices e, escolhendo o melhor vértice encontrado, repete o processo. Resumidamente, se na figura anterior fosse iniciado o processo pelo vértice (,), o método calcularia o valor da função objetivo nos vértices (,3) e (4,) (que são os vértices vizinhos ao vértice (,)) e escolheria aquele que a função objetivo tivesse o maior valor (é um problema de maximização). Supondo que este vértice seja o vértice (4,), o método calcularia o valor dos vértices (,) e (3,2), que são os vértices vizinhos e, mais uma vez, escolheria aquele que tem o maior valor na função objetivo... repetindo este processo até que não fosse possível melhorar a solução. 28_SI_-_PesquisaOperacional_I_-_o27 52

53 Pesquisa Operacional 4 Atualização: 2/3/28 Lembrando que os vértices da figura são estes: Ponto X A X B X S X S2 X S3 A B 3 6 C,5 3 4 D 3 2 E E observando que, se há m incógnitas e n equações, haverá sempre (m-n) incógnitas com valor igual a zero nos pontos de vértice, o Simplex nada mais faz do que procurar, de uma forma sistemática, qual é a combinação de (m-n) variáveis que, quando igualadas a zero, tornam o valor da função objetivo máximo. A partir do próximo tópico será apresentado, então, a seqüência de cálculos matemáticos que compõe o Método Simplex. 3. O Método Simplex Para iniciar o Simplex é necessária uma solução possível, ainda que ela esteja longe de ser a melhor solução. A partir desta solução, o método permite que se "navegue" ao longo dos extremos do espaço de soluções possíveis, até chegar à solução ótima. O ponto de partida costuma ser a solução trivial, ou seja, aquela em que a origem do espaço é a solução. Em outras palavras, aquela em que as variáveis de decisão são zero. O Método Simplex, entretanto, não é "cego", isto é, não explora os extremos do espaço de soluções de forma aleatória. Da "solução trivial", o processo irá para o próximo extremo contíguo que fornecer o maior incremento na função objetivo (no caso de um problema de maximização). Cada solução intermediária será apresentada na forma de uma tabelinha denominada "tableau". Em cada tableau serão realizados alguns cálculos que permitirão gerar o próximo tableau, que representa a próxima solução (o extremo seguinte do espáco de soluções possíveis). O processo é repetido até que qualquer mudança nova sempre piore o resultado da função objetivo, ao invés de melhorar (quando então a resolução terá chegado ao fim). O algoritmo é: ) Monta-se o tableau da solução inicial, que corresponde à origem; 2) Aplicam-se cálculos no tableau, cujo resultado é um segundo tableau; 3) Realiza-se um teste para verificar se a solução é ótima; 4) Caso não seja, repetem-se os cálculos no tableau, gerando o próximo tableau. 28_SI_-_PesquisaOperacional_I_-_o27 53

54 Pesquisa Operacional 5 Atualização: 2/3/ Exemplo de Aplicação do Método Simplex Neste primeiro exemplo, será resolvido o problema já apresentado, que possuía apenas restrições do tipo ü, e que já foi devidamente convertido para a forma padrão. O modelo matemático na forma padrão encontrado anteriormente foi: Função Objetivo: [MAX] 8 * x A + 6 * x B + * x S + * x S2 + * x S3 Sujeito a: 4 * x A + 6 * x B + * x S + * x S2 + * x S3 = 24 <= Restrição M 4 * x A + 2 * x B + * x S + * x S2 + * x S3 = 6 <= Restrição M 2 * x A + * x B + * x S + * x S2 + * x S3 = 3 <= Restrição B Segue, agora, a construção do primeiro tableau Construção do Primeiro Tableau O primeiro passo é construir uma pequena tabela. O número de linhas será o número de restrições mais quatro. Assim, este problema tem uma tabela de 7 linhas. O número de colunas é igual ao número de variáveis mais quatro, ou seja, neste caso o tableau terá 9 colunas. O aspecto do primeiro tableau deve ser: c j Variáveis na Solução X S X S2 X S3 Linha Z Linha C-Z 8 X A X B 6 2 X S X S2 X S3 b j Linha b j / a ij Na primeira linha, temos a contribuição de cada variável para a função objetivo, sendo que X S a X S3 em nada contribuem, obviamente (em outras palavras, nesta linha é indicado o coeficiente na função objetivo da variável representada na coluna). Observe os valores 8, 6,, e. A segunda linha é basicamente uma linha de título, contendo os nomes das variáveis e algumas outras informações. A primeira coluna, c j, indica a contribuição de cada variável na solução (variáveis da solução básica) para o valor da função objetivo. No caso, as variáveis na solução representada são as variáveis de folga (X S a X S3 ), indicadas na segunda coluna, e nada contribuem na função objetivo (o c j de cada uma delas é - o valor é uma cópia do valor que está sobre a variável na primeira linha). É importante lembrar que estas variávies estão aí porque as variáveis X A e X B foram escolhidas como "solução não-básica" e valem zero. 28_SI_-_PesquisaOperacional_I_-_o27 54

55 Pesquisa Operacional 6 Atualização: 2/3/28 Ainda na segunda linha, aparecem os nomes das variáveis da função objetivo e restrições, além da coluna b j, que representa o lado direito das equações, ou seja, o "número depois do igual" nas restrições da modelagem matemática. Finalmente, há a coluna b j /a ij, que será usada durante o cálculo do Simplex. Vale lembrar que em cada tableau calculado do Simplex é possível visualizar imediatamente a solução representatada através da coluna "variáveis na solução" e da coluna "b j ". O valor da coluna b j é o valor da variável na coluna "variáveis na solução" que estiver na mesma linha que ele. Assim, por exemplo, na linha 3 da tabela, a "variável na solução" é X e o valor de b j é 24. Isso significa que X = 24 nesta solução e, da mesma forma, X 2 = 6 e X 3 = 3. As variáveis que não aparecem na coluna "variáveis na solução" (no caso, X A e X B ) valem (zero). Nas linhas seguintes temos os coeficientes de cada variável, retirados diretamente do modelo matemático, sendo que cada linha é relativa a uma restrição. Note que, como as variáveis na solução são as variáveis de folga, o valor da coluna b j indica os recursos disponíveis, ociosos, relativo a cada uma das variáveis de folga. Finalmente, as duas últimas linhas. As linhas Z e C-Z são também usadas no cálculo. A idéia é indicar na linha Z quanto se retira da função objetivo por aumentar uma unidade desta variável. Já a linha CZ indica quanto se acrescenta na função objetivo por aumentar uma unidade desta variável. Antes de apresentar o primeiro passo do cálculo, é importante apresentar um fato: observe que, nas colunas onde aparecem as variáveis que estão na solução básica (X S a X S3 ), os coeficientes das restrições sempre são: (um) quando a linha e coluna tem o mesmo nome da variável representado e (zero) nas outras. Linha C 8 6 Linha c j Variáveis na Solução X A X B X S X S2 X S3 b j b j / a ij X S X S2 X S Linha Z Linha C-Z Dito isto, é necessário iniciar o cáculo do Simplex, que se inicial com o cálculo da linha Z. Para isso, são usadas as linhas relativas às variáveis na solução. O calculo a ser feito é o seguinte: para a coluna X A, deve-se multiplicar, em cada linha de restrição, o valor do coeficiente nesta coluna pelo c j da linha. Após a multiplicação, soma-se todos os resultados e este é o valor de Z da coluna X A. Por exemplo: Z da coluna X A = 4* + 4* + * =. Deve-se repetir o processo para todas as colunas de variáveis e para a coluna bj. O resultado está apresentado na tabela seguinte: 28_SI_-_PesquisaOperacional_I_-_o27 55

56 Pesquisa Operacional 7 Atualização: 2/3/28 Passo : multiplicando os elementos da linha j pelo valor de c j (indicação da operação dentro dos parênteses, lembrando que a multiplicação é pelo valor c j da linha, mas no caso deste primeiro tableau, os c j são todos zero) Linha C 8 6 Linha c j Variáveis na Solução X A X B X S X S2 X S3 b j b j / a ij X S 4 (* ) 6 (* ) (* ) (* ) (* ) 24 (* ) X S2 4 (* ) 2 (* ) (* ) (* ) (* ) 6 (* ) X S3 (* ) (* ) (* ) (* ) (* ) 3 (* ) Linha Z Linha C-Z Passo 2: Somando os resultados coluna a coluna (resultado dentro dos parênteses) Linha C 8 6 c j Variáveis X A X B X S X S2 X S3 b j na Solução X S 4 () 6 () () () () 24 () X S2 4 () 2 () () () () 6 () X S3 () () () () () 3 () Linha Z Linha C-Z Linha b j / a ij Passo 3: Resultado da linha Z calculado Linha C 8 6 c j Variáveis X A X B na Solução X S 4 6 X S2 4 2 X S3 Linha Z Linha C-Z X S X S2 X S3 b j Linha b j / a ij O cálculo da linha C-Z é mais simples: basta subtrair o valor de Z correspondente a cada variável do coeficiente da variável na função objetivo (Linha C): Passo 4: Calculando C-Z Linha C c j Variáveis na Solução X S X S2 X S3 Linha Z Linha C-Z 8 X A X B X S - X S2 - X S3 - b j Linha b j / a ij 28_SI_-_PesquisaOperacional_I_-_o27 56

57 Pesquisa Operacional 8 Atualização: 2/3/28 Passo 5: C-Z calculado Linha C c j Variáveis na Solução X S X S2 X S3 Linha Z Linha C-Z 8 X A X B X S X S2 X S3 b j Linha b j / a ij Agora o tableau está completo, valendo ressaltar que o valor no cruzamento da coluna b j com a Linha Z representa o valor da função objetivo para a solução atual. Mas como saber se esta solução, na qual X A = e X B =, é uma solução ótima? Bem, a linha C-Z indica o quanto é possível aumentar na função objetivo com o acréscimo de uma unidade em uma dada variável; assim, enquanto houver valores positivos nesta linha, ainda não se chegou à solução ótima. A solução ótima terá sido encontrada quando todos os valores na linha C-Z forem nulos (zero) ou negativos, indicando que não é mais possível melhorar o valor da função objetivo. Assim, a regra é: "Quando todos os valores da linha C-Z forem nulos ou negativos, foi atingida a solução ótima". No caso acima, há valores positivos em duas colunas: na coluna do X A e do X B, indicando que ainda é possível melhorar a função objetivo, aumentando os valores de X A e X B (atualmente iguais a zero) Construção do Segundo Tableau Como dito antes, a idéia do Simplex é procurar qual a combinação de variáveis que devem ser iguais a zero para que a função objetivo seja maximizada. Como determinado no passo anterior, é necessário aumentar uma ou mais unidades em X A ou X B para que o valor da função objetivo cresça. Se uma destas variáveis (que vale zero) deixará de valer zero, é necessário tornar zero o valor de alguma outra variável. Em outras palavras, é preciso tomar duas decisões: ) Uma variável não-básica que se tornará uma variável da solução básica (entra na solucão, ficará com valor diferente de zero). 2) Uma variável da solução básica que se tornará uma variável não-básica (sai da solução, ficará com valor igual a zero). O primeiro problema é de simples solução: a variável que entra na solução básica é aquela cujo valor de C-Z é o mais alto (pois é aquela que mais contribui com o aumento da função objetivo). No caso deste problema, essa variável é a X A, que apresenta um incremento de 8 por unidade na função objetivo. 28_SI_-_PesquisaOperacional_I_-_o27 57

58 Pesquisa Operacional 9 Atualização: 2/3/28 O segundo problema já é um pouco mais complicado, e é agora que a coluna b j /a ij apresenta sua função. Para o cálculo, divide-se o b j de cada linha pelo coeficiente da coluna da variável que entra na solução (no caso, X A ). Considerando que b j é a quantidade de um dado recurso disponível e a ij é a quandidade deste recurso necessária para cada unidade da variável que vai entrar, a idéia é procurar qual das linhas é mais restritiva. No nosso caso, buscamos a restrição que limita mais a produção. Em outras palavras, buscamos o menor valor de b j /a ij. A linha que tiver o menor valor nesta coluna, indicará a variável que sai (veja na coluna Variáveis na Solução). Passo 6: Calculando b j /a ij Linha C c j Variáveis na Solução X S X S2 X S3 Linha Z Linha C-Z 8 X A X B X S Variável que Entra Valor de b j X S2 X S3 b j Linha b j / a ij 24/4 6/4 3/ Passo 7: Com b j /a ij, identificada variável que sai (menor valor maior que zero da coluna b j /a ij ) c j Linha C Variáveis na Solução X S X S2 X S3 Linha Z Linha C-Z 8 X A X B X S Variável que Entra Valor de b j X S2 X S3 b j Linha b j / a ij Ou seja, como o menor valor de b j /a ij é 4, a variável que sai é a X S2, entrando a variável X A em seu lugar. A linha da variável que sai recebe o nome de "linha principal" e o elemento no cruzamento da coluna da variável que entra com a linha principal é chamado de "elemento pivô", sendo que neste caso este elemento vale Agora, X S2 deve ser substituído por X A (lembrando de substituir cj pelo coeficiente da variável que entra na função objetivo, no caso, o 8 que está sobre o X A ), além de apagar todos os valores da coluna b j /a ij, das linhas Z e C-X e, em seguida, será necessário recalcular todas as linhas de restrição do tableau. O objetivo é conseguir que a propriedade de existir "" na célula do cruzamento da variável na solução com sua coluna e "" nas células de 28_SI_-_PesquisaOperacional_I_-_o27 58

59 Pesquisa Operacional Atualização: 2/3/28 cruzamento da variável na solução com as colunas das outras variáveis na solução. Para isso, o primeiro passo é dividir todos os elementos da linha principal pelo elemento pivô, fazendo aparecer um "" no cruzamento da linha da variável que entrou na solução (X A ) com a coluna da variável (no caso, X A ): Passo 8: Recalculando a linha principal Linha C 8 6 Linha c j Variáveis na Solução X A X B X S X S2 X S3 b j b j / a ij X S X A 4/4 2/4 /4 /4 /4 6/4 X S3 3 Linha Z Linha C-Z Passo 9: Linha principal recalculada - note que na linha/coluna X A, a célula vale. c j 8 Linha C Variáveis na Solução X S X A X S3 Linha Z Linha C-Z 8 X A 4 6 X B 6 /2 X S X S2 /4 X S3 b j Linha b j / a ij O passo seguinte é recalcular as outras linhas para que as outras linhas da coluna XA valham (zero). Neste caso, as outras linhas são referentes às variáveis XS e XS3. Recalculando X S : Primeiramente, determina-se o pivo da linha da variável X S, que é o cruzamento da linha de X S com a coluna da variável que está entrando, no caso, X A. No caso, este pivô também vale 4. Passo : Pivô da linha da variável X S Linha C 8 6 Linha c j Variáveis na Solução X A X B X S X S2 X S3 b j b j / a ij X S X A /2 /4 4 X S3 3 Linha Z Linha C-Z 28_SI_-_PesquisaOperacional_I_-_o27 59

60 Pesquisa Operacional Atualização: 2/3/28 A idéia é, então, subtrair de cada elemento da linha X S o valor do pivô desta linha (pivô = 4) multiplicado pelo elemento correspondente da linha principal, como indicado no tableau abaixo: Passo : Recalculando a linha da variável X S Linha C 8 6 c j 8 Variáveis na Solução X S X A X S3 Linha Z Linha C-Z X A 4-4* X B 6-4*/2 /2 X S -4* X S2-4*/4 /4 X S3-4* b j 24-4*4 4 3 Linha b j / a ij Passo 2: Linha da variável X S recalculada c j 8 Linha C Variáveis na Solução X S X A X S3 Linha Z Linha C-Z 8 X A 6 X B 4 /2 X S X S2 - /4 X S3 b j Linha b j / a ij Recalculando X S3 : Novamente, determina-se o pivo da linha, agora da variável X S3, que é o cruzamento da linha de X S3 com a coluna da variável que está entrando, no caso, X A. No caso, este pivô vale. Passo 3: Determinação do pivô da linha X S2 Linha C 8 6 c j 8 Variáveis na Solução X S X A X S3 Linha Z Linha C-Z X A X B 4 /2 X S X S2 - /4 X S3 b j Linha b j / a ij Mais uma vez, subtrai-se de cada elemento da linha X S3 o valor do pivô desta linha multiplicado pelo elemento correspondente da linha principal, como indicado abaixo: 28_SI_-_PesquisaOperacional_I_-_o27 6

61 Pesquisa Operacional 2 Atualização: 2/3/28 Passo 4: Recalculando a linha da variável X S3 Linha C 8 6 c j 8 Variáveis na Solução X S X A X S3 Linha Z Linha C-Z X A -* X B 4 /2 -*/2 X S -* X S2 - /4 -*/4 X S3 -* b j *4 Linha b j / a ij Passo 5: Linha da variável X S3 recalculada c j 8 Linha C Variáveis na Solução X S X A X S3 Linha Z Linha C-Z 8 X A 6 X B 4 /2 X S X S2 - /4 X S3 b j Linha b j / a ij Agora o tableau está atualizado e é possível recalcular as linhas Z e C-Z: Passo 6: Calculando a nova linha Z Linha C 8 6 c j Var. na X A X B Solução X S (*) 4 (*) 8 X A (*8) /2(*8) X S3 (*) (*) Linha Z Linha C-Z X S (*) (*8) (*) ++ X S2 - (*) /4(*8) (*) +2+ X S3 (*) (*8) (*) ++ b j 8 (*) 4 (*8) 3 (*) +32+ Linha b j / a ij Passo 7: Linha Z calculada e calculando a nova linha C-Z Linha C 8 6 c j Var. na X A X B X S X S2 Solução X S 4-8 X A /2 /4 X S3 Linha Z Linha C-Z X S3 - b j Linha b j / a ij 28_SI_-_PesquisaOperacional_I_-_o27 6

62 Pesquisa Operacional 3 Atualização: 2/3/28 Passo 8: Tableau 2 finalizado Linha C 8 c j Var. na X A Solução X S 8 X A X S3 Linha Z 8 Linha C-Z 6 X B 4 /2 4 2 X S X S2 - /4 2-2 X S3 b j Linha b j / a ij Construção do Terceiro Tableau Para a construção do terceiro tableau, novamente será necessário identificar a variável que vai entrar na solução e a variável que vai sair da solução. O C-Z mais alto é agora o da variável X B, sendo ela a entrar na solução. Para identificar a variável que sai, é necessário calcular os b j /a ij de cada linha: Passo 9: Indicação da variável que entra e variável que sai c j 8 Linha C Var. na Solução X S X A X S3 Linha Z Linha C-Z 8 X A 8 6 X B 4 /2 4 2 X S X S2 - /4 2-2 X S3 b j Linha b j / a ij 8/4 = 2 4/,5 = 8 3/ = 3 O menor valor de b j /a ij foi 2, na linha de X S. Assim, é esta a variável que sai, como indicado no tableau anterior. O pivô da linha principal é o valor 4, também indicado. Os próximos passos são a substituição da variável, ajuste do c j, eliminação dos conteúdos da coluna b j /a ij e das linhas Z e C-Z, seguindo-se o recálculo da linha principal, dividindo todos seus elementos pelo valor do pivô (pivô = 4): Passo 2: Cálculo da nova linha principal c j 6 8 Linha C Var. na Solução X B X A X S3 Linha Z Linha C-Z 8 X A /4= 6 X B 4/4= /2 X S /4 X S2 -/4 /4 X S3 /4= b j 8/4=2 4 3 Linha b j / a ij 28_SI_-_PesquisaOperacional_I_-_o27 62

63 Pesquisa Operacional 4 Atualização: 2/3/28 Passo 2: Linha principal já recalculada Linha C 8 6 Linha c j Var. na Solução X A X B X S X S2 X S3 b j b j / a ij 6 X B /4 -/4 2 8 X A /2 /4 4 X S3 3 Linha Z Linha C-Z O "" no cruzamento XB já apareceu. Agora é preciso ajustar as outras linhas para que os "" apareçam nas outras linhas desta coluna. Como o pivô da linha X A é /2, a linha X A será recalculada subtraindo de cada elemento dela o seu pivô multiplicado pelo elemento da linha principal: Passo 22: Recalculando a linha X A Linha C 8 6 Linha c j Var. na Solução X A X B X S X S2 X S3 b j b j / a ij 6 X B /4 -/4 2 8 X A -/2* /2 -/2* -/2*/4 /4 -/2*-/4 -/2* 4 -/2*2 X S3 3 Linha Z Linha C-Z Passo 23: Linha X A recalculada Linha C 8 6 Linha c j Var. na Solução X A X B X S X S2 X S3 b j b j / a ij 6 X B /4 -/4 2 8 X A -/8 3/8 3 X S3 3 Linha Z Linha C-Z 28_SI_-_PesquisaOperacional_I_-_o27 63

64 Pesquisa Operacional 5 Atualização: 2/3/28 Na linha X S3, o pivô é o. A linha X S3 será recalculada subtraindo de cada elemento dela o seu pivô multiplicado pelo elemento da linha principal: Passo 24: Recalculando a linha X S3 Linha C 8 6 c j 6 8 Var. na Solução X B X A X S3 Linha Z Linha C-Z X A -* X B -* X S /4 -/8 -*/4 X S2 -/4 3/8 -*-/4 X S3 -* b j *2 Linha b j / a ij Passo 25: Linha X S3 recalculada c j 6 8 Linha C Var. na Solução X B X A X S3 Linha Z Linha C-Z 8 X A 6 X B X S /4 -/8 -/4 X S2 -/4 3/8 /4 X S3 b j 2 3 Linha b j / a ij Agora o tableau está atualizado e é possível recalcular a linha Z e C-Z: Passo 26: Calculando a nova linha Z Linha C 8 6 c j Var. na X A X B Solução 6 X B (*6) (*6) 8 X A (*8) (*8) X S3 (*) (*) Linha Z Linha C-Z X S /4(*6) -/8(*8) -/4(*) 5-+ X S2 -/4(*6) 3/8 (*8) /4 (*) X S3 (*6) (*8) (*) ++ b j 2 (*6) 3 (*8) (*) Linha b j / a ij Passo 27: Calculando a nova linha C-Z Linha C 8 6 c j 6 8 Var. na X A X B Solução X B X A X S3 Linha Z 8 6 Linha C-Z X S /4 -/8 -/4 5-5 X S2 -/4 3/8 /4 5-5 X S3 - b j Linh a b j / a ij 28_SI_-_PesquisaOperacional_I_-_o27 64

65 Pesquisa Operacional 6 Atualização: 2/3/28 Passo 28: Tableau final Linha 8 C c j Var. na X A Solução 6 X B 8 X A X S3 Linha Z 8 Linha C-Z 6 X B 6 X S /4 -/8 -/4 5-5 X S2 -/4 3/8 /4 5-5 X S3 b j Linha b j / a ij Como na linha C-Z não há qualquer valor maior que zero, esta é a solução ótima. A solução é indicada pelas variáveis na coluna "Variáveis na Solução" e seus respectivos valores estão na coluna b j, sendo que as variáveis que não estão em nenhuma linha da tabela têm, por definição, valor igual a zero. Assim, a solução ótima para o problema é: X A = 3 X B =2 X S = X S2 = X S3 = O que significa que serão produzidas 3 unidades de A, 2 unidades de B, esgotando as horas de máquina e 2 disponíveis, mas não atendendo completamente a demanda de B, já que o valor de X S3 é (quantas unidades faltaram para atender a demanda máxima de B). Também é possível observar o valor final da função objetivo, no cruzamento da coluna b j com a linha Z: 36. Bibliografia MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, _SI_-_PesquisaOperacional_I_-_o27 65

66 Pesquisa Operacional Atualização: 2/3/28 Unidade 2: Método Simplex e Ferramentas Computacionais Tópico 7: Artifícios de Modelagem e Variáveis Artificiais Prof. Daniel Caetano Objetivo: Apresentar artifícios para a resolução de alguns problemas de modelagem. Introdução Até o presente momento foram modelados e resolvidos problemas considerados "bem comportados", isto é, que de início já possuiam praticamente todas as características para que funcionem bem com o Método Simplex. Adicionalmente, já foi apresentada a maneira de lidar com problemas em que há restrições do tipo ü, que foram transformadas em restrições do tipo "=". Entretanto, outras situações podem surgir: restrições com restrições do tipo maior ou igual, igualdades, problemas de minimização, "lado direito" de eqüações negativo... estas situações igualmente vão exigir que algum "truque" seja usado, similar ao que aconteceu com as variáveis de folga nas restrições do tipo ü. Nesta aula serão apresentados alguns destes truques, em que situações eles são usados e a forma de aplicá-los.. Lado Direito das Restrições Negativo Considere que todas as variáveis de uma restrição sejam movidas o lado esquerdo do sinal da equação (= ou ü ou ) e todos os números (constantes) para o lado direito do sinal; em geral, haverá apenas um número (uma constante) solitária do lado direito. Isto é o que se chama de "lado direito". Este é o valor que não poderá ser negativo e, se for, uma medida precisará ser tomada. Apenas para elucidar o conceito de "lado direito", segue um exemplo abaixo: x A + x B + 7 = y A + y B x A + x B - y A - y B = -7 Neste caso, "-7" é o lado direito... e, neste caso, ele está menor que zero e não será possível utilizar esta equação, neste formato, para o Simplex. Mas por que não é possível? Na verdade, isso é uma conseqüência direta da condição de não negatividade e da maneira com que se determina a solução incial; mas, simplificadamente, pode-se dizer simplesmente que a coluna b j (o lado direito das restrições) nunca pode conter um número negativo, porque ela 28_SI_-_PesquisaOperacional_I_-_o27 66

67 Pesquisa Operacional 2 Atualização: 2/3/28 representa os recursos que estão sobrando, ou seja, os recursos disponíveis... e não faz sentido falar em recursos disponíveis negativos! Assim, quando uma situação deste tipo ocorrer, será necessária uma correção; esta correção é simples: basta multiplicar a equação ou inequação por -. Observe equação apresentada anteriormente: x A + x B - y A - y B = -7 O lado direito tem o valor negativo -7, e isso não é aceitável. Neste caso, basta multiplicar a restrição toda por -, invertendo todos os sinais e tornando o lado direito positivo: [ x A + x B - y A - y B = -7 ] * (-) => - x A - x B + y A + y B = 7 Mais alguns exemplos seguem. Se, ao modelar, houver equações do seguinte tipo: 5X A - 6X B ü - 7 2X A + X B - 3-4X A - 4X B = - 6 Basta multiplicar todas as restrições por -, lembrando de inverter o sinal das desigualdades: [ 5X A - 6X B ü - 7 ] *(-) => -5X A + 6X B +7 [ 2X A + X B - 3 ] *(-) => -2X A - X B ü + 3 [- 4X A - 4X B = - 6 ] *(-) => +4X A + 4X B = + 6 É importante lembrar que apenas o lado direito não pode ser negativo. Os coeficientes das variáveis podem. 2. Restrições do Tipo Este tipo de restrição é bastante comum em problemas de minimização, embora apareça também em alguns problemas de maximização. Assim como foi necessário fazer modificações nas restrições do tipo ü, com as variáveis de folga, no caso das restrições do tipo também será necessário algum tipo de ajuste. Considere, por exemplo, a restrição abaixo: 4X A + X B 45 28_SI_-_PesquisaOperacional_I_-_o27 67

68 Pesquisa Operacional 3 Atualização: 2/3/28 Qualquer valor de X A e X B que tornem a soma maior ou igual a 45 terá resolvido o problema. Por exemplo, substituindo os valores X A =4 e X B =3: 4*4 + *3 = = 46 que é maior ou igual a 45. Assim, pode-se dizer que X A =4 e X B =3 é uma solução possível para o problema. Mas, quando se transforma a inequação em uma equação, o problema surge: 4X A + X B = 45 Esta equação não mais admite X A =4 e X B =3 como resposta (porque 46 não é igual a 45), significando que modelagem, desta forma, não é mais capaz de representar o problema original... e, devido ao objetivo final - que é o de resolver o problema real - não se pode realizar mudanças na modelagem que a torne incapaz de representar o problema! A solução aqui, similar à solução para a restrição do tipo ü, é usar uma variável a mais, só que agora ela aparecerá do lado direito: 4X A + X B 45 => 4X A + X B = 45 + X E Sempre será possível escolher um valor de X E que torne a igualdade verdadeira. Esta variável é chamada de variável de excesso, que pode ser encarada como uma variável de folga negativa, ou uma "variável de falta": 4X A + X B = 45 + X E => 4X A + X B -X E = 45 Infelizmente isso não resolve totalmente o problema; isso ocorre porque, no momento de terminar a solução inicial, quando as variáveis de decisão (X A e X B, no caso) serão consideradas iguais a zero, será encontrado um valor negativo para a variável X E, o que não é admissível. Observe o que ocorre ao considerar X A = X B = : 4X A + X B -X E = 45 => 4* + * -X E = 45 => -X E = 45 => X E = -45 X E não pode ter um valor negativo! Como resolver este novo problema? Neste caso o truque é inserir outra variável e indicar que a variável de excesso também faz parte da solução não-básica, ou seja, que X A = X B = X E = : 4X A + X B -X E + A = 45 => + A = 45 => A = 45 OK! Entretanto, esta variável a ser inserida não tem qualquer tipo de significado físico, ela é um artifício matemático para que se possa encontrar uma solução inicial simples. Por esta razão, este tipo de variável é chamada de variável artificial. Estas variáveis terão uma implicação na resolução do Simplex, mas este assunto não será estudado a fundo nesta disciplina. 28_SI_-_PesquisaOperacional_I_-_o27 68

69 Pesquisa Operacional 4 Atualização: 2/3/28 3. Restrições do Tipo = Aparentemente, como se deseja restrições de igualdade, a impressão que se tem inicialmente é que, ao encontrar uma restrição de igualdade, nada deve ser feito. Entretanto, isso não é verdade. Isso ocorre porque é necessário calcular uma solução inicial viável para iniciar o Simplexe e, observe o que ocorre quando se zera os valores as variáveis de decisão (X A e X B, neste caso) em uma restrição de igualdade: 4X A + 4X B = 6 => 4* + 4* = 6 => = 6!?!?!?!? Não é preciso muito esforço para perceber que este resultado é absurdo. Assim, para possibilitar a fácil determinação de uma solução inicial - sem causar este absurdo, basta inserir uma variável artificial nas restrições do tipo igualdade, ou seja: 4X A + 4X B + A = 6 => 4* + 4* + A = 6 => = 6 - A => A = 6 OK! Mais uma vez, o uso de variáveis artificiais traz implicações no Simplex. 4. Implicações dos Artifícios de Modelagem na Função Objetivo Assim como a Função Objetivo é modificada na forma padrão com coeficientes nas variáveis de folga acrescentadas ao modelo, também as variáveis de excesso entrarão na Função Objetivo com coeficiente zero, pela mesma razão anterior: para que todas as variáveis apareçam na Função Objetivo. Mas, e as variáveis artificiais? Bem, como o próprio nome diz, estas variáveis não fazem parte do problema, são apenas um artifício para facilitar o cálculo de uma solução inicial de forma simples, para que possamos dar partida no Simplex. Por esta razão, é preciso garantir no método Simplex que estas variáveis sejam retiradas da base. Para fazer isso, existem dois mecanismos: ) O Método do M grande, onde as variáveis artificiais entram "prejudicando" a Função Objetivo na proporção de um valor M maior que qualquer outro valor existente no problema; 2) O Método das Duas Fases, sendo que na primeira fase se substitui a função objetivo pela minimização da soma de todas as variáveis artificiais e, ao obter o resultado final, volta-se à função objetivo original e, finalmente, resolve-se o problema. O primeiro método pode ser visto no livro, e envolve algumas mudanças no procedimento de cálculo. O segundo método é um pouco mais longo (pois envolve duas 28_SI_-_PesquisaOperacional_I_-_o27 69

70 Pesquisa Operacional 5 Atualização: 2/3/28 soluções seqüenciais), mas o procedimento não será diferente do que foi visto no cálculo do Simplex tradicional. Ambos os métodos fogem ao escopo deste curso. 4.. Problemas de Minimização Até agora, entretanto, nada foi dito sobre problemas de minimização. O método Simplex parece resolver muito bem problemas de maximização, mas não há nada parecido apra minimização? Na verdade, é possível alterar um pouco o procedimento do Simplex de forma que sua sistemática minimize o valor da função objetivo. Entretanto, há uma modificação simples que pode ser feita no problema para usar o mesmo procedimento que já foi apresentado. A idéia é, então, transformar o problema de minimização em um problema de maximização que seja equivalente a ele. Isto é simples: basta multiplicar a função objetivo por -. Assim, é possível dizer que: [MIN] 4X A + 4X B => [MAX] - 4X A - 4X B É importante ressaltar que os valores determinados para as variáveis de decisão, após este ajuste, estarão corretos ao final do processo. Nenhuma modificação precisará ser feita. Entretanto, o valor da função objetivo (que pode ser visto no cruzamento da Linha Z com a coluna b j do tableau) estará invertido, ou seja, é preciso multiplicá-lo por - para obter o valor correto da função objetivo original. Exercício L3 Modele e apresente na forma padrão (pronto para o Simplex) o seguinte problema abaixo: ) Para realizar a instalação de terminais de computador, uma empresa pode usar os esforços de dois funcionários: Pedro e João. O salário de Pedro é R$ 25, por hora e o de João é de R$ 4, por hora. Pedro consegue instalar um terminal em meia hora (,5 hora) e João em 5 minutos (,25 hora). É necessário instalar um total de 4 terminais, sendo que Pedro deve instalar pelo menos deles. Sabe-se que nenhum dos dois funcionários pode trabalhar mais do que 8 horas em um dia. Deseja-se minimizar o custo total da instalação.. Modele matematicamente o problema acima. 2. Coloque o problema na forma padrão, pronto para ser resolvido pelo Simplex. Bibliografia MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, _SI_-_PesquisaOperacional_I_-_o27 7

71 Pesquisa Operacional I Primeiro Semestre de 27 Notas da Aula 9: Usando o Método Simplex das Duas Fases Prof. Daniel Caetano Objetivo: Apresentar o Método Simplex com Duas Fases para resolver problemas com variáveis artificiais. Introdução Nas aulas anteriores, foram apresentados diversos artifícios matemáticos para que diversos tipos de problemas possam ser modelados e resolvidos pelo algoritmo Simplex. Entretanto, alguns daqueles artifícios provocavam o aparecimento das chamadas variáveis artificiais, que não possuem qualquer significado físico e precisam ser totalmente eliminadas de um problema para que ele seja resolvido a contento. Infelizmente, o Médoto Simplex não elimina naturalmente estas variáveis, então precisaremos fazer um pequeno truque, que é o de executar duas vezes o Simplex: a primeira vez com uma função objetivo que visa eliminar as variáveis artificiais... ao fim desta fase, recuperamos a função objetivo original e continuamos o problema com a mesma.. O Modelo Matemático na Forma Padrão Suponhamos que a modelagem de um problema já tenha sido resolvida, e o resultado seja o representado abaixo: Função Objetivo: [MAX] 4 * x A + 3 * x B Sujeito a: 2 * x A + * x B = 5 * x B 4 Como visto anteriomente, as restrições do tipo "=" ganham uma variável artificial e as restrições do tipo " " ganham uma variável de excesso e uma variável artificial. Assim, o modelo pode ser reescrito como: F.O.: [MAX] 4 * x A + 3 * x B S.A.: 2 * x A + * x B + * A = 5 * x B - * x E + * A 2 = 4 O que, colocando finalmente na forma padrão, fica: 28_SI_-_PesquisaOperacional_I_-_o27 7

72 Pesquisa Operacional I 2 Primeiro Semestre de 27 F.O.: [MAX] 4 * x A + 3 * x B + * x E + * A + * A 2 S.A.: 2 * x A + * x B + * x E + * A + * A 2 = 5 * x A + * x B - * x E + * A + * A 2 = 4 2. Eliminando as Variáveis Artificiais (Primeira Fase) Bem, como o problema apresenta variáveis artificiais, o primeiro passo é eliminá-las, ou seja, encontrar uma solução viável em que tais variáveis não estejam na solução. Mas como fazer isso? Pensemos assim: se o valor das variáveis artificiais fosse (zero), isso não seria o mesmo que se elas não estivessem na solução? Sim, seria! Então o truque é achar uma solução em que elas valham zero! Para conseguir isso, vamos colocar a função objetivo atual de lado por um momento. Em seu lugar, usaremos esta outra função objetivo: F.O.: [MIN] * A + * A 2 Observe que o menor valor possível para esta função objetivo é zero, considerando que nenhuma variável pode ter valor negativo, quando ambas as variáveis A e A 2 valerem zero. Inicialmente vamos inverter o sinal desta função objetivo, para tornar o nosso problema um problema de maximização: F.O.: [MAX] - * A - * A 2 E vamos acrescentar as variáveis faltantes: x A, x B e x E : F.O.: [MAX] * x A + * x B + * x E - * A - * A 2 Colocando esta nova função objetivo juntamente com as restrições originais, temos o modelo matemático a ser resolvido na primeira fase: F.O.: [MAX] * x A + * x B + * x E - * A - * A 2 S.A.: 2 * x A + * x B + * x E + * A + * A 2 = 5 * x A + * x B - * x E + * A + * A 2 = 4 Sendo a solução inicial X A =X B =X E =, A =5 e A 2 = Construção do Primeiro Tableau O primeiro passo é construir o primeiro Tableau. Lembremos que o número de linhas será o número de restrições mais quatro. Assim, em nosso problema teremos uma tabela de 6 linhas. O número de colunas é igual ao número de variáveis mais quatro, ou seja, em nosso caso, o tableau terá 9 colunas. O aspecto do primeiro tableau deve ser: 28_SI_-_PesquisaOperacional_I_-_o27 72

73 Pesquisa Operacional I 3 Primeiro Semestre de 27 c j Variáveis na Solução A A 2 Linha Z Linha C-Z X A 2 X B X E - - A - A 2 b j 5 4 Linha b j / a ij Calculemos as linhas Z e C-Z: c j - - Variáveis na Solução A A 2 Linha Z Linha C-Z X A X B -2 2 X E - - A - - A 2 - b j Linha b j / a ij A variável que entra pode ser tanto a x A como a x B, dado que ambas possuem o maior valor. Escolheremos aqui a variável x A, e em seguida calcularemos a coluna bj/aij. c j - - Variáveis na Solução A A 2 Linha Z Linha C-Z X A X B -2 2 X E - - A - - A 2 - b j Linha b j / a ij 7,5 inf. Como 7,5 é menor que infinito, A é a variável que sai: c j - - Variáveis na Solução A A 2 Linha Z Linha C-Z X A X B -2 2 X E - - A - - A 2 - b j Linha b j / a ij 7,5 inf. 28_SI_-_PesquisaOperacional_I_-_o27 73

74 Pesquisa Operacional I 4 Primeiro Semestre de Construção do Segundo Tableau Primeiramente copiamos a maior parte das informações, menos os dados e a variável que saiu: c j Variáveis na Solução X A X B X E - A - A 2 b j Linha b j / a ij - A 2 Linha Z Linha C-Z Acrescentamos a variável que entrou no lugar da que saiu, preenchendo também o c j, usando para isso o valor que está acima da variável que entra na tabela: c j - Variáveis na Solução X A A 2 Linha Z Linha C-Z X A X B X E - A - A 2 b j Linha b j / a ij Agora preencheremos a linha da variável que entrou. Note que a coluna da variável que entrou deve ter "" na linha onde esta variável aparece e "" em todas as outras linhas: c j - Variáveis na Solução X A A 2 Linha Z Linha C-Z X A X B X E - A - A 2 b j Linha b j / a ij No tableau anterior, é possível verificar que, na posição onde preciso de "" (na linha onde entrou X A ), tenho um "2": Primeiro Tableau c j Variáveis na Solução - A X A 2 X B X E A A 2 b j 5 b j / a ij 7,5 28_SI_-_PesquisaOperacional_I_-_o27 74

75 Pesquisa Operacional I 5 Primeiro Semestre de 27 Para que o valor "2" vire "", é preciso dividir esta linha toda por 2: X A X B /2 X E A /2 A 2 b j 5/2 E agora posso colocá-la no segundo tableau: c j - Variáveis na Solução X A A 2 Linha Z Linha C-Z X A X B /2 X E - A /2 - A 2 b j 5/2 Linha b j / a ij Para a outra linha, entretanto, precisamos de um ""... e no primeiro tableau já tínhamos um ""! Basta então copiar a linha: Primeiro Tableau c j Variáveis na Solução - A 2 X A X B X E - A A 2 b j 4 b j / a ij inf. Copiando para o segundo Tableau, temos: c j - Variáveis na Solução X A A 2 Linha Z Linha C-Z X A X B /2 X E - - A /2 - A 2 b j 5/2 4 Linha b j / a ij Calculemos agora as linhas Z e C-Z: c j - Variáveis na Solução X A A 2 Linha Z Linha C-Z X A X B /2 - X E A /2 - - A 2 - b j 5/2 4-4 Linha b j / a ij Assim, é possível verificar qual é a variável que entra: X B. Calculando a coluna bj/aij: 28_SI_-_PesquisaOperacional_I_-_o27 75

76 Pesquisa Operacional I 6 Primeiro Semestre de 27 c j - Variáveis na Solução X A A 2 Linha Z Linha C-Z X A X B /2 - X E A /2 - - A 2 - b j 5/2 4-4 Linha b j / a ij 5 4 Como 4 é o menor valor, então A 2 é a variável que sai: c j - Variáveis na Solução X A A 2 Linha Z Linha C-Z X A X B /2 - X E A /2 - - A 2 - b j 5/2 4-4 Linha b j / a ij Construção do Terceiro Tableau Primeiramente copiamos a maior parte das informações, menos os dados e a variável que saiu: c j Variáveis na Solução X A X A X B X E - A - A 2 b j Linha b j / a ij Linha Z Linha C-Z Acrescentamos a variável que entrou no lugar da que saiu, preenchendo também o c j, usando para isso o valor que está acima da variável que entra na tabela: c j Variáveis na Solução X A X B Linha Z Linha C-Z X A X B X E - A - A 2 b j Linha b j / a ij 28_SI_-_PesquisaOperacional_I_-_o27 76

77 Pesquisa Operacional I 7 Primeiro Semestre de 27 Agora preencheremos a linha da variável que entrou. Note que a coluna da variável que entrou deve ter "" na linha onde esta variável aparece e "" em todas as outras linhas: c j Variáveis na Solução X A X B Linha Z Linha C-Z X A X B X E - A - A 2 b j Linha b j / a ij No tableau anterior, é possível verificar que, na posição onde preciso de "" (na linha onde entrou X B ), já existe um ""! Basta então copiar a linha: c j Variáveis na Solução X A X B Linha Z Linha C-Z X A X B X E - - A - A 2 b j 4 Linha b j / a ij Para a outra linha, entretanto, precisamos de um ""... mas no tableau anterior temos o valor "/2". Será, então, necessário dividir a linha da variável que entrou por "-/2" e posteriormente somá-la à linha que entrará na posição de X A : Do Segundo Tableau c j Variáveis X A X B X E A A 2 b j b j / a ij na Solução /2 /2 5/2 5 X A Linha da variável que entrou no Tableau atual: c j Variáveis X A X B na Solução X B X E - A A 2 b j 4 b j / a ij Linha da variável que entrou no Tableau atual multiplicada por -/2... X A X B -/2 X E /2 A A 2 -/2 b j -2 b j / a ij Somando com a linha do segundo Tableau: X A X B X E /2 A /2 A 2 -/2 b j /2 b j / a ij 28_SI_-_PesquisaOperacional_I_-_o27 77

78 Pesquisa Operacional I 8 Primeiro Semestre de 27 Agora basta copiar estes valores no tabelau atual: c j Variáveis na Solução X A X B Linha Z Linha C-Z X A X B X E /2 - - A /2 - A 2 -/2 b j /2 4 Linha b j / a ij Agora é só calcular as linhas Z e C-Z: c j Variáveis na Solução X A X B Linha Z Linha C-Z X A X B X E /2 - - A /2 - - A 2 -/2 - b j /2 4 Linha b j / a ij Pronto! Primeira fase terminada e, observe, na solução atual temos apenas as variáveis X A e X B : A e A 2 ficaram com valores zero! Mas o problema acabou? Não! Terminamos apenas a primeira fase, que tinha objetivo de eliminar as variáveis artificiais. Agora vamos para a segunda fase, que tem o objeito de resolver, de fato, o problema original. 3. Resolvendo o Problema Modelado (Segunda Fase) Para iniciar a segunda fase, podemos copiar o último tableau da primeira fase, mas com algumas pequenas modificações: ) A linha da função objetivo deve ser substituída pela função objetivo original, F.O.: [MAX] 4 * x A + 3 * x B + * x E + * A + * A 2 Lembrando de corrigir os valores da coluna c j. 2) As colunas relativas a A e A 2 podem ser eliminadas (já que não há sentido na volta de tais variáveis à solução). 3) E, obviamente, os valores das linhas Z e C-Z devem ser apagados. Fazendo estas modificações, temos: 28_SI_-_PesquisaOperacional_I_-_o27 78

79 Pesquisa Operacional I 9 Primeiro Semestre de 27 c j 4 3 Variáveis na Solução X A X B Linha Z Linha C-Z 4 X A 3 X B X E /2 - b j /2 4 Linha b j / a ij Este é o nosso primeiro tableau da segunda fase. Vamos calcular as linhas Z e C-Z: c j 4 3 Variáveis na Solução X A X B Linha Z Linha C-Z 4 X A 4 3 X B 3 X E /2 - - b j / Linha b j / a ij Pronto, pelo cálculo, determinamos que a variável que entra é a variável X E. Calculemos a coluna bj/aij: c j 4 3 Variáveis na Solução X A X B Linha Z Linha C-Z 4 X A 4 3 X B 3 X E /2 - - b j / Linha b j / a ij -4 O menor valor, em princípio, é o -4. Entretanto, não posso considerar valores negativos neste campo. Assim, o valor considerado será o e a variável que sai é X A : c j 4 3 Variáveis na Solução X A X B Linha Z Linha C-Z 4 X A 4 3 X B 3 X E /2 - - b j / Linha b j / a ij -4 28_SI_-_PesquisaOperacional_I_-_o27 79

80 Pesquisa Operacional I Primeiro Semestre de 27 Assim, teremos o primeiro passo do próximo tableau: c j 3 Variáveis na Solução X E X B Linha Z Linha C-Z 4 X A 3 X B X E b j Linha b j / a ij Na coluna X E, precisamos de na linha de X E e nas outras: c j 3 Variáveis na Solução X E X B Linha Z Linha C-Z 4 X A 3 X B X E b j Linha b j / a ij Na linha que saiu, tínhamos /2 na posição em que precisamos de. Assim, multiplicaremos a linha original inteira por 2, ao copiar para o novo tableau: c j 3 Variáveis na Solução X E X B Linha Z Linha C-Z 4 X A 2 3 X B X E b j Linha b j / a ij Novamente, para a linha da variável X B precisamos de na linha X E, mas no tableau anterior temos - nesta posição. Para eliminar este -, basta somar à linha anterior os valores da linha da variável que entrou: 28_SI_-_PesquisaOperacional_I_-_o27 8

81 Pesquisa Operacional I Primeiro Semestre de 27 Linha do Tableau anterior c j Variáveis na Solução 3 X B X A X B X E - b j 4-4 b j / a ij Linha da variável que entrou no tableau atual c j Variáveis X A na Solução 2 X E X B X E b j b j / a ij Somando ambas... X A 2 X B X E b j 5 Copiando no tableau atual... c j 3 Variáveis na Solução X E X B Linha Z Linha C-Z 4 X A X B X E b j 5 Linha b j / a ij Calculemos agora as linhas Z e C-Z: c j 3 Variáveis na Solução X E X B Linha Z Linha C-Z 4 X A X B 3 X E b j 5 45 Linha b j / a ij Como todos os valores são negativos ou zero, está finalizado o problema, cuja solução é X B = 5, X E = e X A =, com valor da função objetivo igual a 45, o que pode ser verificado que respeita as restrições do problema original: Função Objetivo: [MAX] 4 * x A + 3 * x B Sujeito a: 2 * x A + * x B = 5 * x B 4 28_SI_-_PesquisaOperacional_I_-_o27 8

82 Pesquisa Operacional I 2 Primeiro Semestre de Exercício L4 Resolva o Simplex modelado no exercício L3 (disponível em no arquivo da aula 8): F.O.: [MAX]-25*x P - 4*x J - *x E - *x S - *x S2 - *a - *a 2 S.A.: 2*x P + 4*x J + *x E + *x S + *x S2 +*a +*a 2 = 4 2*x P +*x J - *x E + *x S + *x S2 +*a +*a 2 = *x P +*x J + *x E + *x S + *x S2 +*a +*a 2 = 8 *x P *x J + *x E + *x S + *x S2 +*a +*a 2 = 8 Entrega na próximas aula. Vale nota. 5. Bibliografia MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório, _SI_-_PesquisaOperacional_I_-_o27 82

83 Pesquisa Operacional I Primeiro Semestre de 27 Notas da Aula : Resolução da L4 Prof. Daniel Caetano Objetivo: Resolver a quarta lista de exercícios, sedimentando o procedimento de cálculo do Método Simplex em Duas Fases. Resolução do Exercício L4 Resolva o Simplex modelado no exercício L3 (disponível em no arquivo da aula 8): F.O.: [MAX]-25*x P - 4*x J - *x E - *x S - *x S2 - *a - *a 2 S.A.: 2*x P + 4*x J + *x E + *x S + *x S2 +*a +*a 2 = 4 2*x P +*x J - *x E + *x S + *x S2 +*a +*a 2 = *x P +*x J + *x E + *x S + *x S2 +*a +*a 2 = 8 *x P *x J + *x E + *x S + *x S2 +*a +*a 2 = 8 Resolução a) Determinação da função objetivo e tableau da primeira fase Como o problema apresenta variáveis artificiais, primeiramente temos que criar uma função objetivo que proporcione sua eliminação. Como visto anteriormente, a função objetivo que torna os valores das variáveis artificiais iguais a zero é, neste caso: F.O.: [MIN] *x P + *x J + *x E + *x S + *x S2 + *a + *a 2 Ou, tornando o problema de maximização: F.O.: [MAX] *x P + *x J + *x E + *x S + *x S2 - *a - *a 2 Considerando o problema originalmente modelado, porém usando a nova função objetivo, e definindo inicialmente que X P = X J = X E =, podemos montar o seguinte tableau: cj - - VS A A 2 X S X S2 Z C-Z X P 2 2 X J 4 X E - X S X S2 - A - A 2 bj bj/aij Calculando Z, C-Z e bj/aij temos o tableau completo: 28_SI_-_PesquisaOperacional_I_-_o27 83

84 Pesquisa Operacional I 2 Primeiro Semestre de 27 cj - - VS A A 2 X S X S2 Z C-Z X P X J X E - - X S X S2 - A - - A 2 - bj bj/aij inf. Como é possível ver, entra a variável X P e sai a variável A 2. A base do próximo tableau é, então: cj - VS A X P X S X S2 Z C-Z X P X J X E X S X S2 - A - A 2 bj bj/aij Calculando a primeira linha, que precisa ser dividida toda por 2 para obter na posição X P x X P : cj - VS A X P X S X S2 Z C-Z X P X J X E -/2 X S X S2 - A - A 2 /2 bj 5 bj/aij 28_SI_-_PesquisaOperacional_I_-_o27 84

85 Pesquisa Operacional I 3 Primeiro Semestre de 27 Calculando as próximas linhas, temos: cj - VS A X P X S X S2 Z C-Z X P X J 4 X E -/2 /2 X S X S2 - A - A 2 - /2 -/2 bj bj/aij Calculando Z, C-Z e bj/aij temos o tableau pronto: cj - VS A X P X S X S2 Z C-Z X P X J X E -/2 /2 - X S X S2 - A - - A 2 - /2 -/2-2 bj bj/aij 7,5 inf. inf. 8 Como é possível ver, a variável que entra é X J e a que sai é X A. O próximo tableau está pronto abaixo: cj VS X J X P X S X S2 Z C-Z X P X J X E /4 -/2 /2 -/4 X S X S2 - A /4 -/4 - - A 2 -/4 /2 -/2 /4 - bj 5/2 5 3 /2 bj/aij Onde é possível observar que a a. fase terminou. Note que A e A 2 não estão mais na solução básica. b) Determinação do tableau da segunda fase Agora já temos uma solução inicial em que as variáveis artificiais não aparecem. Para continuar o Simplex, basta substituir a função objetivo do tableau pela original e retirar as colunas das variáveis artificiais: F.O.: [MAX]-25*x P - 4*x J - *x E - *x S - *x S2 - *a - *a 2 28_SI_-_PesquisaOperacional_I_-_o27 85

86 Pesquisa Operacional I 4 Primeiro Semestre de 27 O tableau fica assim: cj VS X J X P X S X S2 Z C-Z -25 X P -4 X J X E /4 -/2 /2 -/4 X S X S2 bj 5/2 5 3 /2 bj/aij sai: A partir disso podemos calcular Z, C-Z e bj/aij para verificar qual variável entra e qual cj VS X J X P X S X S2 Z C-Z -25 X P X J -4 X E /4 -/2 /2 -/4 5/2-5/2 X S X S2 bj 5/2 5 3 /2-425 bj/aij Como é possível ver, esta já é a solução do problema, pois não é possível melhorar a solução. O resultado final é X J =7,5 e X P =5, ou seja, é mais econômico colocar o funcionário mais caro (mas mais produtivo) trabalhando por mais horas. E o custo deste dia de trabalho será de R$ 425, (lembrando de re-inverter o sinal da função objetivo, já que o problema original era uma minimização que foi transformada numa maximização). Bibliografia MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório, _SI_-_PesquisaOperacional_I_-_o27 86

87 Pesquisa Operacional Atualização: 2/3/28 Unidade 2: Método Simplex e Ferramentas Computacionais Tópico 8: Ferramentas Computacionais Prof. Daniel Caetano Objetivo: Apresentar o uso do Excel/Solver para a resolução de um problema de otimização.. Apresentação do Problema ) Para realizar a instalação de terminais de computador, uma empresa pode usar os esforços de dois funcionários: Pedro e João. O salário de Pedro é R$ 25, por hora e o de João é de R$ 4, por hora. Pedro consegue instalar um terminal em meia hora (,5 hora) e João em 5 minutos (,25 hora). É necessário instalar um total de 4 terminais, sendo que Pedro deve instalar pelo menos deles. Sabe-se que nenhum dos dois funcionários pode trabalhar mais do que 8 horas em um dia. Deseja-se minimizar o custo total da instalação. Como já visto, a modelagem matemática deste problema é: F.O.: [MIN] 25*x P + 4*x J S.A.: 2*x P + 4*x J = 4 <= Restrição do número de máquinas a instalar. 2*x P <= Restrição do mínimo de máquinas para Pedro x P ü 8 <= Número máximo de horas de trabalho para Pedro x J ü 8 <= Número máximo de horas de trabalho para João 2. Usando o Computador para Resolver o Problema Para resolver um problema deste tipo, existem inúmeras ferramentas. Algumas delas, as mais poderosas (LINDO, LINGO, GAMS, etc) exigem que o problema seja transformado para a forma padrão antes de ser fornecido para o computador. Entretanto, há ferramentas mais simples no mercado, como aquela que vem no Microsoft Excel, chamada Solver. O Solver é uma biblioteca do Excel que implementa algoritmos de programação linear e não linear. Curiosamente, para o uso do Excel, não é necessário usar a forma padrão, como será visto a seguir. 2.. Preparando a Planilha para o Uso do Solver Ao abrir o Excel, surge uma planilha em branco, mas é possível preenchê-la de forma a facilitar o trabalho para seu uso posterior no solver. A idéia é listar primeiramente todas as 28_SI_-_PesquisaOperacional_I_-_o27 87

88 Pesquisa Operacional 2 Atualização: 2/3/28 variáveis de decisão, com seu nome e valor inicial (normalmente ), como apresentado na tela a seguir. Note que estão marcados em amarelo os valores das variáveis de decisão. O próximo passo é representar a Função Objetivo, como na figura abaixo, lembrando que no local onde aparece o valor da função objetivo é preciso escrever a fórmula da mesma, baseada no valor das células com as variáveis de decisão já indicadas (em amarelo), sendo que, no exemplo da figura, Xp é a célula D3 e Xj é a célula D4, fazendo com que a fórmula 25*x P + 4*x J seja: = 25*D3 + 4*D4 Note que o valor da função objetivo foi marcado em verde. Falta agora representar as restrições, sendo que elas devem ser representadas em 3 colunas: a primeira contém as fórmulas do lado esquerdo de cada restrição, convertidas para o formato Excel (indicando as células das variáveis de decisão), a segunda contém o sinal (igual, maior ou igual, menor ou igual) e a terceira contém o lado direito das restrições (o número). 28_SI_-_PesquisaOperacional_I_-_o27 88

89 Pesquisa Operacional 3 Atualização: 2/3/28 O lado direito das restrições 2*x P + 4*x J = 4, 2*x P, x P ü 8 e x J ü 8 ficam, no formato do Excel e considerando os exemplos das figuras anteriores, respectivamente: = 2*D3 + 4*D4 = 2*D3 = D3 = D4 Quando colocadas no Excel, as restrições deverão ficar como na figura a seguir. Note que os valores das restrições estão em laranja e os limites das restrições estão em roxo. 2.. Iniciando e Preparando o Solver Agora que a planilha está pronta, está na hora de iniciar o Solver. O solver se encontra no menu ferramentas, como indicado na figura a seguir: 28_SI_-_PesquisaOperacional_I_-_o27 89

90 Pesquisa Operacional 4 Atualização: 2/3/28 Caso esta opção não esteja disponível, será necessário instalar o módulo do Solver. Clicando nesta opção, aparecerá a janela principal do Solver, representada abaixo: Antes de mais nada, deve-se entrar em "Opções" para configurar o tipo de problema que se deseja resolver, já que o Solver serve para muitos outros tipos de problema. A janela inicial de Opções é: As mudanças que devem ser feitas são: marcar "Presumir modelo linear" e "Presumir não negativos". Depois disso, basta clicar no botão OK. Após isso, será apresentada novamente a janela do Solver. No campo "Definir Célula Destino", deve-se clicar no botão e indicar a célula em verde. No campo "Igual a" deve-se marcar "Min", indicando o desejo de minimizar o valor. No campo "Células Variáveis", deve-se clicar no botão e indicar as células em amarelo (todas ao mesmo tempo). No campo "Submeter às Restrições", há um pouco mais de trabalho. Deve-se primeiramente clicar no botão "Adicionar". A janela abaixo será apresentada: 28_SI_-_PesquisaOperacional_I_-_o27 9

91 Pesquisa Operacional 5 Atualização: 2/3/28 O primeiro passo é adicionar a primeira restrição. No campo "Referência da célula", deve-se clicar no botão e selecionar a primeira célula laranja (F3). No campo sem nome que contém o sinal, deve ser feita a seleção do mesmo sinal da restrição, que no caso é o igual (=). No campo "Restrição", basta clicar no botão e indicar a primeira célula roxa (H3). Feito isso, simplesmente clique no botão OK e a primeira restrição estará adicionada, como indicado na figura abaixo: Repentindo o processo para as outras 3 restrições, a janela do solver terá a seguinte aparência: janela: Neste momento, basta clicar no botão "Resolver". Após isso, aparecerá a seguinte Após decidir se quer visualizar algum dos relatórios (Resposta, Sensibilidade e Limites), deve-se clicar no botão Ok. Neste ponto, a planilha do Excel mostrará a solução final, como apresentado na figura a seguir. 28_SI_-_PesquisaOperacional_I_-_o27 9

92 Pesquisa Operacional 6 Atualização: 2/3/28 Ou seja: a solução é Xp = 5 (Pedro trabalhará 5 horas) e Xj = 7,5 (João trabalhará 7,5 horas). O custo final será R$ 425,. Estes valores também são apresentados no relatório de respostas. O "Relatório de Sensibilidade" e o "Relatório de Limites" apresentam algumas informações adicionais sobre variações que poderiam ocorrer sem que a solução fosse modificada. 28_SI_-_PesquisaOperacional_I_-_o27 92

93 Pesquisa Operacional Atualização: 2/3/28 Unidade 3: Métodos Alternativos de Solução Tópico 9a: Problemas Específicos: Problema da Atribuição Prof. Daniel Caetano Objetivo: Apresentar a modelagem do Problema da Atribuição como base para posterior apresentação do algoritmo húngaro. Bibliografia: - MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, 27. Introdução O Problema da Atribuição/Designação é um problema bastante comum, tratando-se de um caso especial de um problema mais geral, o Problema do Transporte da Programação Linear. Os Problemas de Atribuição/Designação são sempre num formato em que existe um determinado número de atividades a serem processadas e um determinado número de recursos para processá-las; o objetivo é atribuir (ou designar) qual atividade será processada por qual recurso. Note que este é um tipo genérico de problema; isto significa que os as atividades podem ser produtos, projetos ou trechos de código, por exemplo. Da mesma forma, os recursos podem ser equipamentos, equipes de projetistas ou CPUs, por exemplo. O objetivo neste problema é alocar as atividades aos recursos de processamento de forma a minimizar a soma do custo de cada processamento.. Um Problema de Atribuição Como exemplo, considere o seguinte problema (MOREIRA, 26, pág. 22, modificado): Exemplo: Em uma fábrica temos dois trabalhos T, T2 e T3, que podem ser processados por 3 máquinas diferentes: M, M2 e M3. Devido à diferenças tecnológicas nas máquinas, o tempo 28_SI_-_PesquisaOperacional_I_-_o27 93

94 Pesquisa Operacional 2 Atualização: 2/3/28 para que cada uma delas realize cada um dos trabalhos é diferente, estando expressados na tabela abaixo: Máquina \ Trabalho M M2 M3 T 2 9 T T Modelagem Matemática do Problema da Atribuição Considere para a resolução as variáveis de decisão X ij, sendo i o número da máquina e j o número do trabalho: assim, X 2 indica se a máquina foi (ou não) atribuída para o trabalho 2; X 3 indica se a máquina 3 foi (ou não) atribuída ao trabalho. Ou seja: quando uma destas variáveis for, houve a atribuição. Se ela for, não houve. Exemplos: Se X 2 =, a máquina foi atribuída ao trabalho 2. Se X 2 =, a máquina não foi atribuída ao trabalho 2. Se X 3 =, a máquina 3 foi atribuída ao trabalho. Se X 3 =, a máquina 3 não foi atribuída ao trabalho. Note que as variáveis X ij só podem assumir valores ou, já que não faz sentido dizer que uma máquina foi "meio" atribuída a uma atividade e "meio" atribuída a outra. Assim, como cada máquina só pode ser atribuída a um trabalho, a conseqüência é que se X =, então X 2 e X 3 precisam ser, obrigatoriamente, iguais a. Isso significa dizer que se a máquina foi usada para o trabalho (X = ) esta máquina não pode ser usada para o trabalho 2 e 3 (X 2 = X 3 = ). Da mesma forma, se X 2 =, então X = X 3 =... ou ainda, se X 3 =, então X = X 2 =. Ora, como é possível ver, a soma dos valores de X j =, sempre! Isso pode ser descrito assim: X + X 2 + X 3 =, X j c {, } O que foi dito sobre a máquina, pode também ser dito sobre a máquina 2 e sobre a máquina 3: X 2 + X 22 + X 23 =, X 2j c {, } X 3 + X 32 + X 33 =, X 3j c {, } Juntando todas estas restrições, resulta: X + X 2 + X 3 = X 2 + X 22 + X 23 = X 3 + X 32 + X 33 = X ij c {, } 28_SI_-_PesquisaOperacional_I_-_o27 94

95 Pesquisa Operacional 3 Atualização: 2/3/28 Por outro lado, é sabido também que os trabalhos só podem ser designados para uma máquina de cada vez, também não fazendo sentido dizer que um trabalho foi "meio" atribuído a uma máquina e "meio" atribuído a outra. Assim, ocorre que se X =, então X 2 e X 3 precisam ser, obrigatoriamente, iguais a. Isso significa dizer que se o trabalho foi alocado para a máquina (X = ) este mesmo trabalho não pode ser alocado para as máquians 2 e 3 (X 2 = X 3 = ). Da mesma forma, se X 2 =, então X = X 3 =... ou ainda, se X 3 =, então X = X 2 =. Ora, como é possível ver, a soma dos valores de X i =, sempre! Isso pode ser descrito da seguinte maneira: X + X 2 + X 3 =, X i c {, } O que foi dito sobre o trabalho, pode também ser dito sobre o trabalho 2 e sobre o trabalho 3: X 2 + X 22 + X 32 =, X i2 c {, } X 3 + X 23 + X 33 =, X i3 c {, } Juntando todas estas restrições, teremos: X + X 2 + X 3 = X 2 + X 22 + X 32 = X 3 + X 23 + X 33 = X ij c {, } Com isso, pode-se apresentar a definição completa das restrições: X + X 2 + X 3 = X 2 + X 22 + X 23 = X 3 + X 32 + X 33 = X + X 2 + X 3 = X 2 + X 22 + X 32 = X 3 + X 23 + X 33 = <= Máquina só pega um trabalho <= Máquina 2 só pega um trabalho <= Máquina 3 só pega um trabalho <= Trabalho só está em uma máquina <= Trabalho 2 só está em uma máquina <= Trabalho 3 só está em uma máquina X ij c {, } Mas ainda falta a definição de uma função objetivo! Bem, a função objetivo é a soma do custo de cada atribuição realizada. Como X ij indica exatamente se uma atribuição foi feita ou não, basta multiplicar o custo de cada atribuição (dados pelo problema) pela variável X ij, que identifica se aquela atribuição foi feita: Máquina \ Trabalho M M2 M3 T 2 9 T T _SI_-_PesquisaOperacional_I_-_o27 95

96 Pesquisa Operacional 4 Atualização: 2/3/28 Exemplo : Custo da atribuição da M ao T: Variável que indica se esta atribuição foi feita ( se sim, se não): X Custo final desta atribuição: * X Exemplo 2: Custo da atribuição da M2 ao T3: 5 Variável que indica se esta atribuição foi feita ( se sim, se não): X 23 Custo final desta atribuição: 5* X 23 Jutando o custo das 9 possíveis atribuições, define-se a função objetivo: F.O.: [MIN] X + 5X 2 + 8X 3 + 2X 2 + 9X X X 3 + 2X 32 + X 33 S.A.: X + X 2 + X 3 = X 2 + X 22 + X 23 = X 3 + X 32 + X 33 = X + X 2 + X 3 = X 2 + X 22 + X 32 = X 3 + X 23 + X 33 = X ij c {, } Enfim, o modelo completo. Entretanto, ainda falta colocar este modelo na forma padrão, o que acrescentaria uma variável artificial em cada restrição, ampliando o número de variáveis de 9 para 5. Observe como um problema simples e pequeno, de atribuição de 3 máquinas a 3 trabalhos, tornou-se um modelo matemático enorme, com 5 variáveis (colunas do Simplex) e 6 restrições (linhas do Simplex). Para piorar, o problema exige que as respostas sejam números inteiros, o que provavelmente impede o Simplex (sozinho) de resolvê-lo, sendo necessário um algoritmo que engloba o Simplex, chamado "Branch and Bound" que pode vir a ter que re-executar diversas vezes o Simplex, podendo ter que adicionar até mais 9 restrições (linhas do Simplex), uma para cada variável de decisão, totalizando 5 variáveis e 5 restrições. Não é preciso ir muito longe para perceber que esse problema pode demorar um bom tempo para ser resolvido... e que, para problemas muito maiores, a execução será inviável. É para resolver este tipo de problema que foi criado o algoritmo húngaro, que será apresentado a seguir. 28_SI_-_PesquisaOperacional_I_-_o27 96

97 Pesquisa Operacional 5 Atualização: 2/3/28 3. Exercício L4 (Livro) Em uma empresa de construção civil, há três projetos que podem ser alocados a três equipes diferentes. Tanto o tempo de experiência das equipes quanto suas orientações técnicas são distintas, de modo que o tempo de término de cada projeto dependerá da equipe específica ao qual ele for alocado. A matriz a seguir mostra os tempos para cada equipo e projeto. Modele como um problema de programação linear (para o Simplex, mas não precisa colocar na forma padrão) e aplique o Algoritmo Húngaro para chegar à alocação ótima, ou seja, o menor número de horas pagas de desenvolvimento. Equipe Equipe 2 Equipe 3 Projeto A Projeto B Projeto C Bibliografia MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, _SI_-_PesquisaOperacional_I_-_o27 97

98 Pesquisa Operacional Atualização: 2/3/28 Unidade 3: Métodos Alternativos de Solução Tópico 9b: O Algoritmo Húngaro Prof. Daniel Caetano Objetivo: Apresentar o algoritmo húngaro, para solução do problema da atribuição. Bibliografia: - MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, 27. Introdução Como foi visto anteriormente, o problema da atribuição/designação pode ser modelado matematicamente como um problema de programação linear, visando sua solução pelo método Simplex. Entretanto, a solução pelo método Simplex pode ser excessivamente demorada em problemas muito grandes, com milhares de atividades a serem atribuidas. Por esta razão, foi criado um algoritmo chamado "Algoritmo Húngaro" que é capaz de resolver problemas de atribuição com um esforço computacional bastante menor que o Simplex. Nesta aula será visto como solucionar o problema apresentado anteriormente com auxílio do Algorítmo Húngaro.. O Algoritmo Húngaro Assim como o Simplex, o Algoritmo Húngaro pode ser descrito como uma seqüência de operações matemáticas que, quando aplicadas, revelam a solução ótima para um problema de atribuição. O Algoritmo Húngaro é baseado na matriz dos tempos/custos de atribuição que se deseja minimizar. Além disso, ele é baseado no fato de existir igual número de tarefas e máquinas (ou seja, o número de linhas é igual ao de colunas). Há uma pressuposição que qualquer tarefa pode ser alocada a qualquer máquina e, finalmente, pressupõe que os dados são custos (ou outra grandeza qualquer) que precisam ser minimizados. Os passos do Algoritmo Húngaro são: ) Desenho da tabela de custos. 2) Seleção do menor valor de cada linha. 3) Subtração deste número de todos da mesma linha que ele. 4) Seleção do menor valor de cada coluna. 28_SI_-_PesquisaOperacional_I_-_o27 98

99 Pesquisa Operacional 2 Atualização: 2/3/28 5) Subtração deste número de todos da mesma coluna que ele. 6) Determinação da ordem da matriz. 7) Traçar o menor número de retas horizontais e verticais que passem por todos os zeros. 8) Comparar o número de retas necessário com a ordem da matriz. 9) Se o número de retas for menor que a ordem da matriz, deve ser selecionado o menor número não coberto pelas retas. Se for igual, o algoritmo acabou... passo 3. ) Subtração deste número de todos que não estiverem cobertos por retas. ) Adição do número selecionado no passo 9 em todas as interseções de retas. 2) Voltar ao passo 7. 3) Determinação da atribuição. 2. Aplicação do Algoritmo Húngaro a um Problema Para aplicar o algoritmo, será usado o mesmo exemplo (MOREIRA, 26, pág. 22, modificado) visto anteriormente. Exemplo: Em uma fábrica temos dois trabalhos T, T2 e T3, que podem ser processados por 3 máquinas diferentes: M, M2 e M3. Devido à diferenças tecnológicas nas máquinas, o tempo para que cada uma delas realize cada um dos trabalhos é diferente, estando expressados na tabela abaixo: Máquina \ Trabalho M M2 M3 T 2 9 T T3 8 5 Com base neste problema será apresentado o algoritmo húngaro para o problema de atribuição, visando encontrar qual máquina deve realizar qual trabalho de forma a minimizar o número total de horas de máquina gastos. 2.. Aplicação do Algoritmo O Algoritmo Húngaro é composto de várias etapas, que serão vistas a seguir, para resolver o problema previamente apresentado. Segue, agora, um guia detalhado de como executar cada etapa, passo a passo. 28_SI_-_PesquisaOperacional_I_-_o27 99

100 Pesquisa Operacional 3 Atualização: 2/3/28 Passo : Desenho da tabela de custos Máquina \ Trabalho M M2 M3 T 2 9 T T3 8 5 Passo 2: Seleciona-se o menor valor de cada linha... Máquina \ Trabalho M M2 M3 T 2 >>9<< T2 >>5<< >>9<< 2 T3 8 5 Passo 3: Subtrai-se este número de todos as células da mesma linha que ele Máquina \ Trabalho M M2 M3 T 5 3 T2 3 T3 3 6 Passo 4: Seleciona-se o menor valor de cada coluna Máquina \ Trabalho M M2 M3 T 5 3 >><< T2 >><< 3 T3 3 6 >><< Passo 5: Subtrai-se este número de todos as células da mesma coluna que ele Máquina \ Trabalho M M2 M3 T 5 3 T2 3 T3 2 5 Passo 6: Determina-se a ordem da matriz A ordem da matriz é 3, já que ela é uma matriz 3x3. 28_SI_-_PesquisaOperacional_I_-_o27

101 Pesquisa Operacional 4 Atualização: 2/3/28 Passo 7: Traça-se o menor número de retas (h/v) que passem por todos os zeros Máquina \ Trabalho M M2 M3 T T T Passo 8: Compara-se o número de retas com a ordem da matriz Há duas retas: a que passa na linha M3 e a que passa na coluna T2. Como o número de retas é MENOR que a ordem (três), segue-se para o passo 9. Caso o número fosse igual a três, a seqüência seria a partir do passo 3. Note que se o número de retas for MAIOR que a ordem, certamente há erro no traçado das retas. Passo 9: Caso "no. de retas < ordem", seleciona-se o menor valor "não coberto" Máquina \ Trabalho M M2 M3 T T T3 >>2<< Passo : Subtrai-se valor selecionado no passo 9 de todos os "não cobertos" Máquina \ Trabalho M M2 M3 T T T Passo : Soma-se o valor selecionado no passo 9 na interseção das retas Máquina \ Trabalho M M2 M3 T T T Passo 2: Traça-se o menor número de retas que passem por todos os zeros Máquina \ Trabalho M M2 M3 T T T Caso o número de retas ainda seja menor que a ordem, volta-se para o passo 8 e reprete-se até conseguir um número de retas igual à ordem da matriz. 28_SI_-_PesquisaOperacional_I_-_o27

102 Pesquisa Operacional 5 Atualização: 2/3/28 Passo 3: Determina-se a atribuição A primeira linha ou coluna que aparece apenas UM zero deve ser localizada e a atribuição feita no ponto em que aparece o zero. Neste exemplo: A linha M2 tem apenas UM zero (coluna T2). Assim, o trabalho T2 será atribuído à máquina M2, e essa linha e coluna podem ser eliminadas (já que a M2 e o T2 não poderão ser atribuídos a mais nada): Máquina \ Trabalho M M2 M3 T 3 T2 3 T3 3 Resultando em: Máquina \ Trabalho M M3 T 3 T3 Localizando a próxima linha ou coluna que aparece apenas UM zero, define-se a próxima atribuição. Neste exemplo: A linha M tem apenas UM zero (coluna T3). Assim, o trabalho T3 será atribuído à máquina M, e essa linha e coluna podem ser eliminadas: Máquina \ Trabalho M M3 Resultando em: T 3 T3 Máquina \ Trabalho M3 T Finalmente, o trabalho T será atribuído à máquina M3. Solução: T => M3, custo 9 T2 => M2, custo 9 T3 => M, custo 8 Custo final total: 26 horas. 28_SI_-_PesquisaOperacional_I_-_o27 2

103 Pesquisa Operacional 6 Atualização: 2/3/28 3. Tornando o Algoritmo Húngaro Genérico Foi visto anteriormente que, para que o Algoritmo Húngaro funcione, existe a necessidade de obedecer alguns critérios... mas e quando isso não ocorre? Neste caso, serão usados alguns truques para "forçar" os critérios necessários. Número de Linhas e Colunas Diferente: Neste caso devem ser criadas linhas ou colunas fictícias (conforme o caso), preenchendo o custo de todas as células desta linha/coluna acrescentada como. Problema de Maximização ao invés de minimização: Neste caso, procura-se o maior número na matriz. Encontrado este número, em cada célula indicar o resultado da operação "Maior_Número - Valor_Original_Da_Célula_Atual". Alocações Impossíveis: Quando alguma alocação é impossível, basta indicar seu custo com um valor excessivamente alto. Normalmente a letra "M" é usada para representar este valor. Bibliografia MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, _SI_-_PesquisaOperacional_I_-_o27 3

104 Pesquisa Operacional Atualização: 2/3/28 Resolução da Lista 3 Prof. Daniel Caetano Objetivo: Resolver o problema da Lista 3, apresentando artifícios de modelagem. Bibliografia: - MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, 27. Resolução do Exercício L3 Enunciado: Modele e apresente na forma padrão (pronto para o Simplex) o seguinte problema abaixo: ) Para realizar a instalação de terminais de computador, uma empresa pode usar os esforços de dois funcionários: Pedro e João. O salário de Pedro é R$ 25, por hora e o de João é de R$ 4, por hora. Pedro consegue instalar um terminal em meia hora (,5 hora) e João em 5 minutos (,25 hora). É necessário instalar um total de 4 terminais, sendo que Pedro deve instalar pelo menos deles. Sabe-se que nenhum dos dois funcionários pode trabalhar mais do que 8 horas em um dia. Deseja-se minimizar o custo total da instalação.. Modele matematicamente o problema acima. Função Objetivo: Como se quer minimizar o custo de instalação, a primeira coisa é determinar como se pode calcular este custo. Bem, há dois funcionários, sendo que ambos recebem um valor específico por hora. Assim, se for definido: x P = número de horas trabalhadas por Pedro x J = número de horas trabalhadas por João Sabendo que o salário de Pedro é R$ 25, por hora e o de João é de R$ 4, por hora, o custo de cada um dos funcionários será: Pedro: 25 * x P (em reais) João: 4 * x J (em reais) Assim, o custo total será: Custo = 25*x P + 4*x J Como se deseja minimizar o custo, a função objetivo fica: [MIN] 25*x P + 4*x J 28_SI_-_PesquisaOperacional_I_-_o27 4

105 Pesquisa Operacional 2 Atualização: 2/3/28 Restrições: Há, basicamente, 4 restrições: - Número total de máquinas a instalar: 4 - Número mínimo de máquinas que serão instaladas por Pedro: - Número máximo de horas de trabalho de Pedro: 8 - Número máximo de horas de trabalho de João: 8 - Número total de máquinas a instalar: 4 Primeiro é preciso identificar quantas máquinas Pedro e João instalam por hora. Pelo enunciado, Pedro instala um terminal em meia hora. Em outras palavras, ele instala 2 máquinas em uma hora. Como x P é número de horas trabalhadas por Pedro, o número total de máquinas instaladas por Pedro é: Máquinas Instaladas por Pedro: 2*x P Da mesma forma, é dito que João instala uma máquina em 5 minutos, ou seja, ele instala 4 máquinas em uma hora. Como x J é número de horas trabalhadas por João, o número total de máquinas instaladas por João é: Máquinas Instaladas por João: 4*x J Assim, o total de máquinas instaladas é: 2*x P + 4*x J Que deve ser exatamente igual a 4... ou seja: 2*x P + 4*x J = 4 <= Restrição do número de máquinas a instalar. - Número mínimo de máquinas que serão instaladas por Pedro: Já foi visto que o número de máquinas instaladas por Pedro 2*x P. O que esta restrição diz é que este número precisa ser pelo menos igual a, ou seja, ele é maior ou igual a. Assim: 2*x P <= Restrição do mínimo de máquinas para Pedro 28_SI_-_PesquisaOperacional_I_-_o27 5

106 Pesquisa Operacional 3 Atualização: 2/3/28 - Número máximo de horas de trabalho de Pedro: 8 Como x P é o número de horas trabalhadas por Pedro, este valor deve ser menor que 8: x P ü 8 x J ü 8 <= Número máximo de horas de trabalho para Pedro <= Número máximo de horas de trabalho para João Modelo Final F.O.: S.A.: [MIN] 25*x P + 4*x J 2*x P + 4*x J = 4 <= Restrição do número de máquinas a instalar. 2*x P <= Restrição do mínimo de máquinas para Pedro x P ü 8 <= Número máximo de horas de trabalho para Pedro x J ü 8 <= Número máximo de horas de trabalho para João 2. Coloque o problema na forma padrão, pronto para ser resolvido pelo Simplex. Primeiramente, devem ser acrescentadas as variáveis de folga e excesso nas restrições do tipo ü e respectivamente, sendo que apenas com isso as restrições já podem se tornar igualdades: F.O.: [MIN] 25*x P + 4*x J S.A.: 2*x P + 4*x J = 4 (=) 2*x P - *x E = ( ) *x P + *x S = 8 (ü) *x J + *x S2 = 8 (ü) Sinal Antigo ---^ Entretanto, este problema ainda não admite solução direta para x P = x J =, algo que é desejável para poder iniciar o Simplex. As restrições problemáticas são aquelas cujos sinais originais eram ou =, uma vez que com a igualdade teremos resultados estranhos ao fazer x P = x J = : 2*x P + 4*x J = 4 => (x P = x J = ) => 2* + 4* = 4 => = 4!?!?!!? 2*x P - *x E = => (x P = x J = ) => 2* - *x E = => x E = -!?!?!!? 28_SI_-_PesquisaOperacional_I_-_o27 6

107 Pesquisa Operacional 4 Atualização: 2/3/28 Assim, é necessário adicionar variáveis artificiais nestas restrições, de forma a tornar a solução x P = x J = possível. Com isso, o problema fica: F.O.: [MIN] 25*x P + 4*x J S.A.: 2*x P + 4*x J +*a = 4 2*x P - *x E +*a 2 = *x P + *x S = 8 *x J + *x S2 = 8 Agora a modelagem está quase completa, faltando apenas fazer com que todas as variáveis apareçam em todas as linhas, o que é conseguido acrescentando-as com coeficiente zero onde elas não aparecem: F.O.: [MIN] 25*x P + 4*x J + *x E + *x S + *x S2 +*a +*a 2 S.A.: 2*x P + 4*x J + *x E + *x S + *x S2 +*a +*a 2 = 4 2*x P +*x J - *x E + *x S + *x S2 +*a +*a 2 = *x P +*x J + *x E + *x S + *x S2 +*a +*a 2 = 8 *x P *x J + *x E + *x S + *x S2 +*a +*a 2 = 8 O último truque a ser aplicado é a conversão de um problema de minimização para um de maximização, bastando, para isso, multiplicar a função objetivo por -: F.O.: [MAX]-25*x P - 4*x J - *x E - *x S - *x S2 - *a - *a 2 S.A.: 2*x P + 4*x J + *x E + *x S + *x S2 +*a +*a 2 = 4 2*x P +*x J - *x E + *x S + *x S2 +*a +*a 2 = *x P +*x J + *x E + *x S + *x S2 +*a +*a 2 = 8 *x P *x J + *x E + *x S + *x S2 +*a +*a 2 = 8 3. Bibliografia MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, _SI_-_PesquisaOperacional_I_-_o27 7

108 Pesquisa Operacional Atualização: 2/3/28 Resolução da Lista 4 Prof. Daniel Caetano Objetivo: Apresentar a resolução da listsa. Bibliografia: - MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, 27.. Exercício L4 Em uma empresa de construção civil, há três projetos que podem ser alocados a três equipes diferentes. Tanto o tempo de experiência das equipes quanto suas orientações técnicas são distintas, de modo que o tempo de término de cada projeto dependerá da equipe específica ao qual ele for alocado. A matriz a seguir mostra os tempos para cada equipo e projeto. Modele como um problema de programação linear (para o Simplex, mas não precisa colocar na forma padrão) e aplique o Algoritmo Húngaro para chegar à alocação ótima, ou seja, o menor número de horas pagas de desenvolvimento. Equipe Equipe 2 Equipe 3 Projeto A Projeto B Projeto C Modelagem Matemática Considere para a resolução as variáveis de decisão X ij, sendo i o número da equipe e j a letra do projeto: X B indica se a equipe foi (ou não) atribuída para o projeto B; X 3A indica se a equipe 3 foi (ou não) atribuída ao projeto A. Ou seja: quando uma destas variáveis for, houve a atribuição. Se ela for, não houve. Assim: Se X B =, a equipe foi atribuída ao projeto B. Se X B =, a equipe não foi atribuída ao projeto B. Se X 3A =, a equipe 3 foi atribuída ao projeto A. Se X 3A =, a equipe 3 não foi atribuída ao projeto A. Note que as variáveis X ij só podem assumir valores ou, já que não faz sentido dizer que uma equipe foi "meio" atribuída a uma atividade e "meio" atribuída a outra. Assim, como cada equipe só pode ser atribuída a um projeto, temos que se X A =, X B e X C precisam ser, obrigatoriamente, iguais a. Isso significa dizer que se a equipe foi usada para o projeto A (X A = ) esta equipe não pode ser usada para os projetos B e C (X B = X C = ). Da mesma forma, se X B =, então X A = X C =... ou ainda, se X C =, então X A = X B =. Ora, como é possível ver, a soma dos valores de X j =, sempre! Isso pode ser descrito assim: 28_SI_-_PesquisaOperacional_I_-_o27 8

109 Pesquisa Operacional 2 Atualização: 2/3/28 X A + X B + X C =, X j c {, } O que foi dito sobre a equipe, pode também ser dito sobre a equipe 2 e sobre a equipe 3: X 2A + X 2B + X 2C =, X 2j c {, } X 3A + X 3B + X 3C =, X 3j c {, } Juntando todas estas restrições, resulta em: X A + X B + X C = X 2A + X 2B + X 2C = X 3A + X 3B + X 3C = X ij c {, } Por outro lado, é sabido também que os projetos só podem ser designados para uma equipe de cada vez, também não fazendo sentido dizer que um projeto foi "meio" atribuído a uma equipe e "meio" atribuído a outra. Assim, temos que se X A =, X 2A e X 3A precisam ser, obrigatoriamente, iguais a. Isso significa dizer que se o projeto foi alocado para a equipe (X A = ) este mesmo projeto não pode ser alocado para as máquinas 2 e 3 (X 2A = X 3A = ). Da mesma forma, se X 2A =, então X A = X 3A =... ou ainda, se X 3A =, então X A = X 2A =. Ora, como é possível ver, a soma dos valores de X ia =, sempre! Isso pode ser descrito da seguinte maneira: X A + X 2A + X 3A =, X ia c {, } Bem, o que foi dito sobre o projeto A, pode também ser dito sobre o projeto B e sobre o projeto C: X B + X 2B + X 3B =, X ib c {, } X C + X 2C + X 3C =, X ic c {, } Juntando todas estas restrições, resulta em: X A + X 2A + X 3A = X B + X 2B + X 3B = X C + X 2C + X 3C = X ij c {, } 28_SI_-_PesquisaOperacional_I_-_o27 9

110 Pesquisa Operacional 3 Atualização: 2/3/28 Com isso, temos a definição completa das restrições: X A + X B + X 3 = X 2A + X 2B + X 23 = X 3A + X 3B + X 33 = X A + X 2A + X 3A = X B + X 2B + X 3B = X C + X 2C + X 3C = <= Equipe só pega um projeto <= Equipe 2 só pega um projeto <= Equipe 3 só pega um projeto <= Projeto A só está em uma equipe <= Projeto B só está em uma equipe <= Projeto C só está em uma equipe X ij c {, } Mas ainda falta a definição de uma função objetivo! Bem, a função objetivo é a soma do custo de cada atribuição realizada. Como X ij indica se uma atribuição foi feita, basta multiplicar o custo de cada atribuição (dados pelo problema) pela variável X ij que identifica se aquela atribuição foi feita: Equipe Equipe 2 Equipe 3 Projeto A Projeto B Projeto C Exemplo : Custo da atribuição da E ao PA: 5 Variável que indica se esta atribuição foi feita ( se sim, se não): X A Custo final desta atribuição: 5* X A Exemplo 2: Custo da atribuição da E2 ao PC: 8 Variável que indica se esta atribuição foi feita ( se sim, se não): X 2C Custo final desta atribuição: 8* X 2C Jutanto o custo das 9 possíveis atribuições, definimos a função objetivo: F.O.: [MIN] 5X A + 24X B + 2X C + 7X 2A + 22X 2B + 8X 2C + 23X 3A + 29X 3B + 3X 3C X A + X B + X 3 = X 2A + X 2B + X 23 = X 3A + X 3B + X 33 = X A + X 2A + X 3A = X B + X 2B + X 3B = X C + X 2C + X 3C = X ij c {, } 28_SI_-_PesquisaOperacional_I_-_o27

111 Pesquisa Operacional 4 Atualização: 2/3/28 Resolução pelo Algoritmo Húngaro Passo : Desenho da tabela de custos Projeto A Equipe 5 Equipe 2 7 Equipe 3 23 Projeto B Projeto C Passo 2: Seleciona-se o menor valor de cada linha... Projeto A Projeto B Equipe >>5<< 24 Equipe 2 >>7<< 22 Equipe 3 >>23<< 29 Projeto C Passo 3: Subtrai-se este número de todos as células da mesma linha que ele Projeto A Projeto B Projeto C Equipe 9 6 Equipe 2 5 Equipe Passo 4: Seleciona-se o menor valor de cada coluna Projeto A Projeto B Equipe >><< 9 Equipe 2 >>5<< Equipe 3 6 Projeto C 6 >><< 7 Passo 5: Subtrai-se este número de todos as células da mesma coluna que ele Projeto A Projeto B Projeto C Equipe 4 5 Equipe 2 Equipe 3 6 Passo 6: Determina-se a ordem da matriz A ordem da matriz é 3, já que ela é uma matriz 3x3. Passo 7: Traça-se o menor número de retas (h/v) que passem por todos os zeros Projeto A Projeto B Projeto C Equipe 4 5 Equipe Equipe 3 6 Passo 8: Compara-se o número de retas com a ordem da matriz Há duas retas: a que passa na linha Equipe2 e a que passa na coluna ProjetoA. Como o número de retas é MENOR que a ordem, segue-se para o passo 9. 28_SI_-_PesquisaOperacional_I_-_o27

112 Pesquisa Operacional 5 Atualização: 2/3/28 Passo 9: Caso "no. de retas < ordem", seleciona-se o menor valor "não coberto" Projeto A Projeto B Projeto C Equipe 4 5 Equipe Equipe 3 >><< 6 Passo : Subtrai-se valor selecionado no passo 9 de todos os "não cobertos" Projeto A Projeto B Projeto C Equipe 3 4 Equipe Equipe 3 5 Passo : Soma-se o valor selecionado no passo 9 na interseção das retas Projeto A Projeto B Projeto C Equipe 3 4 Equipe Equipe 3 5 Passo 2: Traça-se o menor número de retas que passem por todos os zeros Projeto A Projeto B Projeto C Equipe 3 4 Equipe Equipe 3 5 Como o número de retas é igual à ordem da matriz, segue-se para o passo 3. Passo 3: Determina-se a atribuição Localizar a primeira linha ou coluna que aparece apenas UM zero e fazer a atribuição. Neste caso: A linha Equipe tem apenas UM zero (ProjetoA). Assim, o Projeto A será atribuído à Equipe, e essa linha e coluna podem ser eliminadas: Equipe Equipe 2 Equipe 3 Projeto A Projeto B 3 Projeto C 4 5 Equipe 2 Equipe 3 Projeto B Projeto C 5 Localizar a próxima linha ou coluna que aparece apenas UM zero e fazer a atribuição. Neste exemplo: A linha Equipe3 tem apenas UM zero (coluna ProjetoB). Assim, o Projeto B será atribuído à Equipe 3, e essa linha e coluna podem ser eliminadas: 28_SI_-_PesquisaOperacional_I_-_o27 2

113 Pesquisa Operacional 6 Atualização: 2/3/28 Equipe 2 Equipe 3 Equipe 2 Projeto B Projeto C 5 Projeto C Finalmente, o Projeto C será atribuído à Equipe 2. Solução: PA => E, tempo 5 meses PB => E3, custo 29 meses PC => E2, custo 8 meses Custo final total: 62 meses. Bibliografia MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, _SI_-_PesquisaOperacional_I_-_o27 3

114 Pesquisa Operacional II Atualização: 3/8/28 Apresentação da Disciplina Prof. Daniel Caetano Objetivo: Apresentar o conteúdo da disciplina Pesquisa Operacional II, no âmbito geral e dentro do contexto do curso de Sistemas de Informação. Bibliografia: MOREIRA; ARENALES et al.. INTRODUÇÃO Conceitos Chave: - Otimizar? => O que e quanto produzir; caminho para um pacote de rede; etc - Uso do Simplex => otimização - Simplex => pode não ser muito eficiente, embora seja eficaz! - Problema de Atribuição => Algoritmo Húngaro * Atribuição de Processos a Executores Na primeira parte do curso de Pesquisa Operacional foram apresentados os conceitos básicos da Pesquisa Operacional, necessários à otimização de qualquer processo ou atividade. Foi apresentado um método de como transformar problemas reais em modelos matemáticos e também foi apresentado o método Simplex para encontrar a solução ótima para o modelo matemático. Mas o que era otimizar, mesmo? Relembrando, otimizar significa encontrar uma combinação de fatores de operação que nos permite o melhor desempenho possível. Em outras palavras, se vamos transportar carga e podemos fazer isso de diversas formas, otimizar é determinar todos as características do transporte que nos trará um menor custo ou tempo, por exemplo. Da mesma forma, se queremos transportar um certo conjunto de dados por uma rede como a internet, onde temos diversos caminhos pelos quais uma informação pode ser transmitida, otimizar significa determinar o modo de transmissão e o caminho da transmissão de forma que a comunicação seja o mais rápida possível. Ainda no curso anterior, vimos que alguns problemas em que o método Simplex poderia ter desempenho pouco satisfatório em problemas grandes; para estes casos, em que mesmo um computador rápido pode levar dias, meses ou até anos (...) para encontrar uma solução ótima, foi apresentado como exemplo um algoritmos que lida com um problema específico clássico deste tipo: o Algorítmo Húngaro para o problema da atribuição. 28_SI_-_PesquisaOperacional_II_-_o27 4

115 Pesquisa Operacional II 2 Atualização: 3/8/28 O Problema de Atribuição é muito comum além das esferas clássicas de alocar projetos a equipes; ele pode ser usado, por exemplo, em um sistema de computação distribuída. Neste tipo de sistema o computador responsável pelo controle de execução das aplicações deve decidir qual é o outro computador que irá processar uma informação ou executar um dado software. Como cada equipamento pode ter recursos distintos (velocidade de processamento, memória, dispositivos, etc), trata-se de um problema de atribuição que o Sistema Operacional terá de resolver. Figura - Qual programa será executado em qual computador? Hoje também estão se tornando comuns os computadores com dois processadores ou mais (Dual Core, como Core2 Duo, Athlon X2, etc) e isso traz uma tarefa ao Sistema Operacional, antes desnecessária: escolher qual dos processadores (neste caso, todos iguais) irá executar um dado thread (parte de um programa). Essa atribuição vai levar em conta qual a carga de cada processador, quais recursos cada um deles está usando, e assim por diante. Figura 2 - Qual tarefa será atribuída a cada processador?.. Pesquisa Operacional II Conceitos Chave: - Simplex é lento! - Problema do Transporte - Problema do Caminho Mínimo - Simulações - Problemas muito complexos => heurísticas * Diferentes para cada problema * Meta-Heurísticas 28_SI_-_PesquisaOperacional_II_-_o27 5

116 Pesquisa Operacional II 3 Atualização: 3/8/28 Neste curso serão apresentados outros métodos de otimização, aplicáveis a problemas específicos, que eventualmente precisam ser resolvidos em tempos muito curtos e para os quais o Simplex não fornece solução ou não é rápido o suficiente. Vejamos rapidamente alguns deles. - Problema do Transporte da Programação Linear O Problema do Transporte é muito comum quando queremos realocar recursos ou atividades, e isso vai além do transporte físico real. Por exemplo: em uma rede Bit Torrent temos um arquivo em diversas fontes, que precisam ser enviados para diversos destinos, sendo que a velocidade de transmissão de cada fonte para cada destino é diferente. Qual fonte manda o arquivo para qual destino de forma que todos sejam atendidos com o menor custo de tempo total possível? É possível modelar este problema como um problema do transporte para decidir qual origem envia dados para qual destino, de forma a minimizar o tempo total de transferência. Figura 3 - De qual servidor um arquivo irá para qual cliente? O mesmo raciocínio pode, em última análise, ser usado para o caso de um banco de dados distribuído com espelhamento. - Problemas de Caminho Mínimo Além da aplicação clássica em Sistemas de Informação ao usuário de transporte, para indicar o menor caminho para ir de um lugar ao outro, este tipo de problema é também muito comum em redes de comunicação. Nas redes de comunicação, ao estabelecer uma conexão entre um ponto fonte e um destino, é necessário definir qual o caminho que gasta o menor número de recursos (centrais, cabos de conexão etc.) para transportar a informação de um ponto a outro. Nestas aplicações são usados algoritmos de roteamento que decidem por onde a informação deve seguir. Vale ressaltar que aqui não se trata necessariamente de redes do tipo Internet, mas especialmente de redes ATM (como a de telefone), onde é necessário encontrar o 28_SI_-_PesquisaOperacional_II_-_o27 6

117 Pesquisa Operacional II 4 Atualização: 3/8/28 caminho ideal para realizar uma conexão. Neste curso serão apresentados dois algoritmos de caminho mínimo: um mais simples e outro mais robusto. Figura 4 - Qual o melhor caminho para ir da Origem (O) ao Destino (D)? Figura 5 - E agora, qual o melhor caminho para ir de O a D? Também veremos, rapidamente, o algoritmo Network Simplex, que serve para casos onde temos múltiplas origens e múliplos destinos, seja de cargas ou de dados. - Problemas de Simulação Imagine que você foi contratado por uma empresa que mantém a Rodovia dos Imigrandes, com o objetivo de construir um sistema de informações que indique quantos postos de pedágio são necessários colocar em funcionamento, dada uma previsão de veículos que irão descer para o litoral. Em seu sistema, você usa a taxa de atendimento de cada posto de pedágio com a média de chegada dos veículos e calcula quantos postos de pedágio serão necessários. Mas aí o seu cliente chega e diz: "Olha, eu queria saber quanto será, com 99,5% de probabilidade, o maior número de carros que ficarão em uma fila do pedágio, para que eu possa ajustar os cones para liberar o espaço...". Obviamente não é possível usar uma conta simples, como a usada no seu sistema para dimensioná-lo, para responder à esta pergunta. O método mais simples para avaliar este tipo de situação é, em geral, a simulação. 28_SI_-_PesquisaOperacional_II_-_o27 7

118 Pesquisa Operacional II 5 Atualização: 3/8/28 A simulação usará de métodos estocásticos (envolvendo aleatoriedade) para simular o que ocorreria na realidade, as taxas de chegadas dos carros (que, na realidade, não são iguais à média durante todo o tempo!) para estimar a informação desejada. - Problemas Gerais Imagine que, em outra situação, você é contratado para desenvolver um sistema que, por exemplo, deve calcular quais são os professores serão alocados em quais horários de aula para minimizar o número de professores e alocá-los dentro das restrições de cada um deles. Ao montar o modelo, percebe que o tal problema não se encaixa em qualquer um dos métodos "rápidos" conhecidos e, pelo método Simplex, até instâncias pequenas demoram uma eternidade para serem resolvidas. Se o cliente do sistema se contentar com uma solução muito boa, ainda que não seja a melhor, há uma saída: o uso dos chamados métodos heurísticos. Métodos Heurísticos são processos que, em geral, determinam soluções muito boas para um determinado problema, mas não há garantia alguma que esta solução seja ótima (embora em muitos casos ela seja). Entretanto, é importante frisar que não existe uma heurística genérica: "Use essa, que resolve qualquer problema". Uma heurística é sempre desenvolvida especificamente para um tipo de problema (ou para um problema específico, no caso mais comum). Entretanto, existem alguns mecanismos que podem ser facilmente adaptáveis para diversos problemas: são as chamadas Meta-Heurísticas. As Meta-Heurísticas não são genéricas, mas podem ser facilmente adaptadas para um grande número de problemas distintos. 2. PESQUISA OPERACIONAL E SISTEMAS DE INFORMAÇÃO Conceitos Chave: - Busca e estatística em Banco de Dados => é o mínimo! - Gerar mais informações - Gerar informações mais úteis - Gerar informações novas Talvez muitos se perguntem o que a Pesquisa Operacional tem a ver com um curso de Sistemas de Informação? Ora, o objetivo de um profissional de Sistemas de Informação é construir sistemas capazes de fornecer informações relevantes para seus utilizadores. Isso, em geral, envolve o processamento de grandes quantidades de dados e a geração de alguns números, reduzindo 28_SI_-_PesquisaOperacional_II_-_o27 8

119 Pesquisa Operacional II 6 Atualização: 3/8/28 uma infinidades de dados em um pequeno conjunto de informações que seja mais facilmente compreendido pelos administradores de um processo ou serviço. Talvez a forma mais básica de Sistema de Informação seja a geração de relatórios através de análises de um Banco de Dados. Uma grande massa de dados é analisada através de uma diretiva especificada pelo programador (no SQL, através de um SELECT) e um resultado é apresentado. No caso mais simples de manipulação de banco de dados, trata-se de uma simples busca. Em um caso mais complexo, podem ser várias estatísticas. "Quantos clientes já tiveram seus carros roubados? Qual a porcentagem dos clientes tem seguro de veículos? Quantos, destes, tiveram seu carro roubado? Quantos dos carros roubados eram de uma determinada marca?"... Entretanto, mesmo nesta forma "mais complexa", o uso de banco de dados é o básico, o mínimo necessário. As informações obtidas não são as mais úteis e claras, uma vez que ainda requerem processamento posterior. Além das buscas e estatísticas sobre bancos de dados serem o mínimo que um sistema de informação precisa faz, de forma geral já existem muitos softwares comerciais que atentem à quase todas as necessidades que uma empresa possa ter. Por esta razão, um profissional da área de Sistemas de Informação não pode se satisfazer apenas com esse conhecimento; ele precisa ir além e desenvolver softwares que forneçam mais informações e informações mais interessantes aos seus clientes. Um sistema de informações não deve apenas se preocupar em diagnosticar um problema, como "as vendas caíram no terceiro trimestre do ano", mas também sugerir soluções, como "precisamos redirecionar as vendas para a cidade X, o que reduzirá o nosso custo e aumentará nossa competitividade". E este tipo de resposta, apesar de muitas vezes ser baseado em informações de um banco de dados, não sai com uma simples query; é necessário todo um processamento adicional visando um objetivo específico. É justamente esse processamento específico que é desenvolvido na Pesquisa Operacional; muitos dos problemas comuns já possuem um método usual de cálculo de sua solução ótima, outros exigem que um algoritmo de otimização seja desenvolvido... mas isso nem sempre é possível, tornando-se necessário o uso de uma heurística (sistema especialista) ou a aplicação de uma meta-heurística específica, que produzam "apenas" boas soluções. O trabalho do profissional de Sistemas de Informações e sua relação com a Pesquisa Operacional está no âmbito da aplicação. A função é desenvolver sistemas que apliquem as técnicas de Pesquisa Operacional visando encontrar informações mais úteis ao cliente do que uma mera estatística histórica. Trata-se de gerar novas informações ao invés de apenas sintetizar e/ou modificar a forma de apresentação de velhas informações. 28_SI_-_PesquisaOperacional_II_-_o27 9

120 Pesquisa Operacional II 7 Atualização: 3/8/28 Assim, a Pesquisa Operacional traz para o profissional de Sistemas de Informação uma oportunidade de se diferenciar no mercado, de desenvolver sistemas mais completos e mais informativos, podendo alcançar uma posição de destaque no mercado. 3. BIBLIOGRAFIA MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, 27. ARENALES, M; ARMENTANO, V; MORABITO, R; YANASSE, H. Pesquisa Operacional. Rio de Janeiro: Editora Campus, 26 28_SI_-_PesquisaOperacional_II_-_o27 2

121 Pesquisa Operacional II Atualização: 8/8/28 Unidade : Introdução aos Problemas de Fluxo em Rede Prof. Daniel Caetano Objetivo: Apresentar o conceitos dos Problemas de Fluxo em Rede e sua representação por Grafos. Bibliografia: AHUJA et al.; MOREIRA; ARENALES et al. INTRODUÇÃO Conceitos Chave: - Problema da Distribuição x Problema do Caminho Mínimo - Uso do Simplex + Modelo de Conservação de Massa => Lento! - Conexões + Interligações => Rede - Escolha de Interligações => Problema de Fluxo em Rede * Exemplos * Algoritmos específicos Um certo dia é solicitado que seja implementado no sistema da empresa um módulo que seja capaz de calcular as rotas que serão feitas pelos distribuidores do produto fabricado; este caminho deve ser tal que os trajetos sejam mínimos e todos os pontos de entrega sejam satisfeitos. Figura : Qual trajeto o caminhão deve fazer da Base aos pontos de demanda D~D4? Um outro dia é solicitado que seja desenvolvido um módulo para o sistema do GPS dos caminhões, capaz de encontrar o melhor caminho do ponto em que o caminhão está, até o ponto de entrega. 28_SI_-_PesquisaOperacional_II_-_o27 2

122 Pesquisa Operacional II 2 Atualização: 8/8/28 Figura 2: Qual trajeto o caminhão C deve fazer até o ponto de entrega PE? Como resolver estes problemas? Não há dúvida que, dada uma modelagem adequada - alguma variação de um modelo de conservação de massa - estes problemas todos podem ser resolvidos pelo método Simplex. Entretanto, dada a dimensão que estes problemas podem adquirir (em termos de números de equações), muitas vezes o Simplex se torna lento e desajeitado em seu tratamento. Observação : Um modelo de conservação de massa é aquele em que impomos como restrições que tudo que chegar a um dos pontos de conexão tem de ser igual a tudo que sai dos pontos de conexão. Assim, é preciso análisá-los com maior cuidado, observar que características possuem em comum. No primeiro caso, por exemplo, temos um problema em que são envolvidas cargas a serem levadas de um ponto a outro, passando por diversos pontos intermediários, todos eles interligados por ruas. No segundo caso, temos um caminhão que precisa ser levado de um ponto a outro, passando por diversos pontos intermediários, todos eles interligados por ruas. Parece haver uma semelhança entre eles, não? De fato, a solução de ambos os problemas passa por decidir quais as interligações entre pontos que devem ser usadas. De forma mais concreta, a decisão que precisa ser tomada é: quais das setas representadas na figura 2 devem ser usadas pelo caminhão C para chegar ao ponto de entrega PE? Este tipo de problema, que envolvem algum tipo de movimentação entre pontos no espaço (ou tempo), passando por interconexões entre estes pontos, é chamado de "Problema de Fluxo em Rede", pois deseja-se determinar por onde ocorrerá o fluxo nas interconexões de uma rede qualquer. Problemas que entram nesta categoria são aqueles que envolvem tráfego de veículos, conexões de comunicação, distribuição de cargas, transporte de passageiros, dentre outros. Mas como é possível tirar partido das características deste tipo de problema? Ao longo dos anos estas características comuns a todos estes problemas foram exploradas na criação de algoritmos específicos, buscando soluções mais rápidas, mais eficientes computacionalmente, para tais problemas. 28_SI_-_PesquisaOperacional_II_-_o27 22

123 Pesquisa Operacional II 3 Atualização: 8/8/28. GRAFOS Conceitos Chave: - Representação de Fluxo em Rede => Grafo - Pontos => Nós - Interconexões => Arcos - Grafo Direcionado x Grafo Não-Direcionado - Representação em código (Java) Quando se pretende descrever um problema, é necessário o uso de uma representação eficaz. No caso do problema de fluxo em rede, existe um problema que envolve pontos no espaço (ou tempo) e suas interconexões. Uma forma visual conveniente para representar estes modelos já foi vista na figura 2, reproduzida na figura 3: Figura 3: Um exemplo de representação de problema de fluxo em rede Esta é, de fato, a representação mais usual para este tipo de problema; esta representação é chamada de grafo. Em um grafo de um problema de transporte, entretanto, os nomes não são "pontos" e "interconexões". Os pontos são chamados nós e os elementos de interconexão entre nós são denominados arcos. Os arcos podem ser direcionados (ou seja, indicarem explicitamente qual seu nó origem e qual seu nó destino), permitindo a "passagem" por aquele arco em apenas uma direção (da origem para o destino). Neste caso, diz-se que o grafo é direcionado (digrafo), como o apresentado na figura 3. Caso os arcos não sejam direcionados (ou seja, permitem "passagem" nas duas direções, o grafo será não-direcionado, como o exemplo da figura. Computacionalmente, os grafos são, em geral, representados como um conjunto de nós (um vetor de objetos nó, por exemplo) e um conjuno de arcos (um vetor de objetos arco, por exemplo), sendo que estes últimos referenciam aos objetos nó aos quais estão ligados. 28_SI_-_PesquisaOperacional_II_-_o27 23

124 Pesquisa Operacional II 4 Atualização: 8/8/28 2. BIBLIOGRAFIA AHUJA, R.K; MAGNANTI, T.L; ORLIN, J.B. Network Flows: Theory, Algorithms and Applications. New Jersey: Prentice Hall, 993. MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, 27. ARENALES, M; ARMENTANO, V; MORABITO, R; YANASSE, H. Pesquisa Operacional. Rio de Janeiro: Editora Campus, 26 28_SI_-_PesquisaOperacional_II_-_o27 24

125 Pesquisa Operacional II Atualização: 25/8/28 Unidade 2: O Problema do Transporte Prof. Daniel Caetano Objetivo: Apresentar a modelagem do problema do transporte e capacitar para sua solução com o uso de algoritmo específico. Bibliografia: AHUJA et al.; MOREIRA; ARENALES et al. INTRODUÇÃO Conceitos Chave: - Problema: incluir distribuição no sistema da Qualquer-Cola - Problema do Transporte * Produtores * Consumidores * Deslocamentos com custos diferentes * Minimizar custo - Simplex? Ao desenvolver um sistema de vendas de Qualquer-Cola online, para donos de bares, seu cliente solicita que você inclua um sistema que ajude-o a planejar a distribuição dos produtos. A Qualquer-Cola tem uma série de fábricas/centros de distribuição, cada um deles com uma determinada produção, e deseja saber quantos engradados enviará de cada centro de distribuição para cada ponto de venda, sendo que cada um destes pontos possui uma demanda específica, com o objetivo de reduzir os custos de transporte. Este tipo de problema, bastante comum, é denominado "Problema do Transporte", e se refere ao problema básico em que temos uma determinada quantidade de origens de um produto (fábricas, por exemplo), com uma capacidade de produção limitada, e destinos para este produto (lojas, por exemplo), que possuem uma determinada demanda pelos produtos. Em geral, é possível transportar de qualquer fábrica para qualquer loja. Entretanto, os custos podem variar bastante em cada caso. Por esta razão, existe uma dúvida clássica: quanto levar de cada fábrica para cada loja de modo que o custo de transporte seja mínimo? Este tipo de problema pode ser modelado e resolvido pelo Simplex, mas veremos também uma forma mais rápida e eficiente de solucioná-los. 28_SI_-_PesquisaOperacional_II_-_o27 25

126 Pesquisa Operacional II 2 Atualização: 25/8/28. UM PROBLEMA DE TRANSPORTE Conceitos Chave: - Fabricas => Capacidade de Produção - Lojas => Demanda - Custos F para L - Grafo Duas fábricas (F e F2) possuem capacidade de produção de e 5 engradados de Qualquer-Cola respectivamente, fornecendo um total de 25 engradados que devem ser entregues em 3 lojas (L, L2 e L3), que possuem demandas de, 4 e engradados respectivamente, completando demanda por 25 engradados. Os custos de transporte (por engradado) de uma fábrica até uma loja são: F F2 L 3 2 L2 8 9 L3 9 Qual a quantidade de engradados que deve ser levada de cada fábrica Fx para cada loja Ly, de forma a minimizar o custo de transporte? 2. MODELAGEM MATEMÁTICA Conceitos Chave: - Variáveis de Decisão: X ij => Quanto de i para j? - Função Objetivo: Minimizar soma dos custos de todos os deslocamentos - Restrição de Envio: Envio de Fábricas ü Produção - Restrição de Recepção: Recepção de Lojas Demanda - Forma Padrão? Simplex? A primeira coisa a se analisar, são as variáveis de decisão, que é baseada na pergunta original: "quanto deve ser transportado de cada fábrica para cada loja?". 28_SI_-_PesquisaOperacional_II_-_o27 26

127 Pesquisa Operacional II 3 Atualização: 25/8/28 Assim, se a quantidade de engradados transportada da fábrica i para a loja j for chamada de X ij, pode-se dizer, por exemplo, que X representa a quantidade de engradados que deve ser transportada da fábrica para a loja. Da mesma forma, X 2 representa a quantidade de engradados que deve ser transportada da fábrica para a loja 2, X 2 representa a quantidade de engradados que deve ser transportada da fábrica 2 para a loja e assim por diante. Como decorrência, se transportar um engradado da fábrica para a loja custa $ 3 (como indicado na tabela) e o número de engradados transportado da loja para a fábrica é X, então pode-se dizer que o custo do transporte dos engradados da fábrica para a loja é: 3 * X Se nenhum engradado for transportado, X =, então o custo será 3 * =... ou seja, se nada for transportado da fábrica para a loja, o custo será zero. Se um engradado for transportado, X = e o custo será 3 * = 3. Finalmente, se engradados forem transportados da fábrica para a loja, X = e o custo será 3 * = 3. O raciocínio pode ser feito para todas as outras possibilidades de transporte; o custo total do transporte será a soma de todas estas parcelas que, neste caso, podem ser representadas da seguinte forma. CT = 3 * X + 8 * X * X 3 + 2* X * X 22 + * X 23 Como o objetivo é minimizar o custo de transporte, a função objetivo fica: [MIN] 3 * X + 8 * X * X 3 + 2* X * X 22 + * X 23 Para um modelo matemático completo falta, ainda, definir as restrições do problema. Neste tipo de problema há basicamente 2 conjuntos de restrições: a) Nenhuma fábrica pode enviar mais do que produz; b) Nenhuma loja pode receber menos do que necessita. 2.. Nenhuma fábrica envia mais do que produz A soma de tudo que sai de uma fábrica deve ser menor ou igual à sua produção. No caso da fábrica, que produz unidades, seu envio total é X + X 2 + X 3 (soma daquilo que ela envia para as lojas, 2 e 3, respectivamente). Assim, a primeira restrição será: X + X 2 + X 3 ü No caso da fábrica 2, que produz 5, e seu envio total é X 2 + X 22 + X 23 (soma daquilo que ela envia para as lojas, 2 e 3, respectivamente). A segunda restrição, então, fica: X 2 + X 22 + X 23 ü 5 28_SI_-_PesquisaOperacional_II_-_o27 27

128 Pesquisa Operacional II 4 Atualização: 25/8/ Nenhuma loja recebe menos do que necessita A loja precisa receber unidades. Tudo que ela recebe é X + X 2 (soma do que é enviado para ela pelas fábricas e 2, respectivamente). Assim, a terceira restrição será: X + X 2 Analogamente, as restrições quatro e cinco (referentes às lojas 2 e 3) são: X 2 + X 22 4 X 3 + X 23 Desta maneira, o modelo final será: F.O. [MIN] 3 * X + 8 * X * X 3 + 2* X * X 22 + * X 23 S.A. X + X 2 + X 3 ü X 2 + X 22 + X 23 ü 5 X + X 2 X 2 + X 22 4 X 3 + X 23 Em alguns casos pode-se desejar que o número de unidades enviadas a cada loja seja exatamente igual à demanda; basta, neste caso, substituir os sinais " " por "=". É possível passar este problema para a forma padrão e resolvê-lo pelo Simplex. Entretanto, será apresentada uma maneira de realizar esse processo. 3. ALGORITMO DO PROBLEMA DO TRANSPORTE Conceitos Chave: - Algoritmo Específico * vezes mais rápidos que Simplex * Exige Menos Memória => Resolver Problemas Maiores * Soluções "inteiras" - Solução inicial: Método do Canto Noroeste - Idéia da Realocação de Carga - Algoritmo do Problema do Transporte 28_SI_-_PesquisaOperacional_II_-_o27 28

129 Pesquisa Operacional II 5 Atualização: 25/8/28 Apesar do Simplex resolver a contento um problema como o apresentado, é útil usar um algoritmo específico. Segundo Render e Stair Jr. (2, apud Moreira, 26), estes algoritmos são particularmente interessantes porque: ) Seus tempos de computação são, em geral, vezes menores que os do Simplex. 2) Requerem menos memória do computador, permitindo resolver problemas maiores. 3) Produzem sempre soluções inteiras, o que é importante no problema do transporte. No método a ser apresentado, assim como ocorria no Simplex, é preciso encontrar uma solução inicial válida. Infelizmente, aqui a solução inicial não é obtida zerando variáveis e é necessário um método específico para iniciar o processo. Existem vários métodos para isso. Neste curso será apresentado um chamado "método do canto noroeste". 3.. O Método do Canto Noroeste O primeiro passo é desenhar uma tabela, que terá sempre 2 colunas a mais que o número de centros de demanda (lojas, por exemplo) e 2 linhas a mais que o número de produtores (fábricas, por exemplo). Para o problema da Qualquer-Cola apresentado, a tabela inicial é: F L L2 L3 Suprimento. F2 5. Demanda. 4.. Nesta tabela, devem ser acrescentados os custo de transporte de cada trajeto dentro dos retângulos vazios no meio, entre parênteses, como indicado na tabela a seguir: F L (3) L2 (8) L3 (9) Suprimento. F2 (2) (9) () 5. Demanda. 4.. Agora, a partir da primeira célula no canto superior esquerdo (canto noroeste), deve-se tentar preencher a demanda de cada coluna (da esquerda para a direita), seguindo nas linhas de cima para baixo. Nas tabelas seguintes estarão anotados em vermelho o valor que sobra de suprimento de cada fábrica e o que falta em cada centro de demanda após a alocação em cada passo: 28_SI_-_PesquisaOperacional_II_-_o27 29

130 Pesquisa Operacional II 6 Atualização: 25/8/28 F F2 Demanda L (3). (2). L2 (8) (9) L3 (9) ().. Suprimento Como a demanda da primeira coluna pode ser preenchida pelo suprimento da primeira linha, segue-se para a segunda coluna. Considerando a demanda da segunda coluna (4), a primeira linha ainda tem condições de atendê-la? Como a fábrica F já usou toda a sua produção para suprir a loja L, a resposta é NÃO. Assim, indica-se ZERO na posição F/L2 e parte-se para a segunda linha (segunda fábrica), que ainda tem 5 engradados. Usamos uma parte destas unidades para suprir a loja L2, na coluna 2: F F2 Demanda L (3). (2). L2 (8) (9) L3 (9) ().. Suprimento. 5.. Como a demanda da segunda coluna pode ser preenchida pelo suprimento da segunda linha, parte-se para a terceira coluna. Considerando a demanda da terceira coluna (), a segunda linha (fábrica) ainda tem condições de atendê-la? Como sobraram ainda. unidades na F2, a resposta é SIM! Assim, devem ser usadas estas unidades para suprir a demanda de L3: F F2 Demanda L (3). (2). L2 (8) (9) L3 (9) ().. Suprimento. 5. Esta é uma solução possível, já que os requisitos foram respeitados. Entretanto, esta solução tem um custo alto: 3,*. + 9,*4. +,*. = 3., + 36., +., = 276.,. Para obtenção da tabela final, deve-se marcar as células vazia com um pequeno "-". 28_SI_-_PesquisaOperacional_II_-_o27 3

131 Pesquisa Operacional II 7 Atualização: 25/8/28 F F2 Demanda L (3). (2) -. L2 (8) (9) L3 (9) - ().. Suprimento. 5. Com esta solução inicial pode-se partir para o algoritmo do problema do transporte A Lógica de Realocação de Cargas O algoritmo baseia-se na realocação de cargas, ou seja, pequenas mudanças na solução, trocando o fornecedor de uma loja por outro. Antes de ser apresentado o algoritmo propriamente dito, é preciso entender com clareza o mecanismo de realocação de carga. Suponha, por exemplo, que tenha sido detectado que seria interessante passar a transportar UM ENGRADADO da fábrica F2 para a loja L. Isso pode ser representado colocando mais uma unidade na célula F2-L da tabela: F F2 Demanda L (3). (2) +.. L2 (8) (9) L3 (9) - ().. Suprimento Entretanto, como é possível ver, isso provoca um desequilíbrio: para atender a esta situação, F2 teria que produzir 5 unidades (ao invés de 5). Para contornar este problema, é preciso diminuir o número de engradados entregues pela fábrica F2 em alguma das outras lojas, como por exemplo a loja 2 (célula F2/L2): F F2 Demanda L (3). (2) +.. L2 (8) (9) L3 (9) - ().. Suprimento Entretanto, apesar de isso ter corrigido o suprimento de F2, agora a demanda de L2 não está sendo atendida (3999, ao invés de 4). Para acertar esta situação, é necessário enviar um engradado de F para L2: 28_SI_-_PesquisaOperacional_II_-_o27 3

132 Pesquisa Operacional II 8 Atualização: 25/8/28 F F2 Demanda L (3). (2) +.. L2 (8) + (9) L3 (9) - ().. Suprimento A demanda de L2 está corrigida, agora. Entretanto, o suprimento de F está maior que sua capacidade (, ao invés de ). Para ajustar o suprimento de F, pode-se reduzir o envio de engradados da fábrica F para a loja L, sendo isso indicado com a subtração de uma unidade da posição F/L: F F2 Demanda L (3).- (2) +.. L2 (8) + (9) L3 (9) - ().. Suprimento Agora, com a realocação completa, a tabela está novamente equilibrada. Mas será que realmente valeu a pena fazer essa realocação? Quanto o custo diminuiu por realocar as cargas desta maneira? Isto pode ser calculado de duas formas: a primeira delas é refazendo toda a conta de custo novamente... ou fazer a conta da diferença de custo. Isso pode ser feito verificando que, nas células em que foi aumentada uma unidade, haverá um acréscimo de custo: F/L2: + * 8 = 8 F2/L: + * 2 = 2 Por outro lado, nas células onde houve uma diminuição de uma unidade, houve um decréscimo de custo: F/L: - * 3 = -3 F2/L2: - * 9 = -9 O valor total da diferença de custo foi: = 2-22 = -2 O resultado -2 significa que o transporte ficou $ 2, mais barato com essa relocação. É uma diferença baixa porque apenas um engradado foi realocado. Se mais engradados forem realocados, a economia será maior. Como saber qual o máximo de relocações que posso fazer? Simples. O truque é substituir o "+" e "-" das células por uma variável d, da seguinte forma: 28_SI_-_PesquisaOperacional_II_-_o27 32

133 Pesquisa Operacional II 9 Atualização: 25/8/28 F F2 Demanda L (3).-d (2) +d. L2 (8) +d (9) 4.-d 4. L3 (9) - ().. Suprimento. 5. Observando as células que estão perdendo unidades (-d), ou seja, F/L e F2/L2, é possível ver que elas possuem, respectivamente,. e 4. engradados. O menor valor entre eles é, portanto, 4.. Assim, o máximo valor que d pode assumir é 4. (pois, obviamente, nenhum valor na tabela pode ser negativo). Assim, se for considerado que d = 4, o resultado da relocação máxima será: F F2 Demanda L (3) 6. (2) 4. L2 (8) 4 (9) 4. L3 (9) - ().. Suprimento. 5. Observe, porém, que a célula que limitou o valor de d e que agora possui valor ZERO (F2/L2) deve ser alterada para que possua um "-". F F2 Demanda L (3) 6. (2) 4. L2 (8) 4 (9) - 4. L3 (9) - ().. Suprimento. 5. Este é o princípio da relocação, que pode ser realizada de uma forma mecânica: a relocação sempre ocorre escolhendo-se uma célula vazia para acrescentar um valor d, determinando um ciclo fechado com células que possuem valores de carga a transportar, alternando o sinal entre + e -, como representado na seqüência abaixo: 28_SI_-_PesquisaOperacional_II_-_o27 33

134 Pesquisa Operacional II Atualização: 25/8/28 Com o ciclo determinado, verifica-se qual célula perde carga (-d) que possui o menor valor de carga e este será o valor limite para d. Feito isso, Realiza-se as contas de economia, a célula que ficou zerada ganha o "-" e o passo está finalizado. Entretanto, apesar de este exemplo ter sido apresentado com uma célula qualquer, esse processo não deve ser realizado a esmo, para todas as células vazias. A escolha de qual célula receberá a realocação de carga é a essência do Algoritmo do Problema do Transporte O Algoritmo do Problema do Transporte O algoritmo do problema do transporte é um procedimento que permite identificar qual a célula vazia que trará maior ganho se passar a conter carga, através de um processo de realocação de carga. Adicionalmente, o procedimento permite verificar em que momento nenhuma realocação permitirá economias, indicando o fim do processo. Assim, a idéia do algoritmo é: ) Identificar qual a melhor célula para receber realocação de carga; 2) Verificar se o problema está finalizado; 3) Se não, realizar a realocação de carga, como já apresentado, e voltar ao passo. 28_SI_-_PesquisaOperacional_II_-_o27 34

135 Pesquisa Operacional II Atualização: 25/8/28 Quando nenhuma relocação trouxer qualquer benefício, a solução ótima terá sido encontrada. O algoritmo é mais facilmente compreendido se apresentado na forma de exemplo. Para identificar a célula que trará mais economia ao receber carga, será necessário voltar à tabela inicial do problema da Qualquer Cola, com uma linha e uma coluna somadas à mesma: F F2 Demanda L (3). (2) -. L2 (8) (9) L3 (9) - ().. Suprimento. 5. L K O processo inicia-se pela determinação dos valores da linha K e coluna L. Para isso, determinamos que o valor da primeira linha da coluna L será ZERO: F F2 Demanda L (3). (2) -. L2 (8) (9) L3 (9) - ().. Suprimento. 5. L K Os outros valores serão determinados iterativamente: para cada célula já com carga, o valor correspondente de L e K deve ser tal que sua soma seja exatamente o custo unitário da célula. Por exemplo, sendo o L da primeira linha é igual a zero e o custo da célula F/L igual a 3, tem-se que + K = 3 e, portanto, K da coluna L =3. Da mesma forma, sendo o L da primeira linha é igual a zero e o custo da célula F/L2 igual a 8, tem-se que + K = 8 e, portanto, K da coluna L2 =8. F F2 Demanda L (3). (2) -. L2 (8) (9) L3 (9) - ().. Suprimento. 5. L K _SI_-_PesquisaOperacional_II_-_o27 35

136 Pesquisa Operacional II 2 Atualização: 25/8/28 Uma vez determinado o K da coluna L2, o L da linha F2 fica automaticamente definido: uma vez que a célula F2/L2 tem custo 9 e o K da coluna L2 é 8, então é preciso que 8 + L = 9, o que leva a um L = para a linha F2. F F2 Demanda L (3). (2) -. L2 (8) (9) L3 (9) - ().. Suprimento. 5. L K 3 8 Este L, junto com o custo da célula F2/L3, define o K da coluna L3: F F2 Demanda L (3). (2) -. L2 (8) (9) L3 (9) - ().. Suprimento. 5. L K Com base nesta tabela, agora, é possível calcular o índice de melhoria de cada célula vazia. Este índice é calculado com o custo da célula vazia, subtraído do K de sua coluna e do L de sua linha. Por exemplo, a melhoria da célula F/L3 é: Célula C - K - L = F/L = Calculando para as outras, temos: Célula C - K - L = F/L = F2/L = -2 Este resultado significa que realocar carga para a célula F/L3 não melhora em nada a solução... mas realocar carga na célula F2/L vai reduzir o custo em $ 2, por cada unidade realocada! Então, deve-se determinar o ciclo de realocação que acrescenta +d na célula F2/L: 28_SI_-_PesquisaOperacional_II_-_o27 36

137 Pesquisa Operacional II 3 Atualização: 25/8/28 A célula F2/L2 determina o limite para d, que é 4. Fazendo as contas, o resultado da realocação é: F F2 Demanda L (3) 6. (2) 4. L2 (8) 4 (9) - 4. L3 (9) - ().. Suprimento. 5. Com a nova distribuição, repete-se o processo, calculando os novos Ls e Ks: F F2 Demanda L (3) 6. (2) 4. L2 (8) 4 (9) - 4. L3 (9) - ().. Suprimento. 5. L - K 3 8 E, agora, calcula-se novamente os índices de melhoria para as células vazias: Célula C - K - L = F/L = -2 F2/L (-) = 2 Agora a célula que provoca melhoria é a célula F/L3. O ciclo dela fica: F F2 Demanda L (3) 6.-d (2) 4+d. L2 (8) 4 (9) - 4. L3 (9) +d ().-d. Suprimento. 5. L K 28_SI_-_PesquisaOperacional_II_-_o27 37

138 Pesquisa Operacional II 4 Atualização: 25/8/28 será: E o valor máximo que d pode assumir agora é 6. Assim, recalculando, o resultado F F2 Demanda L (3) - (2).. L2 (8) 4 (9) - 4. L3 (9) 6. () 5.. Suprimento. 5. L K Novamente, repete-se o processo, calculando os novos Ls e Ks: F F2 Demanda L (3) - (2).. L2 (8) 4 (9) - 4. L3 (9) 6. () 5.. Suprimento. 5. L K 8 9 E os índices de melhoria das células vazias: Célula C - K - L = F/L = 2 F2/L = Como não é possível mais melhorar a solução, o problema está finalizado. O resultado final, ótimo, é: X 2 = 4., X 3 = 6., X 2 =. e X 23 = 5.. Os demais X ij são zero. 4. DIFERENÇAS ENTRE OFERTA E DEMANDA Conceitos Chave: - Algoritmos funciona para Oferta = Demanda - Oferta maior => Sem problemas, entretanto - Demanda maior => Fábrica Fictícia * Oferta = Excesso de Demanda * Custo de transporte ZERO 28_SI_-_PesquisaOperacional_II_-_o27 38

139 Pesquisa Operacional II 5 Atualização: 25/8/28 É notório que o algoritmo apresentado funciona apenas no caso em a oferta total (das fábricas) e a demanda total (das lojas) é exatamente a mesma; por outro lado, na prática, isso raramente ocorre. Ou a oferta ou a demanda é maior. Quando a oferta é maior, o problema pode ser resolvido normalmente. Simplesmente o total transportado será inferior à produção global das fábricas. Entretanto, se a demanda for maior, o problema se torna insolúvel. Para contornar este problema, basta introduzir uma fábrica fictícia, capaz de produzir exatamente a quantidade que falta de unidades para o equilíbrio entre oferta e demanda, e ligada a todas as lojas, com custo de transporte ZERO. Isso faz com que o problema seja solúvel e o custo de transporte seja calculado (e minimizado) corretamente. Entretanto, as lojas que receberem mercadorias da fábrica fictícia estarão, na verdade, deixando de receber estes produtos. 5. EXERCÍCIO Três fábricas (F, F2 e F3) possuem capacidade de produção de unidades, 5 unidades e 5 unidades respectivamente, compondo um total de 3 unidades que devem ser entregues em 4 lojas (L, L2, L3 e L4) que possuem demandas de 8 unidades, 4 unidades, 7 unidades e unidades respectivamente, completando demanda por 3 unidades. Os custos de transporte (por unidade) das fábrica até as loja são: F F2 F3 L L L3 9 9 L Qual a quantidade de produtos que eu levo de cada fábrica Fx para cada loja Ly, de forma a minimizar o custo de transporte? 6. BIBLIOGRAFIA MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, 27. ARENALES, M; ARMENTANO, V; MORABITO, R; YANASSE, H. Pesquisa Operacional. Rio de Janeiro: Editora Campus, 26 AHUJA, R.K; MAGNANTI, T.L; ORLIN, J.B. Network Flows: Theory, Algorithms and Applications. New Jersey: Prentice Hall, _SI_-_PesquisaOperacional_II_-_o27 39

140 Pesquisa Operacional II Atualização: 4/9/28 Unidade 3: O Problema do Caminho Mínimo: Algoritmo Label Setting Prof. Daniel Caetano Objetivo: Apresentar o algoritmo Label Setting para a resolução de problemas de caminho mínimo sem ciclos. Bibliografia:BRADLEY et al.;ahuja et al.;chvatal; GALLO et al.;winston. INTRODUÇÃO Conceitos Chave: - Problema: reduzir caminho * Caminho para o motoboy * Caminho no GPS - Algoritmos Específicos * Label Setting * Label Correcting * Network Simplex * Out-of-Kilter Existem diversas situações na vida de um desenvolvedor de software em que ele se depara com algum problema em que é necessários otimizar um trajeto, visando redução de custo de material, transporte, tempo de resposta... enfim, problemas que envolvem a redução de algum tipo de "custo" que varia de acordo com o trajeto escolhido. Um destes casos surge quando, durante o desenvolvimento de um sistema gerencial qualquer, o cliente solicita que seja calculado qual o trajeto que seu motoboy deve fazer para realizar uma dada entrega, dentre as diversas possibilidades. Um caso similar, mas de abordagem diferente, é o de um desenvolvedor que é contratado para desnvolver um sistema de navegação por GPS. Em um dado momento, o GPS sabe localizar a posição do usuário em uma rede, e sabe onde o usuário quer chegar... mas qual o melhor caminho entre os dois pontos? Este tipo de problema de melhor caminho, ponto a ponto, pode ser tratado com algoritmos mais específicos que o Simplex, como o Label Setting, Label Correcting, Network Simplex, Out-of-Kilter, dentre outros. No caso específico de caminho mínimo entre dois 28_SI_-_PesquisaOperacional_II_-_o27 4

141 Pesquisa Operacional II 2 Atualização: 4/9/28 pontos sem mais nenhum tipo de restrição, os algoritmos mais adequados são o Label Correcting e o Label Setting. Por questões didáticas, será apresentado inicialmente o algoritmo Label Setting e, em aulas posteriores, o Label Correcting.. FORMALIZAÇÃO: "O Problema do Motorista de Taxi" Conceitos Chave: - Levar um passageiro de uma Origem a um Destino - Minimizar distância percorrida - Não se tem informações do próximo passageiro - Ignorar trânsito Um taxista trabalha para uma empresa que lhe paga um valor fixo de acordo com a distância entre os baricentros das sub-regiões da cidade. Obviamente, para este taxista, é um grande negócio reduzir ao máximo a distância percorrida, economizando combustível e tempo. Pensando no problema do taxista, a empresa para a qual ele trabalha encomendou um software que, dada a origem e o destino, forneça o melhor caminho. Assim, apenas com o custo adicional do software, a empresa está contribuindo para uma qualidade superior de seus serviços e também para a satisfação de seus funcionários. O problema a ser resolvido pelo software trata-se, portanto, de um caso específico dentro dos problemas de fluxo em rede: o problema do caminho mínimo. Este problema tem ainda características mais específicas, dentro de um problema de caminho mínimo: é um problema em que um único passageiro será transportado da origem ao destino. E mais: não há como saber qual será a origem ou destino do próximo passageiro a ser transportado, o que restringe a otimização tão somente ao caminho mínimo entre dois pontos. Como apenas uma unidade (o passageiro) deve ser transportada, também não é necessária uma preocupação com a limitação de capacidade de fluxo nas vias e, por simplicidade, será desconsiderada a possibilidade de uma via congestionada. Uma representação física de um possível problema a ser resolvido para o taxista é mostrado na figura.: Figura : Exemplo de um problema a ser resolvido para o taxista 28_SI_-_PesquisaOperacional_II_-_o27 4

142 Pesquisa Operacional II 3 Atualização: 4/9/28 Em um problema deste nível, com este número reduzido de vias, possibilidades e restrições... É até possível pensarmos em um cálculo manual. Entretanto, a situação se torna extremamente mais complexa para um problema maior, como o apresentado na figura 2. Figura 2: Um problema real, mais complexo : Apesar de provavelmente ser possível utilizar o mesmo processo de solução, fazer todas as iterações necessárias manualmente seria uma tarefa bastante custosa e ineficiente - para não dizer aborrecida. Sabe-se que é possível resolver automaticamente problemas deste tipo, já que existem soluções que resolvem este tipo de problema em tempo real, em sistemas como o Apontador e o Google Maps, por exemplo. 2. MODELAGEM MATEMÁTICA Conceitos Chave: - Representação como Grafo * Tamanho dos arcos = Distância de um nó a outro - Entrada e Saída do Sistema * Solução possível => rede balanceada - Equilíbrio no nó - Equações * Genérica * Nó de Origem * Nó de Destino * Geral 28_SI_-_PesquisaOperacional_II_-_o27 42

143 Pesquisa Operacional II 4 Atualização: 4/9/28 - Economia * Custo de um arco * Minimizar custo total - Número de Eqüações + Número de Incógnidas => Não pelo Simplex! O primeiro passo para uma automatização é a modelagem, onde serão desprezadas todas as características irrelevantes para a resolução, além de serem explicitados todos os dados que possam ser necessários à solução. Como a idéia apresentada desde o início é resolver o problema por um algoritmo de fluxo em rede, modelar o problema como uma rede é praticamente uma necessidade. Para tanto, será utilizada a representação em grafo, com nós e arcos, sendo que os nós representaram as interseções e os arcos as vias (interligações entre os nós). É possível associar as distâncias aos comprimentos dos arcos, possibilitando o cálculo das distâncias pela soma dos comprimentos dos arcos. Neste instante, a rede do taxista pode ser representada como na figura 3. Figura 3: "Modelagem gráfica" da rede A indicação dos pontos de partida e chegada pode ser feita com duas seta, uma mostrando que entrou unidade no ponto de partida e uma indicando que saiu uma unidade no ponto de chegada. Entretanto, do ponto de vista do equilíbrio dos nós (tudo que entra = tudo que sai), isso cria um problema sério: há um indivíduo entrando em um nó (nó inicial) e ele simplesmente desaparece (já que a representação dele saindo do nó simplesmente não foi feita). A mesma incoerência ocorre no nó final, onde um indivíduo sai do sistema sem nunca ter chegado àquele nó. É necessário, então, indicar variáveis em cada um dos arcos, especificando se o indivíduo está passando por aquele arco ou não, de forma que todos os nós estejam equilibrados: se chegou um indivíduo a um dado nó, este indivíduo também precisa sair daquele nó, por algum outro arco. Nesta situação, pode-se dizer que a rede estará resolvida, ou seja, balanceada, como pode ser visto na figura 4. 28_SI_-_PesquisaOperacional_II_-_o27 43

144 Pesquisa Operacional II 5 Atualização: 4/9/28. Figura 4: Rede balanceada, representando uma solução possível para o problema Para representar isso matematicamente, será definida uma variável para cada arco, indicando se o indivíduo passa ou não por aquele arco. Por exemplo, a variável X ij pode indicar se o indivíduo está usando o arco que sai do nó i para o nó j. Se esta variável vale, indica que o indivíduo passa por aquele arco; se ela valer, o indivíduo não passa por aquele arco. Em um nó podem chegar vários arcos, e também podem sair vários arcos. Assim, para que um nó esteja em equilíbrio, isto é, tudo que chegar nele tem também que sair, a soma do fluxo de todos os arcos que chegam neste nó deve ser ser igual à soma do fluxo de todos os arcos que saem deste nó, como pode ser visto na figura 5. : Figura 5: Um nó balanceado: tudo que chega, sai. Uma forma simples de dizer isso é que "um nó em equilíbrio é aquele em que não fica ninguém. Todo mundo que chega nele, sai dele". Considerando que A seja o conjunto de todos os arcos (m,n) de uma rede, pode-se representar matematicamente esta situação para o nó i da seguinte forma: : Esta eqüação pode ser lida da seguinte forma: "Se for somado o fluxo de todos os arcos que chegam em um nó i e disso for subtraído o fluxo de todos os nós que saem deste mesmo nó i, o resultado deve ser sempre zero. Em outras palavras, todo mundo que chega em no nó i, sai do nó i. Esta representação é boa para nós genéricos, do meio da rede, mas não é válida para os nós de Origem e de Destino, já que nestes nós há o "aparecimento" e o "desaparecimento" de indivíduos, respectivamente. 28_SI_-_PesquisaOperacional_II_-_o27 44

145 Pesquisa Operacional II 6 Atualização: 4/9/28 Assim, nestes nós, a representação matemática do equilíbrio é ligeiramente diferente. Como no nó de Origem haverá o surgimento de uma unidade e no de Destino haverá o desaparecimento de uma unidade, será feita a seguinte modificação: no nó origem, será adicionado uma unidade na eqüação, e no nó destino será subtraída uma unidade. Assim, as equações serão: Nó Genérico: Nó de Origem: Nó de Destino: : Como é possível observar, o que muda é apenas o lado direito da eqüação: o valor é nos nós genéricos, - no nó de origem e no nó de destino. Assim, é possível indicar a eqüação para todos os nós de forma genérica: Se i é o nó inicial, b = -. Se i é o nó final, b =. Em todas as outras situações, b =. Como isso, está completo o conjunto de restrições que garantem o balanceamento dos nós e, portanto, da rede. Entretanto, as restrições garantem uma solução possível; é necessário definir uma função objetivo que garanta o menor comprimento possível para a solução. Como x ij terá valor se um arco estiver sendo usado e se não estiver sendo usado, pode-se afirmar que o custo de um arco na solução é: c ij * x ij onde c ij é o comprimento do arco que vai de i para j. Isso significa que se o arco estiver sendo usado, ele terá um custo c ij * = c ij. Se o arco não estiver sendo usado, seu custo será c ij * =. A soma do custo de todos os arcos definidos desta forma, dá o custo da solução, e a função objetivo - que é minimizar este custo - pode ser representada da seguinte forma: 28_SI_-_PesquisaOperacional_II_-_o27 45

146 Pesquisa Operacional II 7 Atualização: 4/9/28 Em outras palavras, esta eqüação significa que deve-se minimizar a soma do custo de todos os trechos (arcos) que compõem o caminho usado. Com essa modelagem completa, é possível observar que há praticamente uma equação de restrição para cada nó do sistema (o equilíbrio de cada nó) e cada uma delas terá tantas variáveis quantos forem os arcos que chegam e saem do nó ao qual esta restrição é referente. O grande número de equações e variáveis decorrentes do grande número de nós e arcos necessários para representar um "problema real" se torna então uma dificuldade a mais, se for considerada uma soluçãoo usando o algoritmo Simplex. 3. O ALGORITMO LABEL SETTING Conceitos Chave: - Escolher o melhor caminho até cada ponto, partindo do início. * Recursivamente - Lógica a) Etiquetar b) Selecionar nó "sem pai" para o qual se conhece todos os caminhos c) Calcular melhor caminho d) Indicar caminho na etiqueta e) Voltar ao passo (b) Se a abordagem para a solução por Simplex torna o problema muito complexo, como proceder? Neste problema, a modelagem matemática será deixada de lado, e ele será atacado por um outro ponto de vista: e se o objetivo fosse apenas calcular o caminho mínimo no pequeno problema do taxista, qual seria uma forma eficiente de realizar o processo? Ora, se for conhecida a distância até um dado nó por cada um dos caminhos possíveis, é possível determinar qual o melhor caminho até aquele nó, não? Pois o processo é exatamente este: para todo nó que se conhecer todos os caminhos de chegada, seleciona-se o melhor. Esta é exatamente a essência do algoritmo Label Setting. Entretanto, para resolver problemas grandes é necessário que o processo seja explicitado da forma mais clara e eficiente possível. Uma maneira de sistematizar tal procedimento é descrita a seguir:. Cria-se uma "etiqueta" em todos os nós, com duas posições: uma para indicar qual a distância acumulada até aquele nó e outra para indicar qual é o nó que o antecede no melhor caminho, ou seja, seu nó "pai". 2. Indica-se em todos os nós um distância acumulada igual a "" e o nó pai "-", indicando que nenhum dos nós possui ancetessor ainda. 28_SI_-_PesquisaOperacional_II_-_o27 46

147 Pesquisa Operacional II 8 Atualização: 4/9/28 3. O processo tem início marcando o nó inicial (de partida) como tendo a si mesmo como nó "pai". 4. Dentre os nós que não possuem antecessores (pai = -), deve-se selecionar um em que todos os arcos de chegada estejam ligados a nós com pai. Se todos os nós já possuírem pais, chegou-se ao fim do processo. 5. Selecionado o nó nas condições descritas no passo 4, calcula-se as distâncias até este nó por todos os caminhos (arcos de chegada) possíveis, sendo que esta distância é a soma da distância até o nó origem do arco de chegada, somada ao comprimento do arco. 6. Anota-se na etiqueta do nó selecionado a menor distância obstida nos cálculos do passo 5, e marca-se como "nó pai" em sua etiqueta aquele que foi a origem desta menor distância calculada. 7. Volta ao passo 4. Ou seja, anota-se em cada nó qual o melhor caminho para chegar até ele e qual é o valor da distância acumulada até este ponto, até que todos os nós tenham "o melhor antecessor" indicado. Apesar de simples, uma descrição de algoritmo nem sempre é muito esclarecedora. Na seção seguinte será apresentado um exemplo da aplicação do algoritmo no problema do taxista, com o objetivo de auxiliar na compreensão do algoritmo. 4. RESOLUÇÃO DE UM PROBLEMA. Indicação das etiquetas: O primeiro passo do procedimento será desenhar a rede e desenhar uma pequena etiqueta com 2 posições ao lado de cada nó da rede: uma para indicar o nó pai do nó etiquetado e outra para indicar a distância acumulada até o nó etiquetado. Isso pode ser feito como é mostrado na figura 6. : Figura 6: A rede a ser resolvida com as etiquetas desenhadas. 28_SI_-_PesquisaOperacional_II_-_o27 47

148 Pesquisa Operacional II 9 Atualização: 4/9/28 2. Preenchimento inicial: Em seguida, deve-se preencher as etiquetas com os valores iniciais para cada nó: para o nó inicial, indica-se ele mesmo como pai () e em todos os outros indica-se "sem pai" (-). Indica-se a distância acumulada igual a em todas as etiquetas. O resultado desta etapa pode ser visto na figura 7. : Figura 7: Preenchimento inicial das etiquetas. 3. Cálculo e indicação da primeira etiqueta: Como se pode observar pela figura anterior, o nó recebe ligação do nó (origem) e do nó 2. Como o nó 2 ainda não tem pai (- na etiqueta), não se pode etiquetar o nó ainda. O nó 2, por sua vez, recebe ligação do nó e do nó 3. Como o nó 3 ainda não tem pai, não é possível etiquetar o nó 2 ainda. O nó destino também está totalmente fora de cogitação neste instante, já que depende dos nós, 2 e 3... Nenhum deles ainda calculado. Finalmente, o nó 3 recebe ligação apenas do nó, que já está calculado (tem pai indicado). Desta forma, é possível calcular qual a distância acumulada, que será a distância acumulada em ( km) somada com a distância do caminho de a 3 (22 km). Assim, indica-se na etiqueta do nó 3 que seu novo pai é o nó, e que a distância acumulada até então é 22 km, como pode ser visto na figura 8. : Figura 8: Preenchimento da primeira etiqueta. 28_SI_-_PesquisaOperacional_II_-_o27 48

149 Pesquisa Operacional II Atualização: 4/9/28 4. Cálculo e indicação da segunda etiqueta: Neste passo é possível observar que o nó continua sendo de cálculo inviável, já que o nó 2 (do qual ele depende) continua sem pai indicado. Entretanto, agora já é possível calcular o nó 2: ele depende do nó e do nó 3, e ambos já estão calculados e possuem pais. Mas qual será o nó pai do nó 2, o nó ou o nó 3? A resposta é simples: aquele que gerar uma menor distância acumulada. Considerando o nó como pai, a distância acumulada em ( km) somada com a distância do arco que liga o nó ao nó 2 (5 km) perfaz uma distância total de 5 km. Considerando o nó 3 como pai, a distância acumulada em 3 (22 km) somada com a distância do arco que liga o nó 3 ao nó 2 (2 km), perfaz uma distância total de 24 km. Diante destes valores, a consideração do nó como pai é mais vantajosa, já que 5km é uma distância menor que 24km. Por este motivo, o nó será o eleito como "melhor antecessor". Assim, deve ser indicada na etiqueta do nó 2 que seu "pai" é o nó e que a distância acumulada é 5 km, como pode ser visto na figura 9. : Figura 9: Preenchimento da segunda etiqueta. 5. Cálculo e indicação da terceira etiqueta: Agora restam apenas dois nós a serem calculados (sem pais): o nó e o nó Destino. O nó destino depende de, então está fora de questão no momento. O nó, entretanto, depende do nó e do nó 2, ambos já calculados. Portanto, o nó é o selecionado para esta etapa. Novamente, há duas possibilidades de caminho. Vindo pelo nó, a distância total acumulada será de 25 km ( km + 25 km). Vindo pelo nó 2, entretanto, a distância total acumulada será de 2 km (5 km + 6 km). É natural, portanto, a seleção do nó 2 como pai para o nó, já que 2km é uma distância menor que 25km. 28_SI_-_PesquisaOperacional_II_-_o27 49

150 Pesquisa Operacional II Atualização: 4/9/28 Assim, deve ser indicado na etiqueta do nó que seu "pai" é o nó 2,e a distância acumulada é 2 km, como mostrado na figura. Figura : Preenchimento da terceira etiqueta. 6. Cálculo e indicação da última etiqueta: Só resta agora o cálculo do nó Destino, o qual depende dos nós, 2 e 3, sendo que todos eles já estão devidamente calculados. Há, então, três possibilidades de caminho: - Vindo pelo nó : 2 km + 5 km = 26 km - Vindo pelo nó 2: 5 km + 2 km = 27 km - Vindo pelo nó 3: 22 km + 5 km = 27 km Desta forma, o nó selecionado para nó "pai" do nó Destino é o nó, que deve ser indicado na etiqueta como apresentado na figura. : Figura : Preenchimento da última etiqueta. 7. Indicação do Caminho Mínimo: Pelo resultado do passo anterior, pode-se verificar que o caminho mínimo entre o nó Origem e o nó Destino tem um comprimento de 26 km. Entretanto, ainda não está explícito qual é o caminho que tem esta distância total. 28_SI_-_PesquisaOperacional_II_-_o27 5

151 Pesquisa Operacional II 2 Atualização: 4/9/28 Para identificá-lo, basta observar os valores "pai" das etiquetas, partindo do nó Destino... E este será o caminho mínimo. Pela figura do passo anterior, pode-se identificar o seguinte caminho: D--2-O, o qual está indicado na figura 2, encerrando a solução do problema. Figura 2: Indicação do caminho mínimo. É claro, entretanto, que este caminho está invertido, sendo o caminho da origem para o destino, é O-2--D. 5. ANÁLISE DOS RESULTADOS Conceitos Chave: - De uma origem para todos os destinos - Aproveitamento de cálculos Uma rápida análise dos resultados obtidos indica que, partido da chegada e seguindo em direção sempre do "melhor antecessor" é possível identificar o melhor caminho, tendo o algoritmo realizado seu trabalho com êxito. Entretanto, um outro resultado interessante é obtido de sua aplicação: não apenas o melhor caminho para um único destino foi calculado, mas sim o melhor caminho para qualquer destino, partindo do mesmo nó inicial. Esse é um resultado bastante interessante já que em determinadas situações (como entregas realizadas sempre a partir de uma determinada base) basta uma execução e já serão obtidos todos os resultados necessários. Uma outra observação permite verificar que com uma modificação no algoritmo é possível adicionar novos caminhos e aproveitar cálculos anteriormente realizados. Entretanto, 28_SI_-_PesquisaOperacional_II_-_o27 5

152 Pesquisa Operacional II 3 Atualização: 4/9/28 neste momento não haverá aprofundamento deste tópico, já que nas aulas seguintes será apresentado um algoritmo que resolve este problema automaticamente. 6. EXERCÍCIO. Usando o algoritmo Label Setting, encontre o caminho mínimo entre os pontos: e 3; e ; e 9; e BIBLIOGRAFIA AHUJA, R.K; MAGNANTI, T.L; ORLIN, J.B. Network Flows: Theory, Algorithms and Applications. New Jersey: Prentice Hall, 993. BRADLEY, S. P.; HAX, A. C.; MAGNANTI, T. L. Applied mathematical programming. Reading, Mass.: Addison-Wesley Pub. Co., 977. CHVATAL, V. Linear programming. New York: W. H. Freeman, 983. GALLO, G; PALLOTTINO, S. Shortest path methods in transportation models. (M. Florian, ed.) Transportation Planning Models. North Holland, Elsevier Science Publishers. p , 984. WINSTON, W. L. Operations research: applications and algorithms. S.I.: International Thomson Publishing, _SI_-_PesquisaOperacional_II_-_o27 52

153 Pesquisa Operacional II Atualização: 6/9/28 Unidade 4: O Problema do Caminho Mínimo: Algoritmo Label Correcting Prof. Daniel Caetano Objetivo: Capacitar para a identificação de ciclos em problemas de fluxo em rede e apresentar o algoritmo Label Correcting para a resolução destes problemas. Bibliografia:BRADLEY et al.;ahuja et al.;chvatal; GALLO et al.;winston. INTRODUÇÃO Conceitos Chave: - Problema: reduzir caminho... * Grafo com ciclos - Label Setting => Inadequado - Label Correcting - Identificar existência de ciclos O método de determinação de caminho mínimo chamado "Label Setting" é capaz de resolver um grande número de problemas de caminho mínimo, mas possui uma limitação: não é capaz de resolver problemas que possuam ciclos no grafo. Nesta unidade será apresentado, de forma sistemática o algoritmo "Label Setting" e sua inabilidade de resolver problemas com ciclos. Para a solução deste tipo de problema, será apresentado o algoritmo "Label Correcting".. REVISANDO: "O PROBLEMA DO MOTORISTA DE TAXI" Conceitos Chave: - Levar um passageiro de uma Origem a um Destino - Minimizar distância percorrida - Não se tem informações do próximo passageiro - Ignorar trânsito 28_SI_-_PesquisaOperacional_II_-_o27 53

154 Pesquisa Operacional II 2 Atualização: 6/9/28 - Lógica do Label Setting a) Etiquetar b) Selecionar nó "sem pai" para o qual se conhece todos os caminhos c) Calcular melhor caminho d) Indicar caminho na etiqueta e) Voltar ao passo (b) O problema a ser resolvido pode ser considerado o mesmo apresentado na unidade anterior, o desenvolvimento do software para uma empresa de Taxi, de forma que o cliente pudesse pagar a viagem antes de executá-la. Para isso, é preciso que o sistema saiba qual é o caminho que o taxista irá fazer, o que provavelmente será um "caminho mínimo". Neste problema será transportada apenas uma unidade de carga (o passageiro) e o caminho mínimo a ser encontrado é entre apenas dois pontos. Não haverá a preocupação com eventuais limitações de fluxo em cada arco... Revendo: o Problema Modelado como um Grafo O seguinte modelo (Figura ) havia sido proposto anteriormente para estudo: Figura : "Modelagem gráfica" da rede E, para a solução, foi apresentado o algoritmo do Label Setting..2. Revendo: o Algoritmo Label Setting O algoritmo Label Setting pode ser sistematizado da seguinte forma:. Cria-se uma "etiqueta" em todos os nós, com duas posições: uma para indicar qual a distância acumulada até aquele nó e outra para indicar qual é o nó que o antecede no melhor caminho, ou seja, seu nó "pai". 28_SI_-_PesquisaOperacional_II_-_o27 54

155 Pesquisa Operacional II 3 Atualização: 6/9/28 2. Indica-se em todos os nós um distância acumulada igual a "" e o nó pai "-", indicando que nenhum dos nós possui antecessor ainda. 3. O processo tem início marcando o nó inicial (de partida) como tendo a si mesmo como nó "pai". 4. Dentre os nós que não possuem antecessores (pai = -), deve-se selecionar um em que todos os arcos de chegada estejam ligados a nós com pai. Se todos os nós já possuírem pais, chegou-se ao fim do processo. 5. Selecionado o nó nas condições descritas no passo 4, calcula-se as distâncias até este nó por todos os caminhos (arcos de chegada) possíveis, sendo que esta distância é a soma da distância até o nó origem do arco de chegada, somada ao comprimento do arco. 6. Anota-se na etiqueta do nó selecionado a menor distância obtida nos cálculos do passo 5, e marca-se como "nó pai" em sua etiqueta aquele que foi a origem desta menor distância calculada. 7. Volta ao passo O PROBLEMA DOS CICLOS Conceitos Chave: - Label Setting: Eficiência x Limitação - Verificação de Ciclos: Representação em camadas * Caminhamento sempre descendo nas camadas - Remoção de Ciclos * Perda de otimalidade O algoritmo Label Setting é bastante eficiente. Entretanto, na forma como foi apresentado, ele apresenta uma limitação bastante grande: não permite a resolução de redes que possuam ciclos, uma vez que nestes casos sempre haverá nós cujos cálculos serão interdependentes. Analisando a figura 2, é possível verificar que tal rede possui ciclos e, portanto, não se pode ser aplicado o algoritmo Label Setting. Figura 2: Representação de uma rede com ciclos Uma forma prática para verificar se uma rede contém ou não ciclos é analisar a possibilidade de representá-la em camadas ordenadas, sendo que a movimentação dos arcos 28_SI_-_PesquisaOperacional_II_-_o27 55

156 Pesquisa Operacional II 4 Atualização: 6/9/28 deve sempre ir de uma camada para a seguinte, nunca para a mesma camada ou a camada anterior. A rede do problema resolvido pelo algoritmo Label Setting na seção anterior, por exemplo, pode ser representada em cinco camadas como representado na figura 3. Figura 3: Uma rede sem ciclos representada em camadas É possível notar que não há como representar a rede da figura 2 num formato como este, sendo que inevitavelmente haverá arcos ligando nós de níveis mais altos em direção a nós de níveis mais baixos, evidenciando assim a existência de ciclos. Uma alternativa para contornar o problema dos ciclos pode ser a prévia utilização de um algoritmo de remoção de ciclos e, apenas depois disso, lançar mão da utilização do Label Setting. Entretanto, esta pode não ser uma forma apropriada, já que a eliminação de ciclos pura e simples pode remover arcos que fariam parte da melhor solução e, sendo assim, deteriorando a qualidade da solução do problema. Por esta razão, é necessária uma alternativa ao Label Setting que seja capaz de lidar com o problema dos ciclos, garantindo que a solução ótima seja atingida. Esta é a base da proposta do Label Correcting. 3. O ALGORITMO LABEL CORRECTING Conceitos Chave: - Solução para problemas com ciclos * Modificação na ordem de cálculo e critério de parada - Três dados na etiqueta: nó pai, distância acumulada e necessidade de recálculo. - Lógica: a) Etiquetar b) Selecionar nó que deve ter seus descendentes recalculados (com menor distância acumulada) c) Calcular todos os seus descendentes (marcando suas etiquetas), trocando eventuais etiquetas existentes, se novo caminho for melhor. 28_SI_-_PesquisaOperacional_II_-_o27 56

157 Pesquisa Operacional II 5 Atualização: 6/9/28 d) Marcar etiqueta do nó atual como "sem necessidade de recálculo" e) Voltar ao passo (b) - Permite adição de arcos "em tempo de execução". O algoritmo Label Correcting (GALLO; PALOTINO, 984) foi desenvolvido para lidar com os casos em que o algoritmo Label Setting não se comporta bem, ou seja, aqueles que possuem ciclos. De forma geral, o Label Correcting nada mais é que uma variação do Label Setting, onde foi modificada a ordem de cálculo dos nós e o critério de parada. Sendo assim, a essência do Label Setting permanece, com algumas pequenas variações: - Existe um novo indicador na etiqueta: se o nó não precisa ter seus sucessores recalculados e se ele precisa ter seus sucessores recalculados. - A partir de um nó com antecessor (já etiquetado) e que esteja marcado para ter seus sucessores recalculados, são calculados todos os nós sucessores deste, substituindo a etiqueta anterior do sucessor se o novo caminho até ele for mais eficiente. Estas duas modificações fundamentais alteram todo o mecanismo do Label Setting, transformando-o no que foi chamado de Label Correcting. Uma possível sistematização para o Label Correcting é:. Cria-se uma etiqueta em todos os nós, indicando a distância acumulada "" e "-" como o nó antecessor. Indica-se também em todas as etiquetas que seus sucessores não precisam ser calculados, com o valor "". 2. Marca-se o nó (origem) como sendo antecessor de si próprio, indicando "" em sua etiqueta, distância total acumulada "" e indicando que este nó precisa ter seus sucessores calculados, indicando "" na etiqueta. 3. Dentre todos os nós marcados para que seus sucessores sejam calculados, seleciona-se aquele que tem menor distância acumulada. Se não houver qualquer nó com indicação de recálculo de sucessores, fim do processo. 4. Para o nó selecionado, calcula-se a distância total acumulada para todos os nós sucessores deste, sendo esta distância a soma da distância total acumulada até o nó atual com o comprimento do arco que liga este nó ao referido sucessor. 5. Caso o nó sucessor não tenha ainda sido etiquetado com um antecessor ou ainda que a nova distância seja inferior à anteriormente indicada na etiqueta do sucessor, indica-se no nó sucessor a nova distância acumulada, o novo nó antecessor e também se deve indicar que seus descendentes precisam ser recalculados. 6. Voltar ao passo 3. Embora ligeiramente mais complexo, este algoritmo resolve inclusive casos com ciclos, embora isso signifique um aumento significativo na quantidade de cálculos necessários para a solução do problema. 28_SI_-_PesquisaOperacional_II_-_o27 57

158 Pesquisa Operacional II 6 Atualização: 6/9/28 Uma outra característica positiva deste algoritmo é que ele permite que novos nós e arcos sejam adicionados na rede, aproveitando-se o resultado da rede já calculada. Para tanto, basta marcar todos os nós originais aos quais são ligados novos arcos de saída como sendo necessitando recálculo de seus descendentes. 4. EXEMPLO e 4. Usando o algoritmo Label Correcting, encontrar o caminho mínimo entre os pontos Passo : O primeiro passo para a resolução é indicar as etiquetas: 28_SI_-_PesquisaOperacional_II_-_o27 58

159 Pesquisa Operacional II 7 Atualização: 6/9/28 Passo 2: Realizar as marcações iniciais: o nó é o pai de si mesmo (na parte de cima da etiqueta), com distância acumulada (na parte do meio) e é preciso calcular seus descendentes ( na parte de baixo): Passo 3: Dos nós que possuem descendentes a calcular (apenas o nó, por enquanto), deve-se selecionar aquele que tem a menor distância acumulada: o nó, tem distância acumulada. Assim, o nó será usado para cálculo no próximo passo. Passo 4: A partir do nó selecionado (neste caso, o nó ), calcula-se todos os seus descendentes: 2 e 5: - Nó 2: + 2 = 2 (distância acumulada até + comprimento do arco de a 2) - Nó 5: + 4 = 4 (distância acumulada até + comprimento do arco de a 5) Como os nós descendentes calculados ainda não haviam sido preenchidos, deve-se simplesmente marcar estes valores na etiqueta de cada nó descendente, indicando também seu antecessor ("pai") como sendo o nó. Indica-se ainda que estes 2 nós precisam que seus descendentes sejam calculados (indicando na parte inferior da etiqueta), e que o nó não precisa mais ter seus descendentes calculados (indicando na parte inferior da etiqueta): 28_SI_-_PesquisaOperacional_II_-_o27 59

160 Pesquisa Operacional II 8 Atualização: 6/9/28 Passo 5: Dos nós que possuem descendentes a calcular (2 e 5), selecionar aquele que tem a menor distância acumulada: o nó 2 tem 2 acumulado e o nó 5 tem 4 acumulado. Assim, o nó 2 será usado para cálculo no próximo passo. Passo 6: A partir do nó selecionado (neste caso, o nó 2), calcular todos os seus descendentes: 3 e 6: - Nó 3: 2 + = 3 (distância acumulada até 2 + comprimento do arco de 2 a 3) - Nó 6: = 53 (distância acumulada até 2 + comprimento do arco de 2 a 6) Como os nós descendentes calculados ainda não foram preenchidos, deve-se simplesmente marcar o valor na etiqueta, indicando também seus antecessores ("pais") como sendo o nó 2. Adicionalmente, indica-se que estes nós precisam que seus descendentes sejam calculados (indicando na parte inferior das etiquetas), e que o nó 2 não precisa mais ter seus descendentes calculados (indicando na parte inferior da etiqueta): Passo 7: Dos nós que possuem descendentes a calcular (3, 5 e 6), selecionar aquele que tem a menor distância acumulada: o nó 3 tem 3 acumulado; o nó 5 tem 4 acumulado; e o nó 6 tem 52 acumulado. Assim, o nó 3 será usado para cálculo no próximo passo. Passo 8: A partir do nó selecionado (neste caso, o nó 3), calcula-se todos os seus descendentes: 4, 5 e 6: - Nó 4: = 58 (distância acumulada até 3 + comprimento do arco de 3 a 4) - Nó 5: = 4 (distância acumulada até 3 + comprimento do arco de 3 a 5) - Nó 6: = 52 (distância acumulada até 3 + comprimento do arco de 3 a 6) Como o nó 4 ainda não havia sido calculado, deve-se simplesmente preencher sua etiqueta da mesma maneira que nos passos anteriores: pai (3) na parte de cima, distância acumulada (58) no meio e a necessidade de cálculo dos descendentes () na parte inferior. No caso dos nós 5 e 6, entretanto, já havia etiquetas definidas. Antes de substituí-las, é preciso verificar se o novo caminho até estes nós é melhor do que o anteriormente definido. No nó 5, o valor anterior de distância acumulada era 4, como é possível ver pela etiqueta. Seguindo o novo caminho, o valor acumulado fica 4. Como 4 é menor que 4, o novo caminho é melhor que o antigo. Por esta razão, a etiqueta do nó 5 será corrigida com os valores novos de pai (3), distância acumulada (4) e a necessidade de recálculo de seus descendentes. 28_SI_-_PesquisaOperacional_II_-_o27 6

161 Pesquisa Operacional II 9 Atualização: 6/9/28 No nó 6, o valor anterior de distância acumulada era 52, e seguindo o novo caminho, ele permanece 52. Desta forma, não se mexe na etiqueta, já que o caminho anterior era tão bom quanto o novo. Finalmente, o nó 3 deve ser remarcado indicando que seus descendentes não mais precisam ser recalculados: Passo 9: Dos nós que possuem descendentes a calcular (4, 5 e 6), deve-se selecionar aquele que tem a menor distância acumulada: o nó 4 tem 58 acumulado; o nó 5 tem 4 acumulado; e o nó 6 tem 52 acumulado. Assim, o nó 5 será usado no próximo passo. Passo : A partir do nó selecionado (neste caso, o nó 5), calcular todos os seus descendentes: 2 e 6: - Nó 2: 4 + = 5 - Nó 6: 4 + = 5 Como todos os nós descendentes calculados já foram preenchidos, deve-se verificar se os novos caminhos são melhores que os antigos. No nó 2, a distância acumulada anterior era 2, e pelo novo caminho ela fica 5, sendo claramente uma piora. Este nó fica como estava. No nó 6, a distância acumulada anterior era 52, e a nova é 5. Assim, há uma melhoria, e este nó deve ter sua etiqueta remarcada para pai como nó 2, distância acumulada 5 e indicar que seus descendentes precisam ser recalculados. Adicionalmente deve-se indicar que o nó 5 não precisa mais ter seus descendentes calculados: 28_SI_-_PesquisaOperacional_II_-_o27 6

162 Pesquisa Operacional II Atualização: 6/9/28 Passo : Dos nós que possuem descendentes a calcular (4 e 6), selecionar aquele que tem a menor distância acumulada: o nó 4 tem 58 acumulado; e o nó 6 tem 5 acumulado. Assim, o nó 6 será usado no próximo passo. Passo 2: A partir do nó selecionado (neste caso, o nó 6), calcular todos os seus descendentes: 4: - Nó 4: = 54 O nó 4 já tinha uma etiqueta, com uma distância acumulada de 58, e pelo novo caminho ela se torna 54. Assim, o novo caminho é melhor que o anterior, e a etiqueta do nó 4 deve ser corrigida: 6 (pai), 54 (distância) e (calcular descendentes). O nó 6 deve ser ajustado para indicar que seus descendentes não mais precisam ser calculados (): Passo 3: Sobrou apenas um nó (4) com descendentes a serem calculados, então, o nó 9 será usado no próximo passo. Passo 4: Ocorre que o nó 4 não tem descendentes, então sua etiqueta pode ser corrigida para indicar que seus descendentes não precisam ser calculados. Passo 5: Como não há mais nós com descendentes para calcular, esta é a solução do problema. O caminho mínimos é definido da mesma forma que no label setting: a 4: ou , com distância total _SI_-_PesquisaOperacional_II_-_o27 62

163 Pesquisa Operacional II Atualização: 6/9/28 5. ATIVIDADE. Usando o algoritmo Label Correcting, encontre o caminho mínimo entre os pontos: e 9; e 5; e Usando o algoritmo Label Correcting, encontre o caminho mínimo entre os pontos: e 7; e 6; e BIBLIOGRAFIA AHUJA, R.K; MAGNANTI, T.L; ORLIN, J.B. Network Flows: Theory, Algorithms and Applications. New Jersey: Prentice Hall, 993. BRADLEY, S. P.; HAX, A. C.; MAGNANTI, T. L. Applied mathematical programming. Reading, Mass.: Addison-Wesley Pub. Co., 977. CHVATAL, V. Linear programming. New York: W. H. Freeman, 983. GALLO, G; PALLOTTINO, S. Shortest path methods in transportation models. (M. Florian, ed.) Transportation Planning Models. North Holland, Elsevier Science Publishers. p , 984. WINSTON, W. L. Operations research: applications and algorithms. S.I.: International Thomson Publishing, _SI_-_PesquisaOperacional_II_-_o27 63

164 Pesquisa Operacional II Atualização: 22/9/28 Unidade 5: O Problema do Caminho Mínimo: Algoritmo Network Simplex Prof. Daniel Caetano Objetivo: Capacitar para a identificação de problemas de caminho mínimo não solúveis pelo Label Correcting e introduzir a lógica do processo de solução destes problemas. Bibliografia:BRADLEY et al.;ahuja et al.;winston. INTRODUÇÃO Conceitos Chave: - Problema: múltiplas fontes de carga, múltiplos sorvedouros * Problema mais comum e genérico - Algoritmo Network Simplex (Simplex para Redes) Muitas vezes surgem problemas em que não há apenas uma fonte e um sorvedouro de "carga", como ocorre nas versões do problema do caminho mínimo apresentadas até o momento. Em alguns casos, existem múltiplas fontes e múltiplos sorvedouros (como ocorria no problema do transporte); com efeito, este é o problema mais comum, em termos de transporte, e os vários caminhos mínimos para transporte precisam ser determinados a um tempo só. Nestes casos é utilizado um algoritmo chamado "Network Simplex", cujo mecanismos de cálculo tem muito mais de semelhante com os problemas de caminho mínimo que com o Simplex propriamente dito. Entretanto, a origem deste método de cálculo é o método Simplex e, por esta razão, seu nome é Network Simplex (ou Simplex das Redes).. O NETWORK SIMPLEX Conceitos Chave: - Obtenção de custo mínimo * Diversos caminhos simultâneos (Ps) - Método iterativo 28_SI_-_PesquisaOperacional_II_-_o27 64

165 Pesquisa Operacional II 2 Atualização: 22/9/28 * Início: solução viável * Troca de arcos para Redução de Custo = Sai um arco presente = Entra um não presente - Problema: solução inicial viável! - Algoritmo: a) Solução inicial viável com N- arcos (N é o número de nós) b) P = c) P i = P i- + c i-,i d) Para arcos não presentes na solução: DP j = P i + c ij - P j e) Se todos os DP j, solução ótima f) Se arcos tiveram DP j <, o mais negativo entrará na solução (ciclo). g) Balanceamento da rede h) Remover um dos arcos (voltando a N-) i) Voltar ao passo (c) O método Network Simplex é uma maneira de resolver o problema de fluxo em rede citado anteriormente, baseado na obtenção do custo mínimo para realizar os diversos caminhos dentro da rede (chamados de Ps). Da mesma forma que o Método Simplex, é um método iterativo que, a partir de uma solução viável, avalia qual seria o ganho da substituição de um dos arcos da solução por um dos arcos não presentes na solução. Caso a adição de um (ou mais) arcos resultem em uma solução melhor (redução em um dos Ps), o melhor destes arcos é escolhido e passa a fazer parte da solução, e o arco correspondente da solução anterior passa a não fazer mais parte da nova. A grande dificuldade deste algoritmo, para problemas grandes, reside na necessidade de se iniciar sua aplicação a partir de uma solução viável, que nem sempre pode ser obtida com um baixo esforço computacional... Algoritmo Network Simplex O algoritmo Network Simplex pode ser descrito da seguinte forma: ) Procura-se uma solução com N- arcos que não forme ciclos. N é o número de nós. 2) Calcula-se o P para cada um nós, onde P i = P i- + c i-,i, lembrando que, caso a direção não seja indicada, c ij = -c ji. O P do nó admitido como inicial é sempre considerado igual a zero. 3) Para cada arco (i, j) não presente na solução, calcula-se qual seria o DP j, se tal arco (i, j) estivesse presente na solução: DP j = P i + c ij - P j, lembrando que, caso a direção não seja indicada, c ij = -c ji. 28_SI_-_PesquisaOperacional_II_-_o27 65

166 Pesquisa Operacional II 3 Atualização: 22/9/28 4) Como o objetivo é minimizar o custo do caminho, se nenhum dos DPs for negativo (as trocas de arcos possíveis não melhorarão a solução), o caminho ótimo foi encontrado. Caso contrário, continue com o passo 5. 5) Se algum dos DPs for negativo, isso significa que a solução pode ser melhorada com a substituição do arco que gerou tal DP. 6) Adiciona-se o arco correspondente, criando um ciclo. 7) Realiza-se o balanceamento da rede. 8) Deve-se escolher um dos arcos que fecham o ciclo para sair da solução, voltando a ter N- arcos na solução. 9) Volta ao passo Exemplo de Algusn Passos do Algoritmo Network Simplex Nesta seção será apresentada a aplicação de uma iteração do algoritmo Network Simplex. Para isso, considere a rede da figura abaixo: Como não será feita uma aplicação completa, não importa, neste momento, os custos de cada arco e nem os cálculos dos Ps em si, que são bastante similares ao cálculo dos nós descendentes do método do caminho mínimo. ) Procura-se uma solução com N- arcos (4, neste caso) que não forme ciclos: 2) Calcula-se o P para cada um nós, onde P i = P i- + c i-,i, lembrando que, caso a direção não seja indicada, c ij = -c ji. O P do nó admitido como inicial é sempre considerado igual a zero. 28_SI_-_PesquisaOperacional_II_-_o27 66

167 Pesquisa Operacional II 4 Atualização: 22/9/28 3) Para cada arco (i, j) não presente na solução, calculamos qual seria o DP j, se tal arco (i, j) estivesse presente na solução: DP j = P i + c ij - P j, lembrando que, caso a direção não seja indicada, c ij = -c ji. 4) Como o objetivo é minimizar o custo do caminho, se todos os DPs forem não negativos (as trocas de arcos possíveis não melhorarão a solução), o caminho ótimo foi encontrado. Caso contrário, continua-se com o passo 5. 5) Se algum dos DPs for negativo, isso significa que a solução pode ser melhorada com a substituição do arco que gerou tal DP. Para efeito de demonstração, suponha-se que o arco (4,5) reduziria o custo da solução. O seguinte ciclo seria formado: -4-5/-3-5: 6) Se o objetivo é aumentar o fluxo nos arcos do lado -4-5 do ciclo (uma vez que eles propiciam redução de custo), será necessário diminuir o fluxo dos arcos do lado do caminho A nova configuração fica assim: 7) Como não é possível ter um ter fluxo negativo, o maior valor que h pode assumir é. Assim, a nova solução fica: 28_SI_-_PesquisaOperacional_II_-_o27 67

168 Pesquisa Operacional II 5 Atualização: 22/9/28 8) Agora, basta eliminar um dos arcos desnecessários, para eliminar o ciclo e voltar a ter N- arcos na solução: 9) Volta ao passo BIBLIOGRAFIA AHUJA, R.K; MAGNANTI, T.L; ORLIN, J.B. Network Flows: Theory, Algorithms and Applications. New Jersey: Prentice Hall, 993. BRADLEY, S. P.; HAX, A. C.; MAGNANTI, T. L. Applied mathematical programming. Reading, Mass.: Addison-Wesley Pub. Co., 977. WINSTON, W. L. Operations research: applications and algorithms. S.I.: International Thomson Publishing, _SI_-_PesquisaOperacional_II_-_o27 68

169 Pesquisa Operacional II Atualização: 22/9/28 Unidade 6: Emulação e Simulação Prof. Daniel Caetano Objetivo: Apresentar os conceitos de emulação e simulação, e capacitar para a aplicação e uso do método monte carlo. Bibliografia: MOREIRA. INTRODUÇÃO Conceitos Chave: - Emulação x Simulação - Problema: Número de Guichês x Tamanho da Fila * Solução é adequada? - Métodos Teóricos x Simulação * Método Monte Carlo Embora nem sempre seja muito óbvio, os conceitos de simulação e, em menor escala, de emulação estão presentes na vida da maioria das pessoas. No estudo de pesquisa operacional, o conceito de simulação é bastante importante e, ainda que o conceito de emulação não seja tão relacionado, é importante diferenciá-los. Um problema comum, por exemplo, é verificar se uma solução proposta para um determinado problema está adequada, em casos que envolvem fatores variáveis. É possível determinar com mais ou menos simplicidade o número de guichês necessário para atender uma determinada quantidade de pessoas, mas como se pode determinar o tamanho máximo provável da fila que será formada? É claro que há métodos teóricos possíveis para o cálculo de algumas das situações, mas uma forma mais simples de avaliar tais dados é através do uso de simulação. Assim, nesta unidade serão apresentados os conceitos envolvidos, além de apresentar um método bastante comum de geração de valores para simulação, o chamado Método Monte Carlo. 28_SI_-_PesquisaOperacional_II_-_o27 69

170 Pesquisa Operacional II 2 Atualização: 22/9/28. EMULAÇÃO x SIMULAÇÃO Conceitos Chave: - Emulação => modelo determinístico * Resposta idêntica à do objeto modelado = Impossível diferenciar saídas (real x emulação) = Dadas entradas iguais, as saídas são sempre as mesmas. * Exemplo: emulação de hardware por software - Simulação => modelo determinístico-probabilístico * Mesma probabilidade de resposta à do objeto modelado = Impossível diferenciar as saídas (real x simulação) = Dadas entradas iguais, as saídas possuem a mesma probabilidade. * Determinísico-Probabilístico? = Tiro com uma arma = Direção do vento? Tiro sair pela culatra? = Trajetória em elipse? Antes de introduzir o conceito de Simulação, talvez seja interessante introduzir o conceito de emulação, de forma a evitar qualquer confusão futura. O que é, então, emulação? Pode-se dizer que emulação é a utilização de um modelo determinístico que responde exatamente da mesma maneira que um objeto modelado. Isso significa duas coisas: a) Deve ser impossível diferenciar os resultados obtidos pelo modelo daqueles obtidos a partir do objeto real. b) Dado um conjunto de entradas, as saídas são sempre as mesmas, seja no modelo, seja no objeto real. Assim, é comum falar em "emulação" no contexto de um software reproduzindo a função de um hardware; isso significa que o software é um modelo do hardware que, com as mesmas entradas, produz exatamente as mesmas saídas que o hardware real. Um software que permite executar os programas de um computador (ou videogame) em outro é, portanto, um emulador: dada uma mesma entrada (o programa do computador original real), é gerada exatamente a mesma saída (o programa ou jogo, como é percebido pelo usuário). Figura : Comportamento do objeto real A e de sua emulação 28_SI_-_PesquisaOperacional_II_-_o27 7

171 Pesquisa Operacional II 3 Atualização: 22/9/28 A figura representa exatamente a situação ocorrida na emulação: para uma mesma entrada X, a saída será sempre Y (que é uma função de X), seja no objeto real A, seja em sua emulação. Note que a saída Y ser sempre a mesma para uma entrada X pressupõe que tanto o objeto real quanto a emulação partem do mesmo estado E original, pois as saídas Y dependem de X e do estado em que o objeto se encontrava antes de receber esta entrada. E a simulação? Pode-se dizer que simulação é a utilização de um modelo determinístico-probabilístico que responde resultados com a mesma probabilidade que um objeto modelado. Isso significa duas coisas: a) Deve ser impossível diferenciar os resultados obtidos pelo modelo daqueles obtidos a partir do objeto real. b) Dado um conjunto de entradas, as saídas não serão sempre as mesmas (nem no modelo, nem na realidade). Entretanto, a probabilidade de cada resultado deve ser a mesma para o objeto real e para o modelo. Figura 2: Comportamento do objeto real A e de sua simulação A figura 2 representa a situação ocorrida na simulação: para uma mesma entrada X, as probabilidades Z de cada saída Y serão sempre as mesmas. Note que isso não significa que haverá alguma relação direta entre a entrada X e o valor que será apresentado como saída. Mas por que é dito que o modelo da simulação é determinístico-probabilístico? Bem, probabilístico porque, como visto, ele tem um fator de aleatoriedade envolvido; quanto ao determinístico, é porque é comum que problemas de simulação envolvam também relações determinísticas. Por exemplo, se alguém for simular a distância alcançada pelo tiro de uma espingarda, apesar de alguns fatores probabilísticos poderem ser considerados (a arma não disparar, o tiro sair pela culatra, a direção do vento etc.), fica claro que a trajetória da bala é uma relação determinística descrita pela física. 28_SI_-_PesquisaOperacional_II_-_o27 7

172 Pesquisa Operacional II 4 Atualização: 22/9/28 2. SIMULAÇÃO NA PESQUISA OPERACIONAL Conceitos Chave: - Problema: Determinado um gargalo de operação => Alternativas * Testar alternativas? - Determinístico => Programação Linear - Probabilístico => Programação Estocástica * Mais comum: propostas por especialistas, baseadas em indicadores = Quais os impactos da solução na prática? = Validar por simulação! - Modelo de Simulação Um problema bastante comum na pesquisa operacional envolve determinar o gargalo de uma operação e tentar gerar alternativas de operação de forma a evitar o gargalo e aumentar a eficiência do sistema como um todo. Quando o funcionamento do sistema envolve apenas variáveis determinísticas (cujos valores podem ser impostos ou são fixos e muito bem conhecidos pelo tomador de decisão), muitas vezes é possível gerar um modelo de programação linear ou não-linear e resolver o problema através de um algoritmo computacional de otimização, determinando exatamente como o sistema deve funcionar. Entretanto, algumas vezes isso é muito difícil ou, até mesmo, impossível; as razões para essa dificuldade podem ser várias. Por exemplo, o sistema como um todo pode ser complexo demais para uma modelagem matemática simples; O sistema pode também envolver variáveis probabilísticas, que levam a modelagens matemáticas extremamente complexas e cujos mecanismos de solução são ainda mais complexos. Nestes casos é comum que especialistas proponham soluções com base em indicadores e em sua experiência; entretanto, em muitos casos é conveniente ter uma boa idéia de como o sistema operaria nas novas condições propostas antes de implementar isso na prática. Com essa avaliação prévia seria possível verificar não apenas se a solução proposta realmente é boa, mas também perceber de antemão alguns conflitos que possam surgir seguindo a nova forma de operar. Para poder realizar essa avaliação e verificação, é necessário criar um modelo de simulação e usá-lo para, a partir dos resultados da simulação, inferir sobre o comportamento do sistema real. 28_SI_-_PesquisaOperacional_II_-_o27 72

173 Pesquisa Operacional II 5 Atualização: 22/9/28 3. O MÉTODO MONTE CARLO Conceitos Chave: - Simulação => variáveis probabilísticas * Distribuição de probabilidade = Ex.: Chegadas na fila do cinema x hora de início do filme - Método Monte Carlo * Base: números uniformemente aleatórios (Tabela) * Finalidade: obter um sorteio que obedeça a probabilidade desejada * Exemplo: P() =,; P(2) =,5; P(4) =,25; P(5) =,7; P(6) =,5 = Soma das probabilidades é sempre! = Tabela de Probabilidades Acumuladas = Números seqüenciais = Tabela Prob. Acumulada + Último Número de Cada Seqüência = Tabela Completa: com intervalo = Sorteios Como uma simulação envolve variáveis probabilísticas, é preciso usar algum método para gerar saídas numéricas que obedeçam à alguma distribuição de probabilidade desejada. O Método Monte Carlo é apenas uma das maneiras de se realizar essa tarefa, e é baseado na capacidade de gerar números aleatórios. Estes números podem ser gerados por sorteio, métodos computacionais etc. Nesta disciplina usaremos os valores da tabela. O Método Monte Carlo consiste em transformar números como estes da tabela em valores possíveis de um problema e que tenham uma determinada probabilidade de ocorrer. A título de exemplo da operação, suponhamos que em uma situação real, um sistema responda 6 valores distintos:, 2, 3, 4, 5 e 6. Cada um deles tem uma probabilidade (freqüência de saída) associada: P() =,; P(2) =,5; P(3) =,38; P(4) =,25; P(5) =,7 e P(6) =,5. Repare que a soma das probabilidades de todos os resultados tem que ser,. Se for necessário simular uma seqüência de saídas numéricas deste sistema, é preciso definir uma maneira de encontrar uma seqüência destes 6 números de forma que a probabilidade de cada um deles sair se mantenha. O Monte Carlo será usado para isso e o primeiro passo é definir uma tabela com as probabilidades (freqüências) acumuladas: Valor Probabilidade P. Acumulada,, 2,5,25 3,38,63 4,25,88 5,7,95 6,5, 28_SI_-_PesquisaOperacional_II_-_o27 73

174 Pesquisa Operacional II 6 Atualização: 22/9/28 Agora, é preciso definir valores que serão relacionados ao valor, 5 valores que serão relacionados ao valor 2, 38 valores que serão relacionados ao número 3 e assim por diante. Isso permite que, ao sortear números entre e 99, o valor tem chances em de sair (probabilidade,). Da mesma forma, o número 2 tenha 5 chances em de sair (probabilidade,5), o número 3 tenha 38 chances em de sair (probabilidade,38) e assim por diante. Uma maneira fácil de fazer isso é usar números seqüenciais: Valor Real Valores Sorteados Equivalentes,,2,3,4,5,6,7,8,9 ( valores) 2,,2,3,4,5,6,7,8,9,2,2,22,23,24 (5 valores) 3 25,26,27,28,29,3,3,32,33,34,35,36,37,38,39,4,4,42,43, 44,45,46,47,48,49,5,5,52,53,54,55,56,57,58,59,6,6,62 (38 valores) 4 63,64,65,66,67,68,69,7,7,72,73,74,75,76,77,78,79,8,8 82,83,84,85,86,87 (25 valores) 5 88,89,9,9,92,93,94 (7 valores) 6 95,96,97,98,99 (5 valores) Agora, é possível observar uma relação entre o último valor de cada seqüência com o valor da probabilidade acumulada multiplicada por : Valor Probabilidade P. Acumulada Último valor,, 9 2,5, ,38, ,25, ,7, ,5, 99 Assim, se considerarmos os números seqüenciais, fica fácil encontrá-los a partir da probabilidade acumulada: basta pegar o número da probabilidade desconsiderando a vírgula e subtrair, lembrando que o intervalo seguinte começa no próximo número! Valor Probabilidade P. Acumulada Intervalo,, -9 2,5, ,38, ,25, ,7, ,5, Mas, para que serve isso? Bem, vamos pegar 2 valores da tabela ; neste caso, vamos adotar os números da primeira coluna, de cima para baixo, desprezando a coluna da centena. Os valores estão representados a seguir: 28_SI_-_PesquisaOperacional_II_-_o27 74

175 Pesquisa Operacional II 7 Atualização: 22/9/28 # Valor Valor Agora, vamos converter o "Valor 2" (de dois dígitos) para os valores de a 6, usando para isso os intervalos determinados previamente: Valor Probabilidade P. Acumulada Intervalo,, -9 2,5, ,38, ,25, ,7, ,5, Por exemplo: 4 cai no intervalo do número 3, então ele representa o número 3. 2 cai no intervalo do número, então ele representa o número... e assim por diante. O resultado: # Valor Valor 2 Simulado _SI_-_PesquisaOperacional_II_-_o27 75

176 Pesquisa Operacional II 8 Atualização: 22/9/28 Pela freqüência, é possível calcular a probabilidade de cada número na simulação, dividindo o número de ocorrências do valor pelo número total de ocorrências (2): Valor Ocorrências Prob. Simulação 2 2/2 =, 2 3 3/2 =, /2 =, /2 =,3 5 /2 =, 6 /2 =,5 Comparando com as probabilidades teóricas: Valor Ocorrências Prob. Simulação Prob. Teórica Diferença 2 2/2 =,,, 2 3 3/2 =,5,5, 3 8 8/2 =,4,38 +, /2 =,3,25 +,5 5 /2 =,,7 -,7 6 /2 =,5,5, Como é possível ver, o resultado da simulação foi bem próximo daquele teórico. E é importante ressaltar que, como em qualquer experimento probabilítico, quanto maior o número de resultados, mais próxima as probabilidades dos resultados simulados serão das probabilidades teórica do objeto real simulado. Como é sempre necessário um grande número de "rodadas" para garantir que os resultados da simulação sejam próximos aos do sistema real, é usual que as simulações sejam programadas e resolvidas por computador. Vale notar, entretanto, que o número alto de execuções apenas garante a proximidade dos resultados probabilísticos do modelo com aqueles definidos pela teoria (ou que se esperaria na realidade); um grande número de execuções jamais corrigirá erros conceituais no modelo. 28_SI_-_PesquisaOperacional_II_-_o27 76

177 Pesquisa Operacional II 9 Atualização: 22/9/28 Tabela : Números Aleatórios de 3 dígitos (fonte: UMA APLICAÇÃO DO MÉTODO MONTE CARLO Uma distribuição muito importante na simulação de eventos é a distribuição de Poisson. A distribuição de Poisson é uma distribuição discreta, isto é, que associa probabilidades a um dado número. Na teoria de filas ela é usada para determinar a probabilidade de um certo número de pessoas chegarem num mesmo período de tempo. Assim, será apresentado como exemplo a simulação de chegadas de Poisson através de Monte Carlo, de forma que se possa simular as chegadas em uma fila, por exemplo. 28_SI_-_PesquisaOperacional_II_-_o27 77

178 Pesquisa Operacional II Atualização: 22/9/28 Figura 3: Distribuição de probabilidade de Poisson para diferentes médias (l) 4.. Exercício Exemplo (MOREIRA, 27 - modificado) A chegada de clientes à bilheteria de um teatro obedece a uma distribuição de Poisson, com taxa de,2 cliente por minuto. Executar 3 minutos de simulação, verificando quantos clientes chegam a cada minuto. Solução: Considerando k o número de clientes que chegam por minuto, a distribuição de Poisson nos diz que: P(k) = (l k * e -l ) / k! Se a taxa média de chegadas é,2, isso significa que l =,2 e, lembrando, que e é um número especial que vale 2,783. Podemos reescrever esta expressão da seguinte forma: P(k) = (,2 k * 2,783 -,2 ) / k! Que pode, ainda, ser simplificada da seguinte forma: P(k) = (,2 k *,3) / k! Com essas modificações, fica fácil calcular a probabilidade para cada valor de k, ou seja, para k=, k=, k=2, k=3... lembrando que P(k=) é a probabilidade de nenhuma pessoa chegar em um minuto; P(k=) é a probabilidade de uma única pessoa chegar em um minuto; P(k=2) é a probabilidade de duas pessoas chegarem em um minutos; P(k=3) é a probabilidade de três pessoas chegarem em um minuto... e assim por diante. A tabela a seguir representa os resultados já calculados, com uma faixa de números associada: 28_SI_-_PesquisaOperacional_II_-_o27 78

179 Pesquisa Operacional II Atualização: 22/9/28 k P(k),3,36,22,9,3 Prob. Acum.,3,66,88,97, Faixa Numérica Como é possível observar, a probabilidade cresce de para, e depois decresce bastante rápido. Esse comportamento é esperado, já que a média de chegadas é,2: espera-se que a maior parte dos minutos chegue um número de pessoas próximo de. Agora serão executados "3 minutos", ou seja, 3 "chutes" de quantas pessoas chegam por minuto, para determinar uma taxa de chegadas simulada. Os "chutes" vieram da tabela da aula anterior, da esquerda para a direita, da 3a. linha em diante (para baixo), pegando apenas os dois dígitos da esquerda de cada número: Minuto # Acaso Chegadas Minuto # Acaso Chegadas Sabendo que a soma das chegadas dividida pelo total de minutos nos indica a média de chegadas por hora, podemos calculá-la: 42 / 3 =,4, próximo da média teórica, de, OPCIONAL: Exercício com Duas Variáveis (MOREIRA, 27-modificado): Um certo projeto, com duração de um ano meses e um investimento inicial de R$ 2.,, são conhecidas as distribuições de freqüências da receita e despesa final do ano. Estas distribuições são apresentadas nas tabelas a seguir. Determinar a distribuição de freqüência da relação benefício/custo (quociente do lucro final dividido pelo investimento inicial), tomando como base rodadas de simulação. 28_SI_-_PesquisaOperacional_II_-_o27 79

180 Pesquisa Operacional II 2 Atualização: 22/9/28 Distribuição de Freqüências da Receita: Receita Freq. Estimada Freq. Acumul. 8.,2,2 7.,4,6 6.,25,85 5.,5, Faixa Numérica Distribuição de Freqüências da Despesa: Despesa Freq. Estimada Freq. Acumul. 4.,, 5.,4,5 6.,3,8 7.,2, Faixa Numérica O processo será sortear intercaladamente números para receitas e despesas, preenchendo a tabela a seguir, calculando o lucro final e o coeficiente para cada par receita-despesa. # Acaso Receita # Acaso Despesa Lucro Ben/Custo -,5,5,5 -,5,5 Observando a freqüência de cada resultado, é possível computar a distribuição de probabilidade, sendo que o número de ocorrência de cada resultado dividido pelo total de ocorrências nos fornece a probabilidade daquele resultado, como pode ser visto na tabela abaixo: Benefício/Custo # Ocorrências Freqüência -5 2,2 4,4,5,,,5 2,2 Total, 28_SI_-_PesquisaOperacional_II_-_o27 8

181 Pesquisa Operacional II 3 Atualização: 22/9/28 5. ATIVIDADE Em um determinado dia da semana, chegam a um guichê de pedágio, em média, 2,3 carros por minuto. Admitindo que a chegada de carros ao guichê obedeça a uma distribuição de Poisson, realizar uma simulação abrangendo 2 minutos de operação do guichê, calculando, ao fim a média de chegadas. Analise o resultado, frente à media conhecida fornecida pelo problema. Dica: segundo Poisson, P(k) = (l k * e -l ) / k! 6. BIBLIOGRAFIA MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. Thomson Pioneira, _SI_-_PesquisaOperacional_II_-_o27 8

182 Pesquisa Operacional II Atualização: 22/9/28 Unidade 7: Heurísticas e Meta-Heurísticas Prof. Daniel Caetano Objetivo: Apresentar os conceitos de emulação e simulação, e capacitar para a aplicação do Algoritmo Genético. INTRODUÇÃO Conceitos Chave: - Limitações do Simplex - Complexidade Computacional * Problemas NP-Completos / NP-Hard - Otimizar => Função Objetivo + Restrições * Solução Ótima x Boa Solução Na pesquisa operacional, o objeto de estudo praticamente sempre será a otimização de algum tipo de operação. Relembrando, otimizar significa encontrar a melhor solução possível para um dado problema, onde a "melhor solução" é definida de acordo com o critério da função objetivo e deve respeitar as restrições impostas. Assim, do ponto de vista matemático, a otimização exige métodos de cálculo exatos que garantam a otimalidade da solução, ou seja, que a solução encontrada será a melhor possível. Entretanto, nem sempre é possível encontrar um método que garanta que a solução encontrada é a solução ótima; nestes casos, o cientista da pesquisa operacional precisará encontrar um outro caminho: o caminho das heurísticas.. MÉTODOS HEURÍSTICOS Conceitos Chave: - "chutar com propriedade e conhecimento" - Heurística: método matemático * Conhecimentos sobre o problema => Solução 28_SI_-_PesquisaOperacional_II_-_o27 82

183 Pesquisa Operacional II 2 Atualização: 22/9/28 - Método Heurístico * Similar ao algoritmo de otimização, mas não garante otimalidade - Exemplo da montanha * Ótimo Local x Ótimo Global * Múltiplos ótimos locais * Intensificação x Diversificação = Armazenar solução melhor, ao fim de cada intensificação * Diversificação => Movimentos Aleatórios? * Critério de Parada => "após n diversificações..." * Não há como garantir a otimalidade - Soluções ligadas a problemas específicos. A palavra heurística é uma palavra que é, freqüentemente, traduzida livremente como significando algo como "chutar com propriedade e conhecimento". É claro que esta não é tradução correta, mas representa bem o sentido dos métodos heurísticos. Pode-se definir um método heurístico, mais formalmente, como sendo um método matemático que se utiliza de conhecimentos sobre o problema a ser resolvido para tentar encontrar a melhor solução. Assim, um método heurístico é muito similar a um algoritmo de otimização, com a diferença fundamental que o método heurístico não garante que o resultado final encontrado seja ótimo. Como um exemplo concreto, é possível considerar que uma pessoa queira chegar ao topo de uma montanha, representada na figura. Entretanto, para representar a situação real de um problema onde não se tem a menor idéia de quão perto da melhor solução se está, pode-se considerar que esta pessoa terá de saber se chegou a este topo apenas olhando para baixo. Figura : Sujeito precisa chegar ao topo, mas só pode olhar pra baixo Uma das estratégias que ele pode seguir (heurística) é olhar à sua volta e, enquanto ver uma subida próxima de si, ele sobe. Quando não encontrar mais subidas próximas de si, ele para e, dentro de seu critério, estará no topo. Mas o que acontece se ele seguir este critério no caso da figura acima? 28_SI_-_PesquisaOperacional_II_-_o27 83

184 Pesquisa Operacional II 3 Atualização: 22/9/28 Figura 2: Sujeito no meio da subida (esquerda) e no fim da subida (direita) É possível observar um estado intermediário na figura 2 (esquerda). Neste estado, quando o sujeito olha ao seu redor, vê uma subida logo à sua direita... e continua subindo. Quando ele chegar ao estágio representado na figura 2 (direita), entretanto, ao olhar ao seu redor o sujeito só verá descidas. Neste ponto, então, ele parará, acreditando ter chegado ao topo. Entretanto, como é possível ver na figura, este não é o topo real! Este tipo de problema é sempre uma ameaça, quando se usa heurísticas. É tão comum que existe até uma nomenclatura: às situações que parecem "ótimas" segundo os critérios da heurística, mas não são a melhor solução possível, dá-se o nome de ótimos locais. Ao ótimo real, ou seja, a melhor solução possível, dá-se o nome de ótimo global. Um problema pode ter vários ótimos locais (como em uma cadeia de montanhas!), mas normalmente terá um único ótimo global. Assim, fica claro perceber que a heurística proposta para a subida da montanha não é muito boa: dada uma solução inicial qualquer (sujeito na base da montanha), ela sabe melhorar essa solução até um determinado ponto (sujeito no topo da montanha menor). Este processo em que uma solução é melhorada através de critérios de "observação local" é chamado de intensificação. Entretanto, uma vez que a intensificação conduziu a um ótimo local, a heurística proposta não permite fugir deste ótimo local. Assim, é necessário possibilitar um mecanismo para isso, normalmente chamado de diversificação. Normalmente as heurísticas proporcionam a diversificação através de um movimento que independe de qualquer "indicador" do problema. Por exemplo, no caso da montanha, este critério de diversificação poderia ser: "assim que você chegar a um possível topo, ande um número de metros aleatório para a direita e recomece a intensificação". Se a distância percorrida para a direita não for suficientemente grande, o resultado será que o sujeito voltará para o mesmo ótimo local, como pode ser visto na figura 3. 28_SI_-_PesquisaOperacional_II_-_o27 84

Notas da Aula 01: Introdução à Pesquisa Operacional Prof. Daniel Caetano

Notas da Aula 01: Introdução à Pesquisa Operacional Prof. Daniel Caetano Introdução à Pesquisa Operacional Segundo Semestre de 27 Notas da Aula : Introdução à Pesquisa Operacional Prof. Daniel Caetano Objetivo: Apresentar o que é Pesquisa Operacional e introduzí-la no âmbito

Leia mais

Pesquisa Operacional aplicada ao Planejamento e Controle da Produção e de Materiais Programação Linear

Pesquisa Operacional aplicada ao Planejamento e Controle da Produção e de Materiais Programação Linear Pesquisa Operacional aplicada ao Planejamento e Controle da Produção e de Materiais Programação Linear Introdução à Pesquisa Operacional Origens militares Segunda guerra mundial Aplicada na alocação de

Leia mais

Pesquisa Operacional

Pesquisa Operacional Faculdade de Engenharia - Campus de Guaratinguetá Pesquisa Operacional Fabrício Maciel fabricio@feg.unesp.br Departamento de Produção 1 Programação linear Sumário Modelagem e limitações da Programação

Leia mais

Métodos de Pesquisa Operacional

Métodos de Pesquisa Operacional Métodos de Pesquisa Operacional Programação Linear é a parte da Pesquisa Operacional que trata da modelagem e resolução de problemas formulados com funções lineares. Programação Linear } Métodos de Resolução

Leia mais

Programação Linear M É T O D O S : E S T A T Í S T I C A E M A T E M Á T I C A A P L I C A D A S D e 1 1 d e m a r ç o a 2 9 d e a b r i l d e

Programação Linear M É T O D O S : E S T A T Í S T I C A E M A T E M Á T I C A A P L I C A D A S D e 1 1 d e m a r ç o a 2 9 d e a b r i l d e Programação Linear A otimização é o processo de encontrar a melhor solução (ou solução ótima) para um problema. Existe um conjunto particular de problemas nos quais é decisivo a aplicação de um procedimento

Leia mais

PESQUISA OPERACIONAL. UNIDADE 1 Introdução à Pesquisa Operacional. Prof. Me. Carlos Guimarães

PESQUISA OPERACIONAL. UNIDADE 1 Introdução à Pesquisa Operacional. Prof. Me. Carlos Guimarães PESQUISA OPERACIONAL UNIDADE 1 Introdução à Pesquisa Operacional Prof. Me. Carlos Guimarães Objetivo Introduzir o tema Pesquisa Operacional por meio da apresentação: Da sua origem; Das sociedades profissionais

Leia mais

Problema de Transporte (Redes) Fernando Nogueira Problema de Transporte 1

Problema de Transporte (Redes) Fernando Nogueira Problema de Transporte 1 Problema de Transporte (Redes) Fernando Nogueira Problema de Transporte 1 O Problema de Transporte consiste em determinar o menor custo (ou o maior lucro) em transportar produtos de várias origens para

Leia mais

PESQUISA OPERACIONAL APLICADA A LOGÍSTICA

PESQUISA OPERACIONAL APLICADA A LOGÍSTICA PESQUISA OPERACIONAL APLICADA A LOGÍSTICA Pós-Graduação em Logística e Supply Chain Valdick Sales 1 APRESENTAÇÃO Valdick sales Graduado em Ciência da Computação pela UFPE. Pós-Graduado em Redes e Banco

Leia mais

Programação Linear. (1ª parte) Informática de Gestão Maria do Rosário Matos Bernardo 2016

Programação Linear. (1ª parte) Informática de Gestão Maria do Rosário Matos Bernardo 2016 Programação Linear (1ª parte) Informática de Gestão 61020 Maria do Rosário Matos Bernardo 2016 Conteúdos Introdução O modelo de programação linear: Problema de minimização Exemplo Formalização Problema

Leia mais

CURSO DE LOGÍSTICA INTEGRADA DE PRODUÇÃO. Ferramentas de Apoio à Decisão Prof. Dr. Fabrício Broseghini Barcelos PARTE 01

CURSO DE LOGÍSTICA INTEGRADA DE PRODUÇÃO. Ferramentas de Apoio à Decisão Prof. Dr. Fabrício Broseghini Barcelos PARTE 01 CURSO DE LOGÍSTICA INTEGRADA DE PRODUÇÃO Ferramentas de Apoio à Decisão Prof. Dr. Fabrício Broseghini Barcelos PARTE 01 Tomada de Decisão É o processo de identificar um problema específico e selecionar

Leia mais

Pesquisa Operacional Aula 4 Solução Gráfica em Programação Linear

Pesquisa Operacional Aula 4 Solução Gráfica em Programação Linear Pesquisa Operacional Aula 4 Solução Gráfica em Programação Linear Prof. Marcelo Musci aula@musci.info www.musci.info Aplicável para modelos com 02 variáveis de decisão Útil para a ilustração de alguns

Leia mais

Otimização. Conceitos Fundamentais. Paulo Henrique Ribeiro Gabriel Faculdade de Computação Universidade Federal de Uberlândia 2016/2

Otimização. Conceitos Fundamentais. Paulo Henrique Ribeiro Gabriel Faculdade de Computação Universidade Federal de Uberlândia 2016/2 Otimização Conceitos Fundamentais Paulo Henrique Ribeiro Gabriel phrg@ufu.br Faculdade de Computação Universidade Federal de Uberlândia 2016/2 Paulo H. R. Gabriel (FACOM/UFU) GSI027 2016/2 1 / 30 Agradecimentos

Leia mais

Unidade II PESQUISA OPERACIONAL. Profa. Ana Carolina Bueno

Unidade II PESQUISA OPERACIONAL. Profa. Ana Carolina Bueno Unidade II PESQUISA OPERACIONAL Profa. Ana Carolina Bueno Programação linear É um subitem da programação matemática. É um dos modelos utilizados em pesquisa operacional. Consiste em otimizar (maximizar

Leia mais

PESQUISA OPERACIONAL INTRODUÇÃO À DISCIPLINA HISTÓRICO CARACTERÍSTICAS

PESQUISA OPERACIONAL INTRODUÇÃO À DISCIPLINA HISTÓRICO CARACTERÍSTICAS PESQUISA OPERACIONAL INTRODUÇÃO À DISCIPLINA HISTÓRICO CARACTERÍSTICAS ORIGENS 1938: convocação de cientistas para a análise de situações militares. Segunda Guerra: alocar recursos escassos nas operações

Leia mais

Pesquisa Operacional. Introdução à Pesquisa Operacional Programação Linear

Pesquisa Operacional. Introdução à Pesquisa Operacional Programação Linear Pesquisa Operacional Introdução à Pesquisa Operacional Programação Linear 1 Sumário Modelagem e limitações da Programação Linear. Resolução Gráfica. Forma padrão de um modelo de Programação Linear. Definições

Leia mais

Cap. 2 Pesquisa Operacional na Tomada de Decisão

Cap. 2 Pesquisa Operacional na Tomada de Decisão FACULDADE DE CIÊNCIAS SOCIAIS APLICADAS DO SUL DE MINAS Cap. Pesquisa Operacional na Tomada de Decisão 5/3/00 Prof. Antonio Marcos Goulart. PESQUISA OPERACIONAL NA TOMADA DE DECISÃO Origem da Pesquisa

Leia mais

Programação Linear (PL)

Programação Linear (PL) Programação Linear (PL) Prof. Paulo Cesar F. De Oliveira, BSc, PhD 07/08/15 P C F de Oliveira 2014 1 Características Técnicas mais utilizadas na abordagem de problemas em PO Técnica de solução programável

Leia mais

Programação Linear. MÉTODOS QUANTITATIVOS: ESTATÍSTICA E MATEMÁTICA APLICADAS De 30 de setembro a 13 de novembro de 2011 prof. Lori Viali, Dr.

Programação Linear. MÉTODOS QUANTITATIVOS: ESTATÍSTICA E MATEMÁTICA APLICADAS De 30 de setembro a 13 de novembro de 2011 prof. Lori Viali, Dr. Programação Linear São problemas complexos, muitas vezes de difícil solução e que envolvem significativas reduções de custos, melhorias de tempos de processos, ou uma melhor alocação de recursos em atividades.

Leia mais

Problema de Designação. Fernando Nogueira Problema de Designação 1

Problema de Designação. Fernando Nogueira Problema de Designação 1 Problema de Designação Fernando Nogueira Problema de Designação 1 O Problema de Designação é um caso específico de um Problema de Transporte, que por sua vez é um caso específico de um Problema de Programação

Leia mais

Tópicos Especiais em Computação I

Tópicos Especiais em Computação I Tópicos Especiais em Computação I Pesquisa Operacional Exercícios (Simplex) Prof. Fabio Henrique N. Abe Fabio.henrique.abe@gmail.comd Método Simplex Desenvolvido por George Dantzig em 1947 É um procedimento

Leia mais

Pesquisa Operacional. Introdução à Pesquisa Operacional Programação Linear

Pesquisa Operacional. Introdução à Pesquisa Operacional Programação Linear Pesquisa Operacional Introdução à Pesquisa Operacional Programação Linear 1 Sumário Modelagem e limitações da Programação Linear. Resolução Gráfica. Forma padrão de um modelo de Programação Linear. Definições

Leia mais

Resolvendo algebricamente um PPL

Resolvendo algebricamente um PPL Capítulo 6 Resolvendo algebricamente um PPL 6.1 O método algébrico para solução de um modelo linear A solução de problemas de programação linear com mais de duas variáveis, não pode ser obtida utilizando-se

Leia mais

Escola de Engenharia de Lorena EEL/USP Curso de Engenharia de Produção. Resolução Gráfica. Prof. Fabrício Maciel Gomes

Escola de Engenharia de Lorena EEL/USP Curso de Engenharia de Produção. Resolução Gráfica. Prof. Fabrício Maciel Gomes Escola de Engenharia de Lorena EEL/USP Curso de Engenharia de Produção Resolução Gráfica Prof. Fabrício Maciel Gomes Aplicável para modelos com 02 variáveis de decisão Útil para a ilustração de alguns

Leia mais

Pesquisa Operacional

Pesquisa Operacional Faculdade de Engenharia - Campus de Guaratinguetá Pesquisa Operacional Livro: Introdução à Pesquisa Operacional Capítulo 5 Modelo da Designação Fernando Marins fmarins@feg.unesp.br Departamento de Produção

Leia mais

Investigação Operacional

Investigação Operacional Modelos de Programação Linear (Mestrado) Engenharia Industrial http://dps.uminho.pt/pessoais/zan - Escola de Engenharia Departamento de Produção e Sistemas 1 Modelação Matemática As técnicas e algoritmos

Leia mais

PESQUISA OPERACIONAL I

PESQUISA OPERACIONAL I PESQUISA OPERACIONAL I Professor: Dr. Edwin B. Mitacc Meza edwin.professor@gmail.com www.engenharia-puro.com.br/edwin Objetivos A disciplina busca possibilitar ao Aluno: Fornecer conhecimentos de Pesquisa

Leia mais

Otimização Aplicada à Engenharia de Processos

Otimização Aplicada à Engenharia de Processos Otimização Aplicada à Engenharia de Processos Aula 4: Programação Linear Felipe Campelo http://www.cpdee.ufmg.br/~fcampelo Programa de Pós-Graduação em Engenharia Elétrica Belo Horizonte Março de 2013

Leia mais

Otimização Linear. Profª : Adriana Departamento de Matemática. wwwp.fc.unesp.br/~adriana

Otimização Linear. Profª : Adriana Departamento de Matemática. wwwp.fc.unesp.br/~adriana Otimização Linear Profª : Adriana Departamento de Matemática adriana@fc.unesp.br wwwp.fc.unesp.br/~adriana Forma geral de um problema Em vários problemas que formulamos, obtivemos: Um objetivo de otimização

Leia mais

Otimização Linear Aplicada a Problemas de Planejamento de Produção

Otimização Linear Aplicada a Problemas de Planejamento de Produção Otimização Linear Aplicada a Problemas de Planejamento de Produção Rafaela Schuindt Santos¹, Daniela Renata Cantane² ¹Escola Estadual Luiz Campacci Laranjal Paulista SP - Brasil ²Universidade Estadual

Leia mais

Programação Linear. (2ª parte) Informática de Gestão Maria do Rosário Matos Bernardo 2016

Programação Linear. (2ª parte) Informática de Gestão Maria do Rosário Matos Bernardo 2016 Programação Linear (2ª parte) Informática de Gestão 61020 Maria do Rosário Matos Bernardo 2016 Conteúdos Representação e resolução gráfica dos problemas de programação linear Problema de minimização Problema

Leia mais

Pesquisa Operacional Introdução. Profa. Alessandra Martins Coelho

Pesquisa Operacional Introdução. Profa. Alessandra Martins Coelho Pesquisa Operacional Introdução Profa. Alessandra Martins Coelho julho/2014 Operational Research Pesquisa Operacional - (Investigação operacional, investigación operativa) Termo ligado à invenção do radar

Leia mais

Pesquisa Operacional Aula 3 Modelagem em PL

Pesquisa Operacional Aula 3 Modelagem em PL Pesquisa Operacional Aula 3 Modelagem em PL Prof. Marcelo Musci aula@musci.info www.musci.info Programação Linear Programação Linear: Preocupação em encontrar a melhor solução para problemas associados

Leia mais

Universidade Federal de Goiás Instituto de Matemática e Estatística

Universidade Federal de Goiás Instituto de Matemática e Estatística Universidade Federal de Goiás Instituto de Matemática e Estatística Prova 1 de Pesquisa Operacional Prof.: Fabiano F. T. dos Santos Goiânia, 16 de abril de 2014 Aluno: Nota: Descreva seu raciocínio e desenvolva

Leia mais

Apostila organizada por: Vanderlane Andrade Florindo Silvia Cristina Freitas Batista Carmem Lúcia Vieira Rodrigues Azevedo

Apostila organizada por: Vanderlane Andrade Florindo Silvia Cristina Freitas Batista Carmem Lúcia Vieira Rodrigues Azevedo Instituto Federal Fluminense Campus Campos Centro Programa Tecnologia Comunicação Educação (PTCE) Com esta apostila espera-se levar o aluno a: Apostila organizada por: Vanderlane Andrade Florindo Silvia

Leia mais

Prof. Fabrício Maciel Gomes Departamento de Engenharia Química Escola de Engenharia de Lorena EEL

Prof. Fabrício Maciel Gomes Departamento de Engenharia Química Escola de Engenharia de Lorena EEL Prof. Fabrício Maciel Gomes Departamento de Engenharia Química Escola de Engenharia de Lorena EEL Aplicável para modelos com 02 variáveis de decisão Útil para a ilustração de alguns conceitos básicos utilizados

Leia mais

Métodos e Medidas II

Métodos e Medidas II Métodos e Medidas II Disciplina: 1 Prof. Álvaro José Periotto ajperiotto@uem.br 3. Método Gráfico (conjunto de soluções/ponto ótimo) 1. Entendimento do Enunciado 2 Início Entendimento do Enunciado do P.P.L.

Leia mais

PESQUISA OPERACIONAL -PROGRAMAÇÃO LINEAR MÉTODO SIMPLEX. Prof. Angelo Augusto Frozza, M.Sc.

PESQUISA OPERACIONAL -PROGRAMAÇÃO LINEAR MÉTODO SIMPLEX. Prof. Angelo Augusto Frozza, M.Sc. PESQUISA OPERACIONAL -PROGRAMAÇÃO LINEAR MÉTODO SIMPLEX Prof. Angelo Augusto Frozza, M.Sc. ROTEIRO Esta aula tem por base o Capítulo 3 do livro de Taha (2008): Motivação Conceitos Matemáticos Iniciais

Leia mais

PESQUISA OPERACIONAL 11. SOLUÇÃO ALGEBRICA O MÉTODO SIMPLEX ( ) DEFINIÇÕES REGRAS DE TRANSFORMAÇÃO. Prof. Edson Rovina Página 16

PESQUISA OPERACIONAL 11. SOLUÇÃO ALGEBRICA O MÉTODO SIMPLEX ( ) DEFINIÇÕES REGRAS DE TRANSFORMAÇÃO. Prof. Edson Rovina Página 16 11. SOLUÇÃO ALGEBRICA O MÉTODO SIMPLEX Página 16 Após o problema ter sido modelado, pode-se resolvê-lo de forma algébrica. A solução algébrica é dada pelo método simplex elaborado por Dantzig. Antes da

Leia mais

Combinando inequações lineares

Combinando inequações lineares Combinando inequações lineares A multiplicação por um número > 0 não altera uma inequação 2x x 5 4x 2x 0 2 2 A soma de duas inequações (com o mesmo sentido) produz uma inequação válida x 3x + x 3 2 + 5x

Leia mais

Pesquisa Operacional. Ementa. Prof. Edézio

Pesquisa Operacional. Ementa. Prof. Edézio Ementa Pesquisa Operacional A apresentação da PO Modelos e forma-padrão de PPL Solução gráfica de um PPL O algoritmo Simplex Teoria dos Jogos Livro texto Silva, Ermes Medeiros..et al.l., Pesquisa Operacional,

Leia mais

Combinando inequações lineares

Combinando inequações lineares Combinando inequações lineares A multiplicação por um número > 0 não altera uma inequação 2x x 5 4x 2x 10 1 2 1 2 A soma de duas inequações (com o mesmo sentido) produz uma inequação válida x 3x x 3 1

Leia mais

PROGRAMAÇÃO LINEAR 11º ANO MATEMÁTICA A

PROGRAMAÇÃO LINEAR 11º ANO MATEMÁTICA A PROGRAMAÇÃO LINEAR 11º ANO MATEMÁTICA A Prof.ª: Maria João Mendes Vieira ESC 11MatA 2012/2013 PROGRAMAÇÃO LINEAR A programação linear é uma "ferramenta" matemática que permite encontrar a solução ótima

Leia mais

Unemat Campus de Sinop Curso de Engenharia Elétrica 8º semestre. Disciplina: Introdução à Otimização Linear de Sistemas

Unemat Campus de Sinop Curso de Engenharia Elétrica 8º semestre. Disciplina: Introdução à Otimização Linear de Sistemas Unemat Campus de Sinop Curso de Engenharia Elétrica 8º semestre Disciplina: Introdução à Otimização Linear de Sistemas Slides: Introdução à Pesquisa Operacional - para situar a otimização linear Professora

Leia mais

Marina Andretta. 10 de outubro de Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis.

Marina Andretta. 10 de outubro de Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis. Solução básica viável inicial Marina Andretta ICMC-USP 10 de outubro de 2016 Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis. Marina Andretta (ICMC-USP) sme0211

Leia mais

Material Teórico - Módulo Matrizes e Sistemas Lineares. Sistemas Lineares - Parte 2. Terceiro Ano do Ensino Médio

Material Teórico - Módulo Matrizes e Sistemas Lineares. Sistemas Lineares - Parte 2. Terceiro Ano do Ensino Médio Material Teórico - Módulo Matrizes e Sistemas Lineares Sistemas Lineares - Parte 2 Terceiro Ano do Ensino Médio Autor: Prof Fabrício Siqueira Benevides Revisor: Prof Antonio Caminha M Neto 1 A representação

Leia mais

Programação Linear (PL) Solução algébrica - método simplex

Programação Linear (PL) Solução algébrica - método simplex Universidade Federal de Itajubá Instituto de Engenharia de Produção e Gestão Pesquisa Operacional Simplex Prof. Dr. José Arnaldo Barra Montevechi Programação Linear (PL) Solução algébrica - método simplex

Leia mais

Método Simplex dual. Marina Andretta ICMC-USP. 24 de outubro de 2016

Método Simplex dual. Marina Andretta ICMC-USP. 24 de outubro de 2016 Método Simplex dual Marina Andretta ICMC-USP 24 de outubro de 2016 Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis. Marina Andretta (ICMC-USP) sme0211 - Otimização

Leia mais

Programação Matemática

Programação Matemática Programação Matemática Professoras: Franklina Toledo e Maristela Santos* Instituto de Ciências Matemáticas e de Computação - ICMC Universidade de São Paulo USP *Estes slides foram feitos em colaboração

Leia mais

Aula 07: Análise de sensibilidade (2)

Aula 07: Análise de sensibilidade (2) Aula 07: Análise de sensibilidade (2) Otimização Linear e Inteira Túlio A. M. Toffolo http://www.toffolo.com.br BCC464/PCC174 2018/2 Departamento de Computação UFOP Previously Aulas anteriores: Dualidade

Leia mais

Introdução à Pesquisa Operacional - Otimização Linear

Introdução à Pesquisa Operacional - Otimização Linear Introdução à Pesquisa Operacional - Otimização Linear Professora: Maristela Oliveira dos Santos - mari@icmc.usp.br Auxilio 2009: Victor C.B. Camargo Auxilio 2010 - PAE: Marcos Mansano Furlan - L-1007 Instituto

Leia mais

Programação Linear/Inteira - Aula 5

Programação Linear/Inteira - Aula 5 Unidade de Matemática e Tecnologia - RC/UFG Programação Linear/Inteira - Aula 5 Prof. Thiago Alves de Queiroz Aula 5 Thiago Queiroz (IMTec) Aula 5 Aula 5 1 / 43 Análise de Sensibilidade Estudar o efeito

Leia mais

INVESTIGAÇÃO OPERACIONAL. Programação Linear. Exercícios. Cap. IV Modelo Dual

INVESTIGAÇÃO OPERACIONAL. Programação Linear. Exercícios. Cap. IV Modelo Dual INVESTIGAÇÃO OPERACIONAL Programação Linear Exercícios Cap. IV Modelo Dual António Carlos Morais da Silva Professor de I.O. i Cap. IV - Modelo Dual - Exercícios IV. Modelo Problema Dual 1. Apresente o

Leia mais

INTRODUÇÃO À ENGENHARIA

INTRODUÇÃO À ENGENHARIA INTRODUÇÃO À ENGENHARIA 2015 NOTA AULA PRÁTICA No. 09 - PESQUISA OPERACIONAL PROF. IVO ALVES NOME RA TURMA NOTA Objetivos do experimento: Nesta aula vamos conhecer e estudar de forma preliminar o conceito

Leia mais

Pesquisa Operacional Aula 1 - Introdução

Pesquisa Operacional Aula 1 - Introdução Pesquisa Operacional Aula 1 - Introdução Prof. Marcelo Musci aula@musci.info www.musci.info Plano de Ensino Objetivo Geral Apresentar aos alunos uma introdução aos conceitos, técnicas e aplicação da Pesquisa

Leia mais

BANCO DE EXERCÍCIOS - 24 HORAS

BANCO DE EXERCÍCIOS - 24 HORAS BANCO DE EXERCÍCIOS - HORAS 9º ANO ESPECIALIZADO/CURSO ESCOLAS TÉCNICAS E MILITARES FOLHA Nº GABARITO COMENTADO ) A função será y,5x +, onde y (preço a ser pago) está em função de x (número de quilômetros

Leia mais

Introdução à Programação Linear

Introdução à Programação Linear Introdução à Programação inear Caracterização É um subitem da programação matemática É um dos modelos utilizados em pesquisa operacional. É um modelo de otimização. Tem como objetivo: "Alocar recursos

Leia mais

3 Aprendizado por reforço

3 Aprendizado por reforço 3 Aprendizado por reforço Aprendizado por reforço é um ramo estudado em estatística, psicologia, neurociência e ciência da computação. Atraiu o interesse de pesquisadores ligados a aprendizado de máquina

Leia mais

Aula 07: O Problema do Transporte: Evolução ao Ótimo

Aula 07: O Problema do Transporte: Evolução ao Ótimo Pesquisa Operacional II 1 Aula 7: O Problema do Transporte: Evolução ao Ótimo Prof. Daniel Caetano Objetivo: Apresentar o método de evolução ao ótimo para o Problema do Transporte. Bibliografia: AHUJA

Leia mais

PROGRAMAÇÃO LINEAR E APLICAÇÕES

PROGRAMAÇÃO LINEAR E APLICAÇÕES E APLICAÇÕES Faculdade de Tecnologia de Ourinhos Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Dr. Sidney C. Ferrari Pesquisa Operacional Notas Históricas Os caminhos da PO podem ser traçados

Leia mais

Prof. Denise Benino - UNINOVE

Prof. Denise Benino - UNINOVE Pequisa Operacional - Prof. Denise Benino denise.benino@uninove.br Introdução Pesquisa Operacional A Pesquisa Operacional é uma ciência aplicada voltada para a resolução de problemas reais. Tendo como

Leia mais

Teoria da Computação. Complexidade computacional classes de problemas

Teoria da Computação. Complexidade computacional classes de problemas Teoria da Computação Complexidade computacional classes de problemas 1 Universo de problemas Problemas indecidíveis ou não-computáveis Não admitem algoritmos Problemas intratáveis Não admitem algoritmos

Leia mais

Aula 10: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo

Aula 10: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo Aula 10: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo http://www.toffolo.com.br 2018/2 - PCC174/BCC464 Aula Prática - Laboratório COM30!1 Breve Revisão Modelagem Método gráfico O Algoritmo Simplex

Leia mais

Lista de Exercícios 1 - Otimização Linear Prof. Silvio Alexandre de Araujo. Construção de Modelos e Solução Gráfica

Lista de Exercícios 1 - Otimização Linear Prof. Silvio Alexandre de Araujo. Construção de Modelos e Solução Gráfica Lista de Exercícios 1 - Otimização Linear Prof. Silvio Alexandre de Araujo Construção de Modelos e Solução Gráfica 1) - Estudar Capítulo 1 do livro texto; - Estudar Capítulo 2 do livro texto (seções 2.1,

Leia mais

Escrita correta de resultados em notação

Escrita correta de resultados em notação Notas de Aula Laboratório de Física 1 e A Escrita correta de resultados em notação científica e confecção de gráficos 1 Prof. Alexandre A. C Cotta 1 Departamento de Física, Universidade Federal de Lavras,

Leia mais

Pesquisa Operacional. Introdução à Pesquisa Operacional

Pesquisa Operacional. Introdução à Pesquisa Operacional Pesquisa Operacional Introdução à Pesquisa Operacional 1 PESQUISA OPERACIONAL PO Sumário Origens A natureza O impacto Principais sociedades profissionais ligadas à PO Algumas publicações científicas ligadas

Leia mais

NOTAS DE AULA 1 METAHEURÍSTICA 13/10/2016

NOTAS DE AULA 1 METAHEURÍSTICA 13/10/2016 NOTAS DE AULA 1 METAHEURÍSTICA 13/10/2016 Metaheurística: São técnicas de soluções que gerenciam uma interação entre técnicas de busca local e as estratégias de nível superior para criar um processo de

Leia mais

Programação Matemática - Otimização Linear

Programação Matemática - Otimização Linear Programação Matemática - Otimização Linear Professora: Maristela Oliveira dos Santos Auxilio 2009: Victor C.B. Camargo Auxilio 2010 - PAE: Marcos Mansano Furlan Instituto de Ciências Matemáticas e de Computação

Leia mais

Otimização Combinatória - Parte 4

Otimização Combinatória - Parte 4 Graduação em Matemática Industrial Otimização Combinatória - Parte 4 Prof. Thiago Alves de Queiroz Departamento de Matemática - CAC/UFG 2/2014 Thiago Queiroz (DM) Parte 4 2/2014 1 / 33 Complexidade Computacional

Leia mais

Pesquisa Operacional Introdução. Profa. Alessandra Martins Coelho

Pesquisa Operacional Introdução. Profa. Alessandra Martins Coelho Pesquisa Operacional Introdução Profa. Alessandra Martins Coelho agosto/2013 Operational Research Pesquisa Operacional - (Investigação operacional, investigación operativa) Termo ligado à invenção do radar

Leia mais

Resolução de PL usando o método Simplex

Resolução de PL usando o método Simplex V., V.Lobo, EN / ISEGI, 28 Resolução de PL usando o método Simplex Método Simplex Algoritmo para resolver problemas de programação linear George Dantzig, 947 Muito utilizado Facilmente implementado como

Leia mais

Prof.: Eduardo Uchoa.

Prof.: Eduardo Uchoa. Análise de sensibilidade Prof.: Eduardo Uchoa http://www.logis.uff.br/~uchoa/poi 1 Análise de Sensibilidade Uma vez que já se tenha resolvido um PL, existem técnicas para avaliar como pequenas alterações

Leia mais

Pesquisa Operacional. Prof. José Luiz

Pesquisa Operacional. Prof. José Luiz Pesquisa Operacional Prof. José Luiz Prof. José Luiz Função Linear - Introdução O conceito de função é encontrado em diversos setores da economia, por exemplo, nos valores pagos em um determinado período

Leia mais

MB PRINCÍPIOS DA PESQUISA OPERACIONAL PO INTRODUÇÃO A PESQUISA OPERACIONAL LISTA DE EXERCÍCIOS - PROGRAMAÇÃO LINEAR

MB PRINCÍPIOS DA PESQUISA OPERACIONAL PO INTRODUÇÃO A PESQUISA OPERACIONAL LISTA DE EXERCÍCIOS - PROGRAMAÇÃO LINEAR MB-244 - PRINCÍPIOS DA PESQUISA OPERACIONAL PO-201 - INTRODUÇÃO A PESQUISA OPERACIONAL LISTA DE EXERCÍCIOS - PROGRAMAÇÃO LINEAR 1. Considere o seguinte problema de programação linear: Maximizar Z = x 1

Leia mais

PROGRAMAÇÃO LINEAR 1. A TEORIA DA PROGRAMAÇÃO LINEAR 2. MÉTODO GRÁFICO 3. MÉTODO SIMPLEX 4. ANÁLIDE DE SENSIBILIDADE 5. APLICAÇÕES

PROGRAMAÇÃO LINEAR 1. A TEORIA DA PROGRAMAÇÃO LINEAR 2. MÉTODO GRÁFICO 3. MÉTODO SIMPLEX 4. ANÁLIDE DE SENSIBILIDADE 5. APLICAÇÕES UNIVERSIDADE FEDERAL DA BAHIA - UFBA ESCOLA POLITÉCNICA DEPARTAMENTO DE ENGENHARIA MECÂNICA DEM CURSO DE ENGENHARIA DE PRODUÇÃO PROGRAMAÇÃO LINEAR PESQUISA OPERACIONAL PARTE II 1. A TEORIA DA PROGRAMAÇÃO

Leia mais

Material Teórico - O Plano Cartesiano e Sistemas de Equações. Sistemas de Equações do Primeiro Grau com Duas Incógnitas

Material Teórico - O Plano Cartesiano e Sistemas de Equações. Sistemas de Equações do Primeiro Grau com Duas Incógnitas Material Teórico - O Plano Cartesiano e Sistemas de Equações Sistemas de Equações do Primeiro Grau com Duas Incógnitas Sétimo Ano do Ensino Fundamental Prof Francisco Bruno Holanda Prof Antonio Caminha

Leia mais

PESQUISA OPERACIONAL Introdução. Professor Volmir Wilhelm Professora Mariana Kleina

PESQUISA OPERACIONAL Introdução. Professor Volmir Wilhelm Professora Mariana Kleina PESQUISA OPERACIONAL Introdução Professor Volmir Wilhelm Professora Mariana Kleina PESQUISA OPERACIONAL Ementa Revisão de Álgebra Linear. Modelos de Programação Linear. O Método Simplex. O Problema do

Leia mais

Programação Linear. Rosa Canelas 2010

Programação Linear. Rosa Canelas 2010 Programação Linear Rosa Canelas 2010 Problemas de Optimização São problemas em que se procura a melhor solução (a que dá menor prejuízo, maior lucro, a que é mais eficiente, etc.) Alguns destes problemas

Leia mais

Objetivos. Expressar o vértice da parábola em termos do discriminante e dos

Objetivos. Expressar o vértice da parábola em termos do discriminante e dos MÓDULO 1 - AULA 17 Aula 17 Parábola - aplicações Objetivos Expressar o vértice da parábola em termos do discriminante e dos coeficientes da equação quadrática Expressar as raízes das equações quadráticas

Leia mais

PESQUISA OPERACIONAL II APRESENTAÇÃO E NOÇÕES DE TEORIA DOS GRAFOS

PESQUISA OPERACIONAL II APRESENTAÇÃO E NOÇÕES DE TEORIA DOS GRAFOS PESQUISA OPERACIONAL II APRESENTAÇÃO E NOÇÕES DE TEORIA DOS GRAFOS Prof. Dr. Daniel Caetano 2019-1 Objetivos Conhecer o professor Conhecer o curso Compreender o foco da disciplina Tomar primeiro contato

Leia mais

Pesquisa Operacional aula 3 Modelagem PL. Profa. Alessandra Martins Coelho

Pesquisa Operacional aula 3 Modelagem PL. Profa. Alessandra Martins Coelho Pesquisa Operacional aula 3 Modelagem PL Profa. Alessandra Martins Coelho agosto/2013 Exercício Considerando que x j representa as variáveis de decisão, classificar os problemas a seguir em uma das categorias:

Leia mais

Programação Linear. Gabriel Ferreira Gabriel Tutia Gabriel Yida Thiago Ferraz

Programação Linear. Gabriel Ferreira Gabriel Tutia Gabriel Yida Thiago Ferraz Programação Linear Gabriel Ferreira 8989404 Gabriel Tutia 8989085 Gabriel Yida 8989432 Thiago Ferraz 8989001 O que é? É um caso especial de programação matemática ou otimização matemática Método para encontrar

Leia mais

PESQUISA OPERACIONAL. Fabiano F. T. dos Santos. Instituto de Matemática e Estatística

PESQUISA OPERACIONAL. Fabiano F. T. dos Santos. Instituto de Matemática e Estatística PESQUISA OPERACIONAL Fabiano F. T. dos Santos Instituto de Matemática e Estatística Dualidade em Programação Linear Todo problema de programação linear, que chamaremos de primal, traz consigo um segundo

Leia mais

Investigação Operacional

Investigação Operacional Investigação Operacional Programação Linear Licenciatura em Engenharia Civil Licenciatura em Engenharia do Território Problema Uma firma fabrica dois produtos P e P em três máquinas M, M e M. P é processado

Leia mais

Otimização Linear. Profª : Adriana Departamento de Matemática. wwwp.fc.unesp.br/~adriana

Otimização Linear. Profª : Adriana Departamento de Matemática. wwwp.fc.unesp.br/~adriana Otimização Linear Profª : Adriana Departamento de Matemática adriana@fc.unesp.br wwwp.fc.unesp.br/~adriana Revisão Método Simplex Solução básica factível: xˆ xˆ, xˆ N em que xˆ N 0 1 xˆ b 0 Solução geral

Leia mais

Aula 08: Modelagem Otimização Linear e Inteira Túlio A. M. Toffolo

Aula 08: Modelagem Otimização Linear e Inteira Túlio A. M. Toffolo Aula 08: Modelagem Otimização Linear e Inteira Túlio A. M. Toffolo http://www.toffolo.com.br BCC464/PCC174 2018/2 Departamento de Computação UFOP Previously... Aulas anteriores: Modelagem (básico) Método

Leia mais

Material Teórico - Inequações Produto e Quociente de Primeiro Grau. Sistemas de inequações. Primeiro Ano do Ensino Médio

Material Teórico - Inequações Produto e Quociente de Primeiro Grau. Sistemas de inequações. Primeiro Ano do Ensino Médio Material Teórico - Inequações Produto e Quociente de Primeiro Grau Sistemas de inequações Primeiro Ano do Ensino Médio Autor: Prof. Fabrício Siqueira Benevides Revisor: Prof. Antonio Caminha M. Neto 5

Leia mais

UTILIZAÇÃO DE PROGRAMAÇÃO LINEAR EM UMA MICROEMPRESA DE USINAGEM

UTILIZAÇÃO DE PROGRAMAÇÃO LINEAR EM UMA MICROEMPRESA DE USINAGEM UTILIZAÇÃO DE PROGRAMAÇÃO LINEAR EM UMA MICROEMPRESA DE USINAGEM Tiago Bruno Ribeiro 1, Paulo André de Oliveira 2 1 FATEC,Botucatu,São Paulo, Brasil. E-mail tiaggo.bruno@hotmail.com 2 FATEC,Botucatu,São

Leia mais

TP052-PESQUISA OPERACIONAL I Introdução. Prof. Volmir Wilhelm Curitiba, Paraná, Brasil

TP052-PESQUISA OPERACIONAL I Introdução. Prof. Volmir Wilhelm Curitiba, Paraná, Brasil TP052-PESQUISA OPERACIONAL I Introdução Prof. Volmir Wilhelm Curitiba, Paraná, Brasil TP052-PESQUISA OPERACIONAL I Ementa Revisão de Álgebra Linear. Modelos de Programação Linear. O Método Simplex. O Problema

Leia mais

Exemplo: Maximização de lucros em uma chocolateria que produz os seguintes produtos: (1) Chocolate Pyramide (2) Chocolate Pyramide Nuit

Exemplo: Maximização de lucros em uma chocolateria que produz os seguintes produtos: (1) Chocolate Pyramide (2) Chocolate Pyramide Nuit Universidade Tecnológica Federal do Paraná Professor Murilo V. G. da Silva Notas de aula Estrutura de Dados 2 (Aula 09) Conteúdos da Aula: [DPV06 7.1, 7.2, 7.3] [Observação: Estas notas de aula são apenas

Leia mais

Unidade: Modelo Simplex e Modelo Dual. Unidade I:

Unidade: Modelo Simplex e Modelo Dual. Unidade I: Unidade: Modelo Simplex e Modelo Dual Unidade I: 0 Unidade: Modelo Simplex e Modelo Dual Segundo Wikipédia (2008), em teoria da otimização matemática, o algoritmo simplex de George Dantiz é uma técnica

Leia mais

Programação Linear/Inteira

Programação Linear/Inteira Unidade de Matemática e Tecnologia - RC/UFG Programação Linear/Inteira Prof. Thiago Alves de Queiroz Aula 2 Thiago Queiroz (IMTec) Aula 2 Aula 2 1 / 46 Hipóteses de Linearidade Existem algumas hipóteses

Leia mais

No exemplo há duas variáveis básicas: ST e LX. Serão agora representadas, em um gráfico bidirecional, tanto as restrições como a função objetivo.

No exemplo há duas variáveis básicas: ST e LX. Serão agora representadas, em um gráfico bidirecional, tanto as restrições como a função objetivo. RESOLUÇÃO PELO MÉTODO GRÁFICO No exemplo há duas variáveis básicas: ST e. Serão agora representadas, em um gráfico bidirecional, tanto as restrições como a função objetivo. O modelo é: Maximizar: Sujeito

Leia mais

Modelagem Matemática de Problemas de Programação Linear

Modelagem Matemática de Problemas de Programação Linear Capítulo 1 Modelagem Matemática de Problemas de Programação Linear 1.1. Introdução Neste Capítulo analisamos brevemente a estratégia usada para encontrar a modelagem matemática de um problema de programação

Leia mais

Universidade da Beira Interior Departamento de Matemática. Ficha de exercícios nº3: Dualidade. Interpretação Económica.

Universidade da Beira Interior Departamento de Matemática. Ficha de exercícios nº3: Dualidade. Interpretação Económica. Ano lectivo: 2008/2009; Universidade da Beira Interior Departamento de Matemática INVESTIGAÇÃO OPERACIONAL Ficha de exercícios nº3: Dualidade. Interpretação Económica. Cursos: Economia 1. Formule o problema

Leia mais

Pesquisa Operacional. Prof. José Luiz

Pesquisa Operacional. Prof. José Luiz Pesquisa Operacional Prof. José Luiz Resolver um problema de Programação Linear significa basicamente resolver sistemas de equações lineares; Esse procedimento, apesar de correto, é bastante trabalhoso,

Leia mais

Método Simplex V 1.1, V.Lobo, EN / ISEGI, 2008

Método Simplex V 1.1, V.Lobo, EN / ISEGI, 2008 .,.Lobo, EN / ISEGI, 8 Método Simplex Resolução de PL usando o método Simplex Algoritmo para resolver problemas de programação linear George Dantzig, 97 Muito utilizado Facilmente implementado como programa

Leia mais

Matemática Aplicada Nt Notas de aula

Matemática Aplicada Nt Notas de aula Matemática Aplicada Nt Notas de aula Problema de transporte e designação Problema de transporte: motivação origem 1 destino 1 origem 2 destino 2 destino 3 Caracterização geral Dados: A estrutura de fontes

Leia mais

Simplex. Investigação Operacional José António Oliveira Simplex

Simplex. Investigação Operacional José António Oliveira Simplex 18 Considere um problema de maximização de lucro relacionado com duas actividades e três recursos. Na tabela seguinte são dados os consumos unitários de cada recurso (A, B e C) por actividade (1 e 2),

Leia mais

Investigação Operacional E-FÓLIO A. Ano lectivo 2015/2016. Proposta de Resolução

Investigação Operacional E-FÓLIO A. Ano lectivo 2015/2016. Proposta de Resolução Investigação Operacional - 07 E-FÓLIO A Ano lectivo 0/0 Proposta de Resolução. Variáveis: Sejam percentagem de M / Kg de mistura percentagem de M / Kg de mistura percentagem de M / Kg de mistura Tomando

Leia mais