pesquisa operacional 1 - caetano.eng.br

203
Unidade 1: Introdução à Modelagem Matemática Tópicos 1 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, 2006. - ARENALES, M; ARMENTANO, V; MORABITO, R; YANASSE, H. Pesquisa Operacional. Rio de Janeiro: Editora Campus, 2006 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 Pesquisa Operacional 1 Atualização: 22/02/2008 2008_SI_-_PesquisaOperacional_I_-_o2007 1

Upload: others

Post on 16-Oct-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pesquisa Operacional 1 - caetano.eng.br

Unidade 1: Introdução à Modelagem MatemáticaTópicos 1 e 2: Introdução à Pesquisa Operacional

Prof. Daniel Caetano

Objetivo: Apresentar o que é Pesquisa Operacional e introduzí-la no âmbito dosSistemas de Informação.

Bibliografia: - MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. São Paulo: Ed.

Thomson-Pioneira, 2006.- ARENALES, M; ARMENTANO, V; MORABITO, R; YANASSE, H. Pesquisa

Operacional. Rio de Janeiro: Editora Campus, 2006

Introdução

Embora o termo Pesquisa Operacional seja um termo novo para a maioria dos alunosdo curso de graduação, a maioria das pessoas já "aplicou" Pesquisa Operacional em suasvidas, embora não de uma forma explícita ou exata.

Qualquer pessoa que se desloque por uma cidade qualquer, seja a pé, de transportepúblico ou privado, já fez o cálculo mental para identificar o menor caminho para ir de umdeterminado ponto ao outro da cidade. O objetivo deste "cálculo mental" foi o de minimizar adistância percorrida, ou minimizar o tempo gasto, ou minimizar o combustível consumido, ouainda 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 deresolver este problema ou realizar esta atividade de maneira a maximizar um ganho ouminimizar 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 aatividades, 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 ascartas do correio o mais rápido possível e com o mínimo de carteiros ou ainda definir quais asrotas que os caminhões devem seguir, pelo país todo, para entregar refrigerante consumindo omínimo de recursos. Pelo seu tamanho e número de possibilidades, torna-se impossívelresolver estes problemas manualmente e, freqüentemente as empresas contratam equipes paraproduzir sistemas de informação que lhes calcule tais resultados.

Resumidamente, a Pesquisa Operacional é área do conhecimento que estudaproblemas de como melhorar a condução e coordenação de algumas operações dentro de umaorganização. Em outras palavras, Pesquisa Operacional (ou PO) é a aplicação de métodos

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

2008_SI_-_PesquisaOperacional_I_-_o2007 1

Page 2: Pesquisa Operacional 1 - caetano.eng.br

analíticos para auxiliar os executivos a tomar melhores decisões. Tanto quanto possível, a PObusca 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 deoperação que nos permite o melhor desempenho possível. Em outras palavras, se vamostransportar carga e podemos fazer isso de diversas formas, otimizar é determinar todos ascaracterísticas do transporte que nos trará um menor custo ou tempo, por exemplo. Da mesmaforma, 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, otimizarsignifica determinar o modo de transmissão e o caminho da transmissão de forma que acomunicação seja o mais rápida possível.

1. Breve Histórico da Pesquisa Operacional

O início da Pesquisa Operacional data do início do século XX, tendo o termo PesquisaOperacional sido cunhado no fim da década de 1930, para descrever a atuação de cientistas naanálise de problemas militares.

Seu uso foi muito mais intenso na Segunda Guerra Mundial, devido à necessidade dealocar com urgência e da melhor forma possível diversos recursos escassos como munição ealimento.

Terminadas as grandes guerras, os conhecimentos adquiridos acabaram por serestendidos para organizações civis, e o uso da Pesquisa Operacional cresceu muito atémeados da década de 1970. Nas guerras mais recentes, como as do Iraque, também a PesquisaOperacional se motrou presente nas estratégias de ocupação e ataque.

Figura 1 - Avanço das tropas americanas no Iraque (fonte: Reuters)

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

2008_SI_-_PesquisaOperacional_I_-_o2007 2

Page 3: Pesquisa Operacional 1 - caetano.eng.br

Ainda na época da Segunda Guerra, surgiram sociedades profissionais de cientistas daárea de Pesquisa Operacional. Uma delas é a Operational Research Society ( http://www.orsoc.org.uk ) e outra é o Institute for Operations Reasearch and the ManagementSciences - Informs ( http://www.informs.org/ ). No Brasil existe a Sociedade Brasileira dePesquisa Operacional - Sobrapo ( http://www.sobrapo.org.br/ ).

2. Conteúdo do Curso (Módulo 1)

O processo todo de solução de um problema por PO pode ser sintetizado em algunspassos:

1) Definição da situação problema, ou seja, determinar quais são os objetivosdesejados, quais são as restrições às soluções, quanto tempo existe para que o problema sejaresolvido... e assim por diante. Neste passo informações genéricas e dispersas precisam sertransformadas em informações estruturadas e precisas.

2) Formulação de um modelo quantitativo, ou seja, formalizar todas as informaçõesestruturadas no passo anterior em termos matemáticos, representando as relações entrevariáveis dos problemas através de símbolos matemáticos. Na Programação Linear, uma dasté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 seobtenha 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 chamadasvariáveis de decisão.

4) Consideração de Fatores Imponderáveis, ou seja, analisar a solução encontrada everificar se ela precisa ser modificada para incorporar fatores externos que não tenham sidoconsiderados no modelo matemático.

5) Implementação da solução, ou seja, constatado que a solução é possível naprática, parte-se para a implementação, que deve ter sido projetada para uma transição o maissuave possível.

Neste curso, serão apresentados alguns problemas clássicos de PO e seus modelosdecorrentes, apresentando uma introdução aos 3 primeiros destes passos, ficando umaprofundamento a cargo do aluno. Os passos 4 e 5 são deixados para um curso de pósgraduação.

Apesar da ênfase às modelagens e aos métodos analíticos de solução, isso não deveocultar, de forma alguma, o objetivo fundamental de se estudar Pesquisa Operacional, que é ode encontrar as melhors soluções possíveis para problemas práticos.

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

2008_SI_-_PesquisaOperacional_I_-_o2007 3

Page 4: Pesquisa Operacional 1 - caetano.eng.br

2.1. Etapa 1 - Elaboração de Modelos Matemáticos

Como dito anteriormente, na Pesquisa Operacional buscamos a configuração ótima deum sistema. Entretanto, este ótimo só pode ser obtido a partir de um modelo matemático e, seo modelo não for corretamente desenvolvido, a solução encontrada pode não ser viável narealidade. Quanto melhor o modelo matemático, menor é a chance da solução ótima serinviável na prática.

Por esta razão, pelo fato de a modelagem ser a parte que requer maior raciocínio e porser a única etapa da resolução de um problema de PO que não pode ser feita com o auxílio deum computador, este curso dará uma grande ênfase na modelagem matemática. Trataremosapenas de problemas lineares.

2.2. Etapa 2 - Método Simplex

O Método Simplex é a forma mais geral de se resolver um problema de ProgramaçãoLinear, que são os problemas mais clássicos e básicos da Pesquisa Operacional. O MétodoSimplex consiste de uma seqüência de operações sistemáticas que, após o número suficientede 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 aindaser "Quantas unidades de cada tipo de produto eu produzo para maior lucro?" ou "Quaisseriam os cardápios não repetidos que satisfariam todas as necessidades diárias de nutrientese agradassem ao meu paladar?" e uma infinidade de outros.

2.3. Etapa 3 - O Algoritmo Húngaro

Como será possível observar pelo método, em alguns tipos de problemas (grandes) ométodo Simplex pode ter desempenho pouco satisfatório; Isso ocorre porque o Simplex é ummétodo genérico, que não tira proveito de nenhuma característica específica de um dado tipode 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ãopropostas metodologias de cálculo específicas para encontrar uma solução ótima maisrapidamente.

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 umproblema de atribuição de equipes diferentes a projetos distintos, para minimizar o tempototal de conclusão dos projetos (horas pagas).

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

2008_SI_-_PesquisaOperacional_I_-_o2007 4

Page 5: Pesquisa Operacional 1 - caetano.eng.br

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 deexecução das aplicações deve decidir qual é o outro computador que irá processar umainformação ou executar um dado software. Como cada equipamento pode ter recursosdistintos (velocidade de processamento, memória, dispositivos, etc), trata-se de um problemade 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 oumais (Dual Core, como Core2 Duo, Athlon X2, etc) e isso traz uma tarefa ao SistemaOperacional, 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 quala 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, 2006

MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. São Paulo: Ed.Thomson-Pioneira, 2006.

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

2008_SI_-_PesquisaOperacional_I_-_o2007 5

Page 6: Pesquisa Operacional 1 - caetano.eng.br

Unidade 1: Introdução à Modelagem MatemáticaTó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, 2007.

Introdução

Como visto na aula anteior, a solução de problemas de Pesquisa Operacional, emespecífico os problemas da Programação Linear, podem ser resolvidos por um processo quepode ser sintetizado da seguinte forma:

1) Definição da situação problema, ou seja, determinar quais são os objetivosdesejados, quais são as restrições às soluções, quanto tempo existe para que o problema sejaresolvido... e assim por diante. Neste passo informações genéricas e dispersas precisam sertransformadas em informações estruturadas e precisas.

2) Formulação de um modelo quantitativo, ou seja, formalizar todas as informaçõesestruturadas no passo anterior em termos matemáticos, representando as relações entrevariáveis dos problemas através de símbolos matemáticos. Na Programação Linear, uma dasté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 seobtenha 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 chamadasvariáveis de decisão.

4) Consideração de Fatores Imponderáveis, ou seja, analisar a solução encontrada everificar se ela precisa ser modificada para incorporar fatores externos que não tenham sidoconsiderados no modelo matemático.

5) Implementação da solução, ou seja, constatado que a solução é possível naprática, parte-se para a implementação, que deve ter sido projetada para uma transição o maissuave possível.

Nestas aulas e nas seguintes serão focados os passos 1 e 2.

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

2008_SI_-_PesquisaOperacional_I_-_o2007 6

Page 7: Pesquisa Operacional 1 - caetano.eng.br

1. 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 damatemática e, portanto, existe a necessidade de transformar um problema real em um modelomatemático teórico que possa ser resolvido.

A solução ótima do modelo matemático teórico será aplicável à realidade se esomente se o modelo matemático descrever adequadamente o problema real. Se o modelomatemático não descrever o problema corretamente, haverá grandes chances de que a soluçãoencontrada não seja possível na realidade ou, mais freqüentemente, que ela não seja, de fato, amelhor solução.

Por esta razão, a modelagem matemática tem uma grande importância no contexto daPesquisa Operacional e seu aprendizado é baseado na prática. Neste curso serão apresentadosproblemas 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ãopode, de forma alguma, ocultar o objetivo fundamental de se estudar PO, que é o de descobrirsoluções para problemas práticos.

1.1. Modelagem Matemática para Programação Linear

Os modelos matemáticos mais populares são aqueles, provavelmente, denominadosModelos de Programação Linear. Estes modelos servem para representar problemas em que arelação entre as variáveis destes problemas possam ser expressas na forma de equações ouinequações lineares. As características fundamentais de um modelo deste tipo são:

1) 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. Aesta combinação de variáveis dá-se o nome de função objetivo. Por exemplo: 7x + 2y, onde xe y são variáveis de interesse. As variáveis que aparecem na função objetivo são as chamadasvariáveis de decisão.

2) A estrutura do problema é tal que existe uma limitação de recursos, não sendopossível ter um lucro tão grande quanto se queira nem um custo tão pequeno quanto sequeira. Estas limitações de recursos são expressas como equações ou inequações matemáticase são chamadas restrições.

Assim, sempre que existir um problema em que se deseja definir qual é a melhorconfiguração de operação, ou seja, aquela que traz maior lucro ou reduz os custos, e forpossí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.

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

2008_SI_-_PesquisaOperacional_I_-_o2007 7

Page 8: Pesquisa Operacional 1 - caetano.eng.br

1.2. Primeiro Exemplo de Modelagem

A primeira modelagem que será vista é absolutamente simples, não representadosequer 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 70 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:

3.570Tamanho PeçaTamanho Esteira

Passo 1: 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 naesteira", 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 tornarisso claro matematicamente, é preciso indicar as restrições, que nada mais são que aslimitaçõ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íveldizer que o comprimento total das peças colocadas em fila não deve ser maior que 70 metros(que é o tamanho da esteira). É possível indicar isto da seguinte forma:

Comprimento Total das Peças ü 70

Ou, abreviadamente:

CTP ü 70

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

2008_SI_-_PesquisaOperacional_I_-_o2007 8

Page 9: Pesquisa Operacional 1 - caetano.eng.br

Entretanto, CTP é um valor que precisa estar relacionado com x, que representa onúmero de peças. É necessário encontrar esta relação, e neste caso isso é possível. Oraciocínio é bastante simples. Como cada peça mede 3,5 metros, pode-se escrever umaequação que diga "o comprimento total de x peças" que, em outras palavras, será exatamenteo CTP. Obter essa equação é fácil. Observe:

- Se tivermos 1 peça, o comprimento total será 1 * 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...

CTP = 3,5 * x

Como se sabe que CTP ü 70, é possível escrever:

3,5*x ü 70

E esta é a restrição do problema. Assim, é possível apresentar este modelo matemáticocompleto da seguinte forma:

F.O.: [MAX] xS.A.: 3,5*x ü 70

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 quecomeçam as restrições (que podem ser várias).

Uma vez que o modelo matemático esteja feito, o passo seguinte é encontrar suasolução. Para a maioria dos problemas, a solução não é simples. Mas para um problema tãopequeno, é possível encontrá-la apenas por inspeção. Qual é o valor máximo que x podereceber e que a restrição apresentada não será ferida? Pense!

1.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, é importanteressaltar a diferença entre Parâmetros e Variáveis de Decisão. Parâmetros são valores quesão fornecidos e nos quais não se pode mexer; devem permanecer como estão. Variáveis dedecisão são valores que podem ser alterados e, em geral, são valores que se deseja

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

2008_SI_-_PesquisaOperacional_I_-_o2007 9

Page 10: Pesquisa Operacional 1 - caetano.eng.br

determinar. As variáveis de decisão normalmente são expressas algebricamente, como x1, x2,x3... 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 devariável. Por exemplo: pode-se dizer que x é uma variável que indica quanto combustível foiabastecido e o índice indica em que posto este abastecimento ocorreu.

Assim, segundo o exemplo acima, é possível dizer que x1 é a quantidade decombustível que foi abastecida no posto 1, x2 é a quantidade que foi abastecida no posto 2, x3

é a quantidade que foi abastecida no posto 3... e assim por diante. É importante ressaltar queos índices têm um papel importante na especificação do modelo e não há um significadopré-definido para os mesmos. É tarefa do pesquisador descrever o que os índices significam.

1.4. Uma Modelagem mais Completa?

Observando o exemplo acima, uma relação direta pode ser feita com o problemaclássico de minimizar o gasto com combustível em uma dada viagem. Considere que ocaminho a percorrer consome em torno de 50 litros de combustível e na estrada existem trêspostos de combustível: p1, p2 e p3. Adicionalmente, é sabido que cada um dos postos tem umcusto (preço) de combustível diferente: c1, c2 e c3. O que se deseja saber então é:

Quanto se deve abastecer no posto 1 (p1), quanto no posto 2 (p2) e quanto no posto 3(p3) para gastar o mínimo possível? Bem, se o desejo é saber quanto será abastecido em cadaposto, é porque pretende-se tomar uma decisão que envolve estes valores. Por esta razãoestas são chamadas de variávies de decisão. Seguindo a definição feita anteriormente, emque x é uma variável que indica quanto combustível foi abastecido e o índice indica em queposto este abastecimento ocorreu, é possível dizer que x1 indica o quanto será abastecido noposto 1, x2 indica o quanto será abastecido no posto 2 e x3 indica o quanto será abastecido noposto 3.

Assim, x1, x2 e x3 são as variáveis de decisão deste problema e os valores de x1, x2 e x3

vão expressar o número de litros de combustível abastecido em cada posto. Se não houver anecessidade de abastecer em um dado posto, a variável de decisão que se refere à quantida decombustível abastecida naquele posto terá valor igual a zero. Por exemplo: se a melhor opçãofor não abastecer no posto 2, o valor de x2 será 0 (x2 = 0).

Com isto em mente, é possível dizer que o valor gasto no posto 1 será o quanto foiabastecido no posto 1, multiplicado pelo preço do litro de combustível no posto 1, ou seja:

x1 * p1

Afinal, se for abastecido 1 litro, será pago 1 vez o preço de um litro. Se for abastecido2 litros, será pago 2 vezes o preço do litro e assim por diante. Da mesma forma, se nada forabastecido, x1 valerá zero e nada será pago no posto 1.

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

2008_SI_-_PesquisaOperacional_I_-_o2007 10

Page 11: Pesquisa Operacional 1 - caetano.eng.br

Seguindo o mesmo raciocínio, é possível dizer que o custo no posto 2 será x2 * p2 eque no posto 3 o custo será x3 * p3. Chamando os custos em cada posto de c1, c2 e c3, épossível reescrever os custos da seguinte forma:

c1 = x1 * p1

c2 = x2 * p2

c3 = x3 * p3

O custo total de abastecimento será c = c1 + c2 + c3, o que pode ser descrito daseguinte forma:

c = x1 * p1 + x2 * p2 + x3 * p3

...

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] x1 * p1 + x2 * p2 + x3 * p3

Esta função, que descreve o que se deseja do problema é, como dito anteriormente,chamada de função objetivo e, neste caso, x1, x2 e x3 são variáveis de decisão e p1, p2 e p3

são os parâmetros.

...

1.5. Restrições

Na seção anterior, foi representado o desejo de gastar o mínimo possível. Entretanto, asoluçã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, é precisoadicionar mais informações ao problema. Tais informações são acrescentadas na forma derestriçõ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 quejá estão sendo usadas. No caso, a informação que pode ser usada é um consumo conhecido daviagem, que seria, por exemplo, de 50 litros de combustível.

Como acrescentar esta informação? Bem, se vai ser abastecido x1 litros no posto 1, x2

litros no posto 2 e x3 litros no posto 3, é possível dizer que o total de litros abastecido é:

total abastecido = x1 + x2 + x3

...

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

2008_SI_-_PesquisaOperacional_I_-_o2007 11

Page 12: Pesquisa Operacional 1 - caetano.eng.br

Ora, o total abastecido precisa ser um valor maior ou igual aos 50 litros necessáriospara a viagem; ou seja, formalmente:

x1 + x2 + x3 ¶ 50

...

Com isso, é possível apresentar um primeiro modelo matemático muito simplificado:

[MIN] x1 * p1 + x2 * p2 + x3 * p3

Sujeito à: x1 + x2 + x3 ¶ 50

Ou ainda:

[MIN] x1 * p1 + x2 * p2 + x3 * p3

S.A. x1 + x2 + x3 ¶ 50

...

1.6. Condição de Não-Negatividade

Em programação linear, uma restrição sempre existente (mas implícita) é a de que asvariá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... equantidades negativas não fazem sentido. Por esta razão, sempre é posível incluir ao modelorestrições deste tipo:

x1 ¶ 0x2 ¶ 0x3 ¶ 0

Ficando assim, o modelo final:

[MIN] x1 * p1 + x2 * p2 + x3 * p3

S.A. x1 + x2 + x3 ¶ 50x1 ¶ 0x2 ¶ 0x3 ¶ 0

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

2008_SI_-_PesquisaOperacional_I_-_o2007 12

Page 13: Pesquisa Operacional 1 - caetano.eng.br

2. Modelagem Exemplo

Problema (extraído de MOREIRA, 2006):

Uma fábrica produz dois produtos, A e B. Cada um deve ser processado por duasmáquinas, M1 e M2. Devido à programação de outros produtos que também usam estasmáquinas, estão disponíveis para os produtos A e B apenas 24 horas da máquina M1 e 16horas da máquina M2.

Para produzir uma unidade do produto A, são necessárias 4 horas em cada uma dasmáquinas e para produzir uma unidade do produto B, são necessárias 6 horas em M1 e 2 horasem M2. Cada unidade de A vendida gera um lucro de R$ 80,00 e cada unidade de B vendidagera um lucro de R$ 60,00.

Existe uma previsão de demanda máxima de 3 unidades para B, mas nenhumarestrição de demanda para A. Deseja-se saber: quanto produzir de cada produto paramaximizar o lucro?

Solução

O primeiro passo que auxilia muito na solução, é fazer um pequeno quadro deinformações. Por exemplo:

--1624Horas Disp.60326B80-44A

Lucro UnitárioDemanda MaxHoras deM2Horas de M1Produto

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 dadosapresentados?

Ora, é sabido o lucro gerado por cada unidade de A e B: se uma unidade de A forvendida, o lucro será de R$ 80,00. Se uma unidade de B for vendida, o lucro será de R$60,00. Consideradno o número de unidades de A vendidas como xA e o número de unidadesde B vendidas como xB, é possível dizer que:

Lucro pelas vendas de A = 80 * xA

Lucro pelas vendas de B = 60 * xB

Lucro Total = 80 * xA + 60 * xB

Ora, então essa é a função objetivo, já que se deseja maximizar este lucro... E xA e xB

são as variáveis de decisão. A função objetivo pode ser formalizada como:

Função Objetivo: [MAX] 80 * xA + 60 * xB

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

2008_SI_-_PesquisaOperacional_I_-_o2007 13

Page 14: Pesquisa Operacional 1 - caetano.eng.br

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áticaisso não ocorre! Como contornar isso? Impondo as limitações que o próprio problemaapresenta:

- Limitação de Horas de M1 : 24- Limitação de Horas de M2 : 16- Limitação de Demanda para B : 3

Como escrever isso matematicamente? Deve-se estudar caso a caso.

Limitação de Horas de M1 : 24

A máquina M1 terá de ser compartilhada pela produção de A e B, uma vez que ambosa utilizam. Sabe-se que cada unidade de A produzida consome 4 horas de M1 e cada unidadede B produzida consome 6 horas de M1. Ora, se o número de unidades produzidas de A (xA)for multiplicado por 4, o resultado será o número de horas de M1 que é gasto com produçãode A e multiplicando o número de unidades produzidas de B (xB) por 6, o resultado será onúmero de horas de M1 que é gasto com a produção de B:

Tempo de M1 gasto com produção de A : 4 * xA

Tempo de M1 gasto com produção de B : 6 * xB

Tempo total de M1 : 4 * xA + 6 * xB

Mas a limitação de horas de M1 é 24 horas, ou seja, é possível usar M1 por qualquernúmero de horas, desde que ele não exceda 24 horas. Isso pode ser escrito da seguinte forma:

Tempo total de M1 = 4 * xA + 6 * xB

Tempo total de M1 ü 24

Juntando ambos...

4 * xA + 6 * xB ü 24 <= Restrição do número de horas de M1

Limitação de Horas de M2 : 16

A máquina M2 também terá de ser compartilhada pela produção de A e B. Sabe-se quecada unidade de A produzida consome 4 horas de M2 e cada unidade de B produzida consome2 horas de M2. Ora, se o número de unidades produzidas de A (xA) for multiplicado por 4, oresultado será o número de horas de M2 que é gasto com produção de A e multiplicando onúmero de unidades produzidas de B (xB) por 2, o resultado será o número de horas de M2

que é gasto com a produção de B:

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

2008_SI_-_PesquisaOperacional_I_-_o2007 14

Page 15: Pesquisa Operacional 1 - caetano.eng.br

Tempo de M2 gasto com produção de A : 4 * xA

Tempo de M2 gasto com produção de B : 2 * xB

Tempo total de M2 : 4 * xA + 2 * xB

Mas a limitação de horas de M2 é 16 horas, ou seja, é possível usar M2 por qualquernúmero de horas, desde que ele não exceda 16 horas. Isto pode ser escrito da seguinte forma:

Tempo total de M2 = 4 * xA + 2 * xB

Tempo total de M2 ü 16

Juntando ambos...

4 * xA + 2 * xB ü 16 <= Restrição do número de horas de M2

Limitação de Demanda para B : 3

Em tese, pode-se produzir qualquer número de unidades de A e B, desde que sejamrespeitados os limites de horas disponíveis em cada máquina. Entretanto, foi fornecida umainformação adicional: a de que caso sejam produzidos mais do que 3 unidades de B, as queexcederem este valor não serão vendidas. Unidades não vendidas significam custo paraproduzir e nenhum lucro. Assim, não é adequado permitir que isso ocorra, pois isso faria comque o lucro da empresa fosse menor.

Para evitar este problema, basta adicionar uma limitação a mais, indicando quequalquer número de unidades produzidas de B (xB) é adequado, desde que não exceda 3.Matematicamente:

xB ü 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 dedecisão não podem assumir valores negativos. Isso faz todo o sentido do mundo, uma vez queas variáveis de decisão praticamente sempre indicam quantidades... e quantidades negativasnão fazem sentido. Por esta razão, serão incluídas duas restrições ao modelo:

xA ¶ 0; xB ¶ 0 <= Restrições de não-negatividade

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

2008_SI_-_PesquisaOperacional_I_-_o2007 15

Page 16: Pesquisa Operacional 1 - caetano.eng.br

Modelo Final

O resultado da junção da função objetivo com todas as restrições é o modelomatemático final para o problema:

Função Objetivo: [MAX] 80 * xA + 60 * xB

Restrições:4 * xA + 6 * xB ü 24 <= Restrição do número de horas de M1

4 * xA + 2 * xB ü 16 <= Restrição do número de horas de M2

xB ü 3 <= Restrição de Demanda para BxA ¶ 0; xB ¶ 0 <= Restrições de não-negatividade

Onde as variáveis de decisão são xA e xB.

3. Exercícios L1

1) Um navio tem um limite de transporte de 300m3 de carga ou 50t de carga. Ele seráusado para transportar dois tipos de carga: a carga A é transportada em unidades de 60m3,que pesam 1t. A carga B é transportada em unidades de 25m3, e pesam 8t. O lucro pelotransporte de cada unidade de A é R$ 150,00, e o lucro pelo transporte de cada unidade de B éde R$ 72,00. Deseja-se o modelo de programação linear com que se possa obter qual é amelhor composição de carga para a obtenção de máximo lucro.

2) Um computador (1) tem um limite de 4GB (considerado 1GB = 1000MB) dememó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 aomesmo tempo. Isso significa que tudo tem que caber nos 4GB de memória. Um cliente lhemuitos pacotes de dados, de quatro tipos diferentes:

a) 10 pacotes que exigem 150 MB, 1 hora de processamento cada um, pagando R$100,00 por unidade processada.

b) 25 pacotes que exigem 100 MB, 7 horas de processamento cada um, pagando R$500,00 por unidade processada.

c) 3 pacotes que exigem 500 MB, 4 horas de processamento cada um, pagando R$350,00 por unidade processada.

d) 7 pacotes que exigem 350 MB, 10 horas de processamento cada um, pagando R$650,00 por unidade processada.

Deseja-e o modelo de programação linear para definir quais pacotes serão processadospara que o maior lucro seja obtido.

3) (livro) Uma empresa do ramo de confecções está considerando quanto deveproduzir de seus dois modelos de terno, denominados Executivo Master e Caibem, de forma amaximizar o lucro. É impossível produzir quanto se queira de cada um, pois existem

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

2008_SI_-_PesquisaOperacional_I_-_o2007 16

Page 17: Pesquisa Operacional 1 - caetano.eng.br

limitações nas horas disponíveis para costura em máquina e acabamento manual. Para acostura, existe um máximo de 180 horas-máquina disponíveis e para o acabamento existe ummáximo de 240 homens-hora. Em termos de lucro unitário e produção, os dois modelos deterno apresentam as seguintes características:

a) Executivo Master- Lucro unitário: R$ 120,00- horas-máquina de costura por unidade: 2- homens-hora de acabamento por unidade: 2

b) Caibem- Lucro unitário: R$ 70,00- horas-máquina de costura por unidade: 1- 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. ThomsonPioneira, 2007.

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

2008_SI_-_PesquisaOperacional_I_-_o2007 17

Page 18: Pesquisa Operacional 1 - caetano.eng.br

Unidade 1: Introdução à Modelagem MatemáticaTópico 4: Solução Gráfica de Problemas

Prof. Daniel Caetano

Objetivo: Apresentar graficamente a solução de um problema de programação lineare a análise dos resultados gráficos.

Bibliografia: - MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. Ed. Pioneira, 2007.

Introdução

Apesar de não ser qualquer tipo de problema de programação linear que permite umasolução gráfica, alguns deles permitem e a apresentação deste tipo de solução pode serbastante 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 problemasapresentados anteriormente. Adicionalmente serão feitos alguns comentários com relação àanálise dos resultados obtidos.

1. A Modelagem e Solução

Problema (extraído de MOREIRA, 2006):

Uma fábrica produz dois produtos, A e B. Cada um deve ser processado por duasmáquinas, M1 e M2. Devido à programação de outros produtos que também usam estasmáquinas, estão disponíveis para os produtos A e B apenas 24 horas da máquina M1 e 16horas da máquina M2.

Para produzir uma unidade do produto A, são necessárias 4 horas em cada uma dasmáquinas e para produzir uma unidade do produto B, são necessárias 6 horas em M1 e 2 horasem M2. Cada unidade de A vendida gera um lucro de R$ 80,00 e cada unidade de B vendidagera um lucro de R$ 60,00.

Existe uma previsão de demanda máxima de 3 unidades para B, mas nenhumarestrição de demanda para A. Deseja-se saber: quanto produzir de cada produto paramaximizar o lucro?

Pesquisa Operacional 1Atualização: 07/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 18

Page 19: Pesquisa Operacional 1 - caetano.eng.br

Modelo Final

Função Objetivo: [MAX] 80 * xA + 60 * xB

Sujeito a:4 * xA + 6 * xB ü 24 <= Restrição do número de horas de M1

4 * xA + 2 * xB ü 16 <= Restrição do número de horas de M2

xB ü 3 <= Restrição de Demanda para BxA ¶ 0; xB ¶ 0 <= Restrições de não-negatividade

Onde as variáveis de decisão são xA e xB.

1.1. Solução Gráfica

Sempre que um problema de programação linear tiver apenas duas variáveis dedecisão, será possível resolvê-lo graficamente. Embora seja um tanto limitada e também nãoseja a forma mais rápida de resolver um problema, é uma maneira interessante de entender omecanismo 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çõespossíveis se encontram e então buscar, neste espaço - chamado Espaço de Soluções - amelhor solução possível.

Bem, se o desejo é encontrar as soluções possíveis e tem-se o conhecimento de queelas são limitadas pelas restrições, então são estas que serão usadas para delimitar o espaçode soluções possíveis. Observe as restrições com atenção:

4 * xA + 6 * xB ü 24 <= Restrição do número de horas de M1

4 * xA + 2 * xB ü 16 <= Restrição do número de horas de M2

xB ü 3 <= Restrição de Demanda para BxA ¶ 0; xB ¶ 0 <= 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:

Pesquisa Operacional 2Atualização: 07/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 19

Page 20: Pesquisa Operacional 1 - caetano.eng.br

Deve ser traçada, então, a reta equivalente à primeira restrição, 4 * xA + 6 * xB ü 24,que é a reta 4 * xA + 6 * xB = 24. A tabela para esta construção é apresentada a seguir:

0640

Y (xB)X (xA)

Marcando os pontos e ligando-os, tem-se a seguinte reta:

Entretanto, esta reta representa apenas a borda de um plano, afinal, a restriçãooriginal era uma inequação e não uma equação (que foi utilizada para desenhar a reta). Arepresentação para a inequação deve incluir não apenas os pontos como (0,4) e (6,0) quesatisfazem à igualdade, mas também aqueles que satisfazem a 4 * xA + 6 * xB < 24.

É possível testar um ponto claramente de um lado e de outro da reta, de forma aidentificar qual dos lados representa a desigualdade. Pelo gráfico acima, o ponto (0,0)claramente está do lado de baixo da reta; substituindo-o na equação, tem-se que 4 * 0 + 6 * 0< 24 => 0 < 24, o que é correto. Logo, a área abaixo da reta também faz parte darepresentação da área da inequação:

Pesquisa Operacional 3Atualização: 07/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 20

Page 21: Pesquisa Operacional 1 - caetano.eng.br

Agora, deve-se traçar a reta que representa a equação relacionada à segunda restrição,4 * xA + 2 * xB ü 16, no mesmo gráfico em que foi traçada a reta anterior. Para facilitar avisualizaçã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, quedelimita um plano. Com o mesmo teste de lado pode-se verificar que a área delimitada pelainequação 4 * xA + 2 * xB ü 16 é a seguinte:

Entretanto, note que uma parte da área permitida pela Restrição 2 não é permitira pelaRestrição 1 (área acima da reta da restrição 1 e abaixo da restrição 2, onde está o ponto (0,5),por exemplo). Assim, a área permissível pelas duas restrições será representada na próximafigura, mostrando como acrescentar a restrição 2 reduziu o espaço de soluções:

Pesquisa Operacional 4Atualização: 07/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 21

Page 22: Pesquisa Operacional 1 - caetano.eng.br

A terceira restrição é mais simples: xB ü 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êsrestrições:

Pesquisa Operacional 5Atualização: 07/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 22

Page 23: Pesquisa Operacional 1 - caetano.eng.br

Entretanto, é possível observar que a área está se estendendo por regiões negativastanto no eixo X (xA) quanto no eixo Y (xB). Isto está incorreto pois, como já comentado,existem sempre as duas restrições de não negatividade: xA ¶ 0; xB ¶ 0.

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 externosrepresentam 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 umaimportante propriedade matemática:

"A solução ótima de um problema está em um dos pontos extremos da regiãopermissível"

Em outras palavras, a solução ótima está em um dos "cantos" do espaço de soluçõespossíveis. A tabela abaixo apresenta os diversos pontos extremos do gráfico acima. Suadeterminação é feita através das equações das retas que se cruzam para formar cada um deles:

18030530031.543602333200420001

Função Objetivo:80*xA + 60*xB

xBxAPontoExtremo

Pelos valores calculados para a função objetivo, é possível ver que o ponto extremo 3(xA = 3 e xB = 2) tem a melhor solução pois maximiza o lucro. Entretanto, esta não é a únicaforma de verificar a melhor solução. Pelo próprio gráfico é possível avaliar qual é o pontoextremo da melhor solução, se desenharmos a família de retas representada pela função

Pesquisa Operacional 6Atualização: 07/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 23

Page 24: Pesquisa Operacional 1 - caetano.eng.br

objetivo. Por exemplo: 80*xA + 60*xB = 0, 80*xA + 60*xB = 180... e assim por diante, atéencontrarmos o último ponto da figura que a reta da função objetivo toca, como indicado nafigura a seguir.

2. Análises Possíveis

Através da representação gráfica dos problemas, é possível verificar porque algumassoluções indesejadas podem ocorrer. A seguir serão analisadas algumas destas situações etambém será visto um pouco sobre o que é uma "análise de sensibilidade".

2.1. 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] 1*x + 2*y

Sujeito a: x ¶ 4y ¶ 5y ü 3

Certamente há um problema aqui: y não pode ser, ao mesmo tempo, maior ou igual acinco 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ãopintadas as áreas permissíveis a partir de cada restrição: note como não há nenhuma área queatenda simultaneamente às três restrições.

Pesquisa Operacional 7Atualização: 07/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 24

Page 25: Pesquisa Operacional 1 - caetano.eng.br

Como não há nenhum ponto extremo que obedeça às três restrições, este problema éde solução impossível.

2.2. Solução sem Fronteiras

Considere um problema como este:

[MAX] 1*x + 2*y

Sujeito a: x ¶ 4y ¶ 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 definidopara a função objetivo: ela pode ser tão grande quanto se deseje, já que seu valor aumentacom 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õessombreadas não se limitam à área apresentada, estendendo-se infinitamente para cima e paraa direita. Por esta razão, não é possível identificar o ponto extremo de máximo, que se dariajustamente quando X e Y tiverem o valor infinito. Note que este é um problema que fere umdos princípios da programação linear, que não serve, obviamente, para resolver problemasilimitados, como o representado pelo modelo matemático apresentado acima.

Pesquisa Operacional 8Atualização: 07/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 25

Page 26: Pesquisa Operacional 1 - caetano.eng.br

2.3. Restrições Redundantes

Considere o seguinte problema:

[MAX] 1*x + 2*y

Sujeito a: x ü 4y ü 5y ü 3

Este problema possui o que são chamdas de "Restrições Redundantes", no caso, paraa variável Y. A restrição y ü 3 claramente já "inclui" a restrição y ü 5, uma vez que se y ü 3for 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 asolução do problema de programação linear. É interessante, porém, eliminar as restriçõesredundantes que se identifique, a fim de simplificar o problema matemático a ser resolvido.

2.4. Soluções Alternativas

Em alguns problemas é impossível determinar um único ponto de extremo que seja asoluç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] 1*y

Sujeito a: x ü 4y ü 5

A representação gráfica a seguir mostra que, quando a reta da função objetivo toca oextremo da área de soluções possíveis, um segmento de reta inteiro fica marcado (e não

Pesquisa Operacional 9Atualização: 07/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 26

Page 27: Pesquisa Operacional 1 - caetano.eng.br

apenas um ponto). Por esta razão, existem infinitas soluções ótimas para este problema, sendoqualquer uma delas aceitável de acordo com o modelo matemático apresentado.

2.5. Análise de Sensibilidade

Normalmente, quando se obtém uma solução ótima para um problema, ocorre umapreocupação adicional: a solução encontrada deverá implementada na prática. Mas por querazão isso pode ser um problema?

Ocorre que alguns parâmetros que foram especificados no modelo podem não sermuito precisos. Por exemplo, no exercício apresentado, o número de horas disponíveis daMáquina 1 foi apresentado com o valor de 24 horas. Mas o que ocorreria se, por algumarazão, ficassem disponíveis apenas 23 horas da máquina M1? 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 produtosimilar ao da empresa para qual o modelo foi desenvolvido, fazendo com que o preço de umdos 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 aprogramação de produção?

Estas análises podem ser feitas também com análises gráficas. Entretanto, este tipo deanálise será deixada para cursos futuros.

Bibliografia

MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. ThomsonPioneira, 2007.

Pesquisa Operacional 10Atualização: 07/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 27

Page 28: Pesquisa Operacional 1 - caetano.eng.br

Unidade 1: Introdução à Modelagem MatemáticaTópico 5: Modelagem na Forma Padrão

Prof. Daniel Caetano

Objetivo: Apresentar as modificações na modelagem matemática necessárias para aespecificação de um modelo na forma padrão em um problema simples.

Bibliografia:- MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. Ed. Pioneira, 2007.

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 setornar complexa ou impossível de ser aplicada para problemas com mais de duas variáveis dedecisão.

Uma forma alternativa é o uso do Método Simplex para a resolução dos problemas deprogramaçã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-sea solução ótima.

Porém, apesar de ter sido apresenada, nas aulas anteriores, a maneira de converter umproblema real em um modelo matemático, tais modelos ainda não estão corrretamentepreparados para sua resolução pelo Simplex. Para que o modelo mamtemático se adapte àsnecessidades do Simplex, ainda são necessárias algumas modificações em sua forma, semalterar o seu significado matemático. A forma final, pronta para o Simplex, é chamada deForma Padrão.

1. Requisitos do Simplex para a Modelagem

Antes de mais nada, é interessante comentar a lógica por trás do Método Simplex. Naaula anterior, foi desenhado um gráfico que representava a região de soluções viáveis para oproblema então modelado:

Pesquisa Operacional 1Atualização: 07/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 28

Page 29: Pesquisa Operacional 1 - caetano.eng.br

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 estascaracterísticas.

A idéia é a seguinte: dada uma solução inicial (um dos pontos de vértice), ele utilizaas inequações das restrições para determinar o próximo vértices e, escolhendo o melhorvértice encontrado, repete o processo. Resumidamente, se na figura anterior fosse iniciado oprocesso pelo vértice (0,0), o método calcularia o valor da função objetivo nos vértices (0,3) e(4,0) (que são os vértices vizinhos ao vértice (0,0)) e escolheria aquele que a função objetivotivesse o maior valor (é um problema de maximização).

Supondo que este vértice seja o vértice (4,0), o método calcularia o valor dos vértices(0,0) e (3,2), que são os vértices vizinhos e, mais uma vez, escolheria aquele que tem o maiorvalor na função objetivo... repetindo este processo até que não fosse possível melhorar asolução.

Ora, como pode ser observado, para que esse processo seja iniciado, antes de maisnada é preciso encontrar uma solução inicial viável; garantindo isso, o método pressupõe quetodas as soluções calculadas serão viáveis (mas nada pode ser garantido se o método foriniciado com uma solução inviável). Note que uma solução inicial viável não significa queela precisa ser ótima... nem mesmo boa!

Ocorre que nem sempre é simples encontrar essa solução inicial viável na forma comque determinamos o modelo anteriormente. Assim, serão feitas algumas modificações nomodelo 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 asbordas 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 umaalteração no modelo que transforme as inequações (com sinais ü ou ¶), em equações (comsinal =) sem modificar o significado do modelo. Neste ponto serão apresentados os truquespara lidar com restrições do tipo ü, ficando para aulas posteriores a análise de restrições dotipo ü... e, como será visto, para faciliar a determinação da solução inicial, mesmo asrestriçõ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 estejampresentes 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 duasvariáveis, será necessário adicionar as variáveis faltantes, mais uma vez sem modificar osignificado matemático das restrições. Também serão indicados coeficientes em todas asvariáveis, mesmo que este coeficiente seja "1".

Pesquisa Operacional 2Atualização: 07/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 29

Page 30: Pesquisa Operacional 1 - caetano.eng.br

2. A Modelagem

Voltando ao Problema extraído de MOREIRA (2006):

Uma fábrica produz dois produtos, A e B. Cada um deve ser processado por duasmáquinas, M1 e M2. Devido à programação de outros produtos que também usam estasmáquinas, estão disponíveis para os produtos A e B apenas 24 horas da máquina M1 e 16horas da máquina M2.

Para produzir uma unidade do produto A, são necessárias 4 horas em cada uma dasmáquinas e para produzir uma unidade do produto B, são necessárias 6 horas em M1 e 2 horasem M2. Cada unidade de A vendida gera um lucro de R$ 80,00 e cada unidade de B vendidagera um lucro de R$ 60,00.

Existe uma previsão de demanda máxima de 3 unidades para B, mas nenhumarestrição de demanda para A. Deseja-se saber: quanto produzir de cada produto paramaximizar o lucro?

Modelo Final

Função Objetivo: [MAX] 80 * xA + 60 * xB

Sujeito a:4 * xA + 6 * xB ü 24 <= Restrição do número de horas de M1

4 * xA + 2 * xB ü 16 <= Restrição do número de horas de M2

xB ü 3 <= Restrição de Demanda para B

as variáveis de decisão são xA e xB e aqui não serão mais representadas as restrições denão-negatividade, porque elas são implícitas pelo método Simplex.

2.1. 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] 80 * xA + 60 * xB

Sujeito a (RESTRIÇÕES INCORRETAS!):4 * xA + 6 * xB = 24 <= Restrição do número de horas de M1

4 * xA + 2 * xB = 16 <= Restrição do número de horas de M2

xB = 3 <= Restrição de Demanda para B

E isso não é possível simplesmente porque assim o modelo seria modificado de umamaneira que modificaria o problema a ser resolvido. Em muitos casos, se isso fosse feito, o

Pesquisa Operacional 3Atualização: 07/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 30

Page 31: Pesquisa Operacional 1 - caetano.eng.br

problema seria até mesmo insolúvel. Suponha, por exemplo, que a solução ótima doproblema original fosse xA=2 e xB=2. Neste caso, pela restrição de hora de M1:

4 * xA + 6 * xB = 24 => 4*2 + 6*2 = 24 => 8+12 = 24 => 20 = 24 !?!

Não! 20 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] 80 * xA + 60 * xB

Sujeito a:4 * xA + 6 * xB + xS1 = 24 <= Restrição do número de horas de M1

4 * xA + 2 * xB + xS2 = 16 <= Restrição do número de horas de M2

xB + xS3 = 3 <= Restrição de Demanda para B

Observe agora que, mesmo com o sinal de igual (=), as solução não estão mais sendorestringidas além do modelo original. Por exemplo, suponha novamente que a solução ótimado problema original fosse xA=2 e xB=2.

Agora, pela restrição de horas de M1, tem-se:

4 * xA + 6 * xB + xS1 = 24 <= Restrição do número de horas de M1

4 * 2 + 6 * 2 + xS1 = 248 + 12 + xS1 = 2420 + xS1 = 24xS1 = 24 - 20xS1 = 4

Ou seja, a suposta solução ótima xA=2 e xB=2 implicou um xS1 = 4, mas a soluçãovoltou a ser possível e o objetivo de uma restrição com o sinal de igual foi atingido. Dequalquer forma, uma pergunta fica no ar: o que representa esta variável xS1?

Ora, neste caso, a variável xS1 representa o número de horas que sobraram damáquina M1. xS1 é chamada uma variável de folga. Folga, em inglês, é Slack, daí o índice Sna variável.

Repare, também, que as variáveis de folga também precisam obedecer às restrições denão-negatividade, já que não faz sentido sobrar "-10 horas" da máquina M1, por exemplo.Note que o raciocínio todo acima pode ser repetido para as outras restrições, envolvendo xS2 exS3.

Pesquisa Operacional 4Atualização: 07/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 31

Page 32: Pesquisa Operacional 1 - caetano.eng.br

2.2. Resolvendo o Problema das Variáveis Faltantes

Este problema é bem mais fácil de ser resolvido que o anterior: basta acrescentar todasas variáveis faltantes em cada equação do modelo matemático, indicando-as com coeficientezero. As que já existem sem coeficiente devem receber um coeficiente 1. Assim, o modeloque era:

Função Objetivo: [MAX] 80 * xA + 60 * xB

Sujeito a:4 * xA + 6 * xB + xS1 = 24 <= Restrição do número de horas de M1

4 * xA + 2 * xB + xS2 = 16 <= Restrição do número de horas de M2

xB + xS3 = 3 <= Restrição de Demanda para B

Se torna:

Função Objetivo: [MAX] 80 * xA + 60 * xB + 0 * xS1 + 0 * xS2 + 0 * xS3

Sujeito a:4 * xA + 6 * xB + 1 * xS1 + 0 * xS2 + 0 * xS3 = 24 <= Restrição M1

4 * xA + 2 * xB + 0 * xS1 + 1 * xS2 + 0 * xS3 = 16 <= Restrição M2

0 * xA + 1 * xB + 0 * xS1 + 0 * xS2 + 1 * xS3 = 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] 80 * xA + 60 * xB + 0 * xS1 + 0 * xS2 + 0 * xS3

Sujeito a:4 * xA + 6 * xB + 1 * xS1 + 0 * xS2 + 0 * xS3 = 24 <= Restrição M1

4 * xA + 2 * xB + 0 * xS1 + 1 * xS2 + 0 * xS3 = 16 <= Restrição M2

0 * xA + 1 * xB + 0 * xS1 + 0 * xS2 + 1 * xS3 = 3 <= Restrição B

Observando esta formaulação, é possível verificar que há 5 incógnitas (xA, xB, xS1, xS2,xS3) e apenas 3 equações de restrição (M1, M2 e B). Como há mais incógnitas do queequações, o problema é classificado como indeterminado, isto é, não é possível determinaruma solução única para ele, o que corrobora a solução gráfica, onde havia um grande númerode soluções dentro da área de "soluções viáveis".

Pesquisa Operacional 5Atualização: 07/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 32

Page 33: Pesquisa Operacional 1 - caetano.eng.br

Entretanto, se duas variáveis quaisquer forem escolhidas e tiverem seus valoresfixados, o resultado será um sistema de 3 equações e 3 incógnitas, tornando-se um sistemadeterminado, possibilitando o cálculo das variáveis restantes.

Por facilidade nas contas, os valores fixados para as variáveis em excesso é sempre 0(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, semnenhum cuidado, pode não ser viável. Em outras palavras, uma solução inicial criadasimplesmente impondo que duas variáveis valem zero, sem qualquer outro critério, podedesrespeitar 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 dasvariáveis nos pontos extremos. Os pontos serão nomeados da seguinte forma: o ponto A é oponto (0,0) e os pontos B, C, D e E são os seguintes, seqüenciais, no sentido horário:

Ponto XA XB XS1 XS2 XS3

A 0 0 24 16 3B 0 3 6 10 0C 1,5 3 0 4 0D 3 2 0 0 1E 4 0 8 0 3

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 deprogramação linear com m incógnitas e n equações, em todos os extremos da região desoluções possíveis teremos (m-n) incógnitas com valor igual a zero.

Pesquisa Operacional 6Atualização: 07/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 33

Page 34: Pesquisa Operacional 1 - caetano.eng.br

3.1. A Solução Inicial

Como futuramente será necessário determinar uma solução inicial, convém analisarcomo encontrar tal solução inicial.

O primeiro aspecto importante é que deve ser simples encontrar a solução incial, ouseja, seu cálculo deve ser simples. Adicionalmente, se o método para encontrar esta soluçãoinicial puder ser similar para todos os problemas, tanto melhor.

Curiosamente, existe uma solução inicial que se encaixa em todas estascaracterí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álculoimediato. Observe:

Função Objetivo: [MAX] 80 * xA + 60 * xB + 0 * xS1 + 0 * xS2 + 0 * xS3

Sujeito a:4 * xA + 6 * xB + 1 * xS1 + 0 * xS2 + 0 * xS3 = 24 <= Restrição M1

4 * xA + 2 * xB + 0 * xS1 + 1 * xS2 + 0 * xS3 = 16 <= Restrição M2

0 * xA + 1 * xB + 0 * xS1 + 0 * xS2 + 1 * xS3 = 3 <= Restrição B

As variáveis de decisão são xA e xB. Seus valores serão igualados a zero: xA = xB = 0.Substituindo os valores de xA e xB nas restrições:

4 * 0 + 6 * 0 + 1 * xS1 + 0 * xS2 + 0 * xS3 = 24 <= Restrição M1

4 * 0 + 2 * 0 + 0 * xS1 + 1 * xS2 + 0 * xS3 = 16 <= Restrição M2

0 * 0 + 1 * 0 + 0 * xS1 + 0 * xS2 + 1 * xS3 = 3 <= Restrição B

Resolvendo os cálculos, isso pode ser reescrito da seguinte forma:

0 + 0 + xS1 + 0 + 0 = 24 <= Restrição M1

0 + 0 + 0 + xS2 + 0 = 16 <= Restrição M2

0 + 0 + 0 + 0 + xS3 = 3 <= Restrição B

Ora, limpando este monte de zeros, surge o resultado:

xS1 = 24 <= Restrição M1

xS2 = 16 <= Restrição M2

xS3 = 3 <= Restrição B

E, como foi definido, xA = xB = 0. Estes cinco valores compõem a solução inicial (que,normalmente, não é uma solução ótima).

Pesquisa Operacional 7Atualização: 07/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 34

Page 35: Pesquisa Operacional 1 - caetano.eng.br

Exercício L2

1. Coloque os três problemas abaixo (já modelados na L1) na forma padrão.2. Encontre as soluções iniciais, variáveis básicas e não básicas para cada um deles.

1) Um navio tem um limite de transporte de 300m3 de carga ou 50t de carga. Ele será usado paratransportar dois tipos de carga: a carga A é transportada em unidades de 60m3, que pesam 1t. A carga B étransportada em unidades de 25m3, e pesam 8t. O lucro pelo transporte de cada unidade de A é R$ 150,00, e olucro pelo transporte de cada unidade de B é de R$ 72,00. Deseja-se o modelo de programação linear com quese possa obter qual é a melhor composição de carga para a obtenção de máximo lucro.

2) Um computador (1) tem um limite de 4GB (considerado 1GB = 1000MB) de memória e seu usuáriopode exectuar até executar até 72 horas de processamento por semana. Todos os dados que serão processadosnestas 72 horas da semana precisam ser carregados ao mesmo tempo. Isso significa que tudo tem que caber nos4GB de memória. Um cliente lhe muitos pacotes de dados, de quatro tipos diferentes:

a) 10 pacotes que exigem 150 MB, 1 hora de processamento cada um, pagando R$ 100,00 por unidadeprocessada.

b) 25 pacotes que exigem 100 MB, 7 horas de processamento cada um, pagando R$ 500,00 porunidade processada.

c) 3 pacotes que exigem 500 MB, 4 horas de processamento cada um, pagando R$ 350,00 por unidadeprocessada.

d) 7 pacotes que exigem 350 MB, 10 horas de processamento cada um, pagando R$ 650,00 porunidade processada.

Deseja-e o modelo de programação linear para definir quais pacotes serão processados para que omaior lucro seja obtido.

3) (livro) Uma empresa do ramo de confecções está considerando quanto deve produzir de seus doismodelos de terno, denominados Executivo Master e Caibem, de forma a maximizar o lucro. É impossívelproduzir quanto se queira de cada um, pois existem limitações nas horas disponíveis para costura em máquina eacabamento manual. Para a costura, existe um máximo de 180 horas-máquina disponíveis e para o acabamentoexiste um máximo de 240 homens-hora. Em termos de lucro unitário e produção, os dois modelos de ternoapresentam as seguintes características:

a) Executivo Master- Lucro unitário: R$ 120,00- horas-máquina de costura por unidade: 2- homens-hora de acabamento por unidade: 2

b) Caibem- Lucro unitário: R$ 70,00- horas-máquina de costura por unidade: 1- homens-hora de acabamento por unidade: 4

Bibliografia

MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. ThomsonPioneira, 2007.

Pesquisa Operacional 8Atualização: 07/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 35

Page 36: Pesquisa Operacional 1 - caetano.eng.br

Resolução das Listas 1 e 2Prof. Daniel Caetano

1. Solução da Lista L1

1.1, Solução da Lista L1

Problema

1) Um navio tem um limite de transporte de 300m3 de carga ou 50t de carga. Ele seráusado para transportar dois tipos de carga: a carga A é transportada em unidades de 60m3,que pesam 1t. A carga B é transportada em unidades de 25m3, e pesam 8t. O lucro pelotransporte de cada unidade de A é R$ 150,00, e o lucro pelo transporte de cada unidade de B éde R$ 72,00. Deseja-se o modelo de programação linear com que se possa obter qual é amelhor 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 deinformações. Por exemplo:

-50300Disponível72825B

150160ALucro UnitárioPesoVolumeCarga

Neste problema, o objetivo é claro: maximizar o lucro. Assim, haverá uma funçãoobjetivo de maximização. Mas como descrever esta função objetivo em termos dos dadosfornecidos?

Ora, é sabido o lucro que o transporte cada unidade de A e B gera: se uma unidade deA for transportada, o lucro será de R$ 150,00. Se uma unidade de B for transportada, o lucroserá de R$ 72,00. Se for considerado o número de unidades de A transportadas como xA e onúmero de unidades de B transportadas como xB, pode-se dizer que:

Lucro pelo transporte de A = 150 * xA

Lucro pelo transporte de B = 72 * xB

Lucro Total = 150 * xA + 72 * xB

Ora, essa é, então, a função objetivo, já que se deseja maximizar este lucro... E xA e xB

são as variáveis de decisão. A função objetivo pode ser formalizada como:

Função Objetivo: [MAX] 150 * xA + 72 * xB

Pesquisa Operacional 1Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 36

Page 37: Pesquisa Operacional 1 - caetano.eng.br

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, issonão ocorre! Como contornar isso? Impondo as limitações que o próprio problema apresenta:

- Limitação de Volume : 300- Limitação de Peso : 50

A maneira correta de descrever isso será vista a seguir.

Limitação de Volume: 300

O volume será compartilhado pelas cargas A e B, uma vez que ambos terão de sercolocados no mesmo navio. É sabido que cada unidade de A transportada ocupa 60 m3 e cadaunidade de B transportada ocupa 25 m3. Ora, se for multiplicado o número de unidadestransportadas de A (xA) por 60, o resultado será o volume total ocupado pela carga A emultiplicando o número de unidades transportadas de B (xB) por 25, o resultado será ovolume total ocupado pela carga B:

Volume total da carga A : 60 * xA

Volume total da carga B : 25 * xB

Volume total ocupado : 60 * xA + 25 * xB

Mas a limitação de volume é 300 m3, ou seja, é possível ocupar qualquer volume,desde que não exceda 300 m3. Isso pode ser escrito da seguinte forma:

Volume total ocupado = 60 * xA + 25 * xB

Volume permitido ü 300

Juntando ambos...

60 * xA + 25 * xB ü 300 <= Restrição de volume

Limitação de Peso: 50

O peso das cargas A e B também se somam para o cálculo do peso total, já que ascargas vão no mesmo navio. É sabido que cada unidade de A transportada pesa 1t e cadaunidade de B transportada ocupa 8t. Ora, se for multiplicado o número de unidadestransportadas de A (xA) por 1, o resultado será o peso total da carga A e multiplicando onúmero de unidades transportadas de B (xB) por 8, o resultado será o peso total da carga B:

Peso total da carga A : 1 * xA

Peso total da carga B : 8 * xB

Peso total : 1 * xA + 8 * xB

Pesquisa Operacional 2Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 37

Page 38: Pesquisa Operacional 1 - caetano.eng.br

Mas a limitação de peso é 50t, ou seja, o peso total de nossa carga pode ser qualquerum, desde que não exceda 50t. É possível escrever isso da seguinte forma:

Peso total = 1 * xA + 8 * xB

Peso permitido ü 50

Juntando ambos...

1 * xA + 8 * xB ü 50 <= 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 dedecisão não podem assumir valores negativos. Isso faz todo o sentido do mundo, uma vez queas variáveis de decisão praticamente sempre indicam quantidades... e quantidades negativasnão fazem sentido. Por esta razão, são incluidas duas restrições ao modelo:

xA ¶ 0; xB ¶ 0 <= Restrições de não-negatividade

Modelo Final

Juntando a função objetivo com todas as restrições, o resultado é o modelomatemático final para o problema:

Função Objetivo: [MAX] 150 * xA + 72 * xB

Restrições:60 * xA + 25 * xB ü 300 <= Restrição de volume1 * xA + 8 * xB ü 50 <= Restrição de pesoxA ¶ 0; xB ¶ 0 <= Restrições de não-negatividade

Onde as variáveis de decisão são xA e xB, representando respectivamente a quantidadea transportar da carga A (em unidades) e a quantidade a transportar da carga B (em unidades).

Pesquisa Operacional 3Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 38

Page 39: Pesquisa Operacional 1 - caetano.eng.br

1.2. Solução do Exercício 2

Problema

2) Um computador (1) tem um limite de 4GB (considerado 1GB = 1000MB) dememó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 aomesmo tempo. Isso significa que tudo tem que caber nos 4GB de memória. Um cliente lhemuitos pacotes de dados, de quatro tipos diferentes:

a) 10 pacotes que exigem 150 MB, 1 hora de processamento cada um, pagando R$100,00 por unidade processada.

b) 25 pacotes que exigem 100 MB, 7 horas de processamento cada um, pagando R$500,00 por unidade processada.

c) 3 pacotes que exigem 500 MB, 4 horas de processamento cada um, pagando R$350,00 por unidade processada.

d) 7 pacotes que exigem 350 MB, 10 horas de processamento cada um, pagando R$650,00 por unidade processada.

Deseja-e o modelo de programação linear para definir quais pacotes serão processadospara que o maior lucro seja obtido.

Solução

O primeiro passo que auxilia muito na solução, é fazer um pequeno quadro deinformações. Por exemplo:

--724,000Disponível765010350D33504500C

255007100B101001150A

Pacotes disponíveislucro unitáro(R$)

horas de proc. (h)

memória (MB)

Pacote

Neste problema, o objetivo é claro: maximizar o lucro. Assim, haverá uma funçãoobjetivo de maximização. Mas como descrever esta função objetivo em termos dos dados evariáveis disponíveis?

Ora, é sabido o lucro que o processamento de cada pacote A, B, C, D e E gera: se umaunidade de A for processada, o lucro será de R$ 100,00. Se uma unidade de B for vendida, olucro será de R$ 500,00... e assim por diante. Se considerarmos o número de unidades de A,B, C e D processadas como xA, xB, xC e xD respectivamente, pode-se dizer que:

Lucro pelo processamento de unidades A = 100 * xA

Lucro pelo processamento de unidades B = 500 * xB

Lucro pelo processamento de unidades C = 350 * xC

Lucro pelo processamento de unidades D = 650 * xD

Pesquisa Operacional 4Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 39

Page 40: Pesquisa Operacional 1 - caetano.eng.br

Assim, o lucro total será:

Lucro Total = 100 * xA + 500 * xB + 350 * xC + 650 * xD

Ora, essa é, então, a função objetivo, já que se deseja maximizar este lucro... E xA, xB,xC e xD são as variáveis de decisão. A função objetivo pode ser formalizada como:

Função Objetivo: [MAX] 100 * xA + 500 * xB + 350 * xC + 650 * xD

Esta é a primeira parte do modelo, mas ele ainda não está completo. Mais uma vez, damaneira com que foi representado, é possível definir um lucro infinito e, na prática, isso nãoocorre. Serão impostas, então as restrições que o próprio problema apresenta:

- Limitação de Memória : 4000- Limitação de Horas : 72- Limitação de Unidades A: 10- 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: 4000

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 xA, xB,xC e xD. É sabido que cada unidade de A, por exemplo, consome 150MB de memória. Cadaunidade de C, por exemplo, consome 500MB de memória. Ora, se for multiplicado o númerode unidades processadas de A, B, C e D (xA, xB, xC e xD) pelo seu consumo de memóriarespectivo, o resultado será a quandidade de memória total que os pacotes de um determinadotipo consumirão:

Memória consumida por pacotes A: 150 * xA

Memória consumida por pacotes B: 100 * xB

Memória consumida por pacotes C: 500 * xC

Memória consumida por pacotes D: 350 * xD

Memória consumida total: 150 * xA + 100 * xB + 500 * xC + 350 * xD

Mas a limitação de memória total é 4000, ou seja, pode-se consumir qualquerquantidade de memória, desde que não exceda 4000. Isso pode ser escrito da seguinte forma:

Memória total necessária: 150 * xA + 100 * xB + 500 * xC + 350 * xD

Memória total disponível: 4000

Pesquisa Operacional 5Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 40

Page 41: Pesquisa Operacional 1 - caetano.eng.br

Juntando ambos...

150 * xA + 100 * xB + 500 * xC + 350 * xD ü 4000 <= 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), sendoeles executados seqüencialmente. É sabido que cada unidade de A processada consome 1hora e cada unidade de D processada consome 10 horas, por exemplo. Ora, se formultiplicado o número de unidades processadas de A, B, C e D (xA, xB, xC e xD) pelo seuconsumo de horas respectivo, o resultado será o número de horas consumidas no total, devidoao processamento:

Horas consumidas por pacotes A: 1 * xA

Horas consumidas por pacotes B: 7 * xB

Horas consumidas por pacotes C: 4 * xC

Horas consumidas por pacotes D: 10 * xD

Horas consumidas total: 1 * xA + 7 * xB + 4 * xC + 10 * xD

Mas a limitação de horas é de 72, ou seja, pode-se consumir qualquer número dehoras, desde que não exceda 72. Isso pode ser escrito da seguinte forma:

Horas necessárias: 1 * xA + 7 * xB + 4 * xC + 10 * xD

Horas disponíveis: 72

Juntando ambos...

1 * xA + 7 * xB + 4 * xC + 10 * xD ü 72 <= Restrição de Horas

Limitação de Unidades A, B, C e D: 10, 25, 3, 7 (respectivamente)

Além das restrições de hora e memória, temos há algumas restrições na quantidademáxima de cada tipo de unidade que pode ser processada. Por exemplo: só há 10 unidades Apara serem processadas; não faz sentido considerar o processamento de uma décima primeiraunidade A. Assim, pode-se dizer que o número de unidades processadas de A, B, C e D (xA,xB, xC e xD) deve ser inferior ou igual ao número de unidades disponíveis:

xA ü 10 <= Restrição de Unidades AxB ü 25 <= Restrição de Unidades BxC ü 3 <= Restrição de Unidades CxD ü 7 <= Restrição de Unidades D

Pesquisa Operacional 6Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 41

Page 42: Pesquisa Operacional 1 - caetano.eng.br

Condição de Não-Negatividade

Em programação linear, a restrição de que as variáveis de decisão não podem assumirvalores negativos é sempre implícita. Neste caso, elas serão explicitadas:

xA ¶ 0; xB ¶ 0; xC ¶ 0 ; xD ¶ 0 <= Não-negatividade

Modelo Final

Juntando a função objetivo com todas as restrições, o resultado é o modelomatemático final para problema:

Função Objetivo: [MAX] 100 * xA + 500 * xB + 350 * xC + 650 * xD

Restrições:150 * xA + 100 * xB + 500 * xC + 350 * xD ü 4000 <= Restrição de Memória1 * xA + 7 * xB + 4 * xC + 10 * xD ü 72 <= Restrição de HorasxA ü 10 <= Restrição de Unidades AxB ü 25 <= Restrição de Unidades BxC ü 3 <= Restrição de Unidades CxD ü 7 <= Restrição de Unidades DxA ¶ 0; xB ¶ 0; xC ¶ 0 ; xD ¶ 0 <= Não-negatividade

Onde as variáveis de decisão são xA, xB, xC e xD, representando a quandidade de cadatipo de pacote (A, B, C e D, respectivamente) a ser processado.

Pesquisa Operacional 7Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 42

Page 43: Pesquisa Operacional 1 - caetano.eng.br

1,3. Solução do Exercício 3

Problema

3) (livro) Uma empresa do ramo de confecções está considerando quanto deveproduzir de seus dois modelos de terno, denominados Executivo Master e Caibem, de forma amaximizar o lucro. É impossível produzir quanto se queira de cada um, pois existemlimitações nas horas disponíveis para costura em máquina e acabamento manual. Para acostura, existe um máximo de 180 horas-máquina disponíveis e para o acabamento existe ummáximo de 240 homens-hora. Em termos de lucro unitário e produção, os dois modelos deterno apresentam as seguintes características:

a) Executivo Master- Lucro unitário: R$ 120,00- horas-máquina de costura por unidade: 2- homens-hora de acabamento por unidade: 2

b) Caibem- Lucro unitário: R$ 70,00- horas-máquina de costura por unidade: 1- 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 deinformações. Por exemplo:

-240180Disponível7041Caibem

12022Executivo MasterLucro Unitáriohomens-horahoras-máquinaTerno

Neste problema, o objetivo é maximizar o lucro. Assim, haverá uma função objetivode maximização. Mas como descrever esta função objetivo em termos dos dados e variáveisdisponí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$ 120,00. Se uma unidade de C forvendida, o lucro será de R$ 70,00. Se for considerado o número de unidades de EMtransportadas como xEM e o número de unidades de C transportadas como xC, pode-se dizerque:

Lucro pela venda de EM = 120 * xEM

Lucro pela venda de C = 70 * xC

Lucro Total = 120 * xEM + 70 * xC

Pesquisa Operacional 8Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 43

Page 44: Pesquisa Operacional 1 - caetano.eng.br

Ora, essa é, então, a função objetivo, já que se deseja maximizar este lucro... E xEM exC são as variáveis de decisão. A função objetivo pode ser formalizada como:

Função Objetivo: [MAX] 120 * xEM + 70 * xC

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 : 180- Limitação de Homens-Hora : 240

Tais restrições serão analisadas em seguida:

Limitação de Horas-Máquina : 180

As horas-máquina serão compartilhadas pela produção dos ternos EM e C. É sabidocada unidade de EM produzida gasta 2 horas-máquina e cada unidade de C produzida gasta 1hora-máquina. Ora, se for muliplicado o número de unidades produzidas de EM (xEM) por 2, oresultado será o número de horas-máquina consumidas pela produção de EM e multiplicandoo número de unidades produzidas de C (xC) por 1, o resultado será o número dehoras-máquina consumidas pela produção de C:

Horas-máquina gastos por EM : 2 * xEM

Horas-máquina gastos por C : 1 * xC

Horas-máquina gastas : 2 * xEM + 1 * xC

Mas a limitação de horas-máquina é de 180, ou seja, é possível gastar qualquernúmero de horas-máquina, desde que não exceda 180. Isso pode ser escrito da seguinteforma:

Horas-máquina necessárias = 2 * xEM + 1 * xC

Horas-máquina disponíveis ü 180

Juntando ambos...

2 * xEM + 1 * xC ü 180 <= Restrição de horas-máquina

Limitação de Homens-Hora : 240

Os homens-hora serão compartilhados pela produção dos ternos EM e C. É sabido quecada unidade de EM produzida gasta 2 homens-hora e cada unidade de C produzida gasta 4homens-hora. Ora, se for multiplicado o número de unidades produzidas de EM (xEM) por 2, oresultado será o número de homens-horas consumidos pela produção de EM e multiplicando

Pesquisa Operacional 9Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 44

Page 45: Pesquisa Operacional 1 - caetano.eng.br

o número de unidades produzidas de C (xC) por 4, o resultado será o número de homens-horaconsumidas pela produção de C:

Homens-hora gastos por EM : 2 * xEM

Homens-hora gastos por C : 4 * xC

Homens-hora gastos : 2 * xEM + 4 * xC

Mas a limitação de homens-hora é de 240, ou seja, é possível gastar qualquer númerode homens-hora, desde que não exceda 240. Isso pode ser escrito da seguinte forma:

Homens-horas necessários = 2 * xEM + 4 * xC

Homens-horas disponíveis ü 240

Juntando ambos...

2 * xEM + 4 * xC ü 240 <= 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 asvariáveis de decisão recebam valores negativos. Assim, serão incluídas estas duas restriçõesao modelo:

xEM ¶ 0; xC ¶ 0 <= Restrições de não-negatividade

Modelo Final

Juntando a função objetivo com todas as restrições, o resultado é o modelomatemático final para o problema:

Função Objetivo: [MAX] 120 * xEM + 70 * xC

Restrições:2 * xEM + 1 * xC ü 180 <= Restrição de horas-máquina2 * xEM + 4 * xC ü 240 <= Restrição de homens-horaxEM ¶ 0; xC ¶ 0 <= Restrições de não-negatividade

Onde as variáveis de decisão são xEM e xC, representando a quantidade a ser produzidade cada um dos tipos de terno: Executivo Mater e Caibem, respectivamente.

Pesquisa Operacional 10Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 45

Page 46: Pesquisa Operacional 1 - caetano.eng.br

2. Solução da Lista L2

2.1. Coloque os três problemas modelados na L1 na forma padrão.

Problema 1

Modelagem original do primeiro problema:

Função Objetivo: [MAX] 150 * xA + 72 * xB

Restrições:60 * xA + 25 * xB ü 300 <= Restrição de volume1 * xA + 8 * xB ü 50 <= 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 emigualdades acrescentando variáveis de sobra em cada uma das restrições:

60 * xA + 25 * xB ü 300 => 60 * xA + 25 * xB + 1 * xS1 = 3001 * xA + 8 * xB ü 50 => 1 * xA + 8 * xB + 1 * xS2 = 50

Onde xS1 significa o volume não utilizado do navio e xS2 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]150 * xA + 72 * xB + 0 * xS1 + 0 * xS2

60 * xA + 25 * xB + 1 * xS1 0 * xS2 = 3001 * xA + 8 * xB + 0* xS1 1* xS2 = 50

Pesquisa Operacional 11Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 46

Page 47: Pesquisa Operacional 1 - caetano.eng.br

Problema 2

Modelagem original do segundo problema:

Função Objetivo: [MAX] 100 * xA + 500 * xB + 350 * xC + 650 * xD

Restrições:150 * xA + 100 * xB + 500 * xC + 350 * xD ü 4000 <= Restrição de Memória1 * xA + 7 * xB + 4 * xC + 10 * xD ü 72 <= Restrição de HorasxA ü 10 <= Restrição de Unidades AxB ü 25 <= Restrição de Unidades BxC ü 3 <= Restrição de Unidades CxD ü 7 <= Restrição de Unidades DxA ¶ 0; xB ¶ 0; xC ¶ 0 ; xD ¶ 0 <= Não-negatividade

a) Eliminando as desigualdades das Restrições

Como há duas restrições do tipo menor ou igual, é possível transformá-las emigualdades acrescentando variáveis de sobra em cada uma das restrições:

150*xA+100*xB+500*xC+350*xD ü 4000 => 150*xA+100*xB+500*xC+350*xD+xS1 = 40001 * xA + 7 * xB + 4 * xC + 10 * xD ü 72 => 1 * xA + 7 * xB + 4 * xC + 10 * xD + xS2 = 721* xA ü 10 => 1 * xA + xS3 = 101 * xB ü 25 => 1 * xB + xS4 = 251 * xC ü 3 => 1 * xC + xS5 = 31 * xD ü 7 => 1 * xD + xS6 = 7

Onde xA significa o número de pacotes A a serem processados, xB significa o númerode pacotes B a serem processados, xC significa o número de pacotes C a serem processados, xD 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] 100*xA + 500*xB + 350*xC + 650*xD + 0*xS1 + 0*xS2 + 0*xS3 + 0*xS4 + 0*xS5 + 0*xS6

150*xA + 100*xB + 500*xC + 350*xD + 1*xS1 + 0*xS2 + 0*xS3 + 0*xS4 + 0*xS5 + 0*xS6 = 4000 1*xA + 7*xB + 4*xC + 10*xD + 0*xS1 + 1*xS2 + 0*xS3 + 0*xS4 + 0*xS5 + 0*xS6 = 72 1*xA + 0*xB + 0*xC + 0*xD + 0*xS1 + 0*xS2 + 1*xS3 + 0*xS4 + 0*xS5 + 0*xS6 = 10 0*xA + 1*xB + 0*xC + 0*xD + 0*xS1 + 0*xS2 + 0*xS3 + 1*xS4 + 0*xS5 + 0*xS6 = 25 0*xA + 0*xB + 1*xC + 0*xD + 0*xS1 + 0*xS2 + 0*xS3 + 0*xS4 + 1*xS5 + 0*xS6 = 3 0*xA + 0*xB + 0*xC + 1*xD + 0*xS1 + 0*xS2 + 0*xS3 + 0*xS4 + 0*xS5 + 1*xS6 = 7

Pesquisa Operacional 12Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 47

Page 48: Pesquisa Operacional 1 - caetano.eng.br

Problema 3

Modelagem original do terceiro problema:

Função Objetivo: [MAX] 120 * xEM + 70 * xC

Restrições:2 * xEM + 1 * xC ü 180 <= Restrição de horas-máquina2 * xEM + 4 * xC ü 240 <= 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 emigualdades acrescentando variáveis de sobra em cada uma das restrições:

2 * xEM + 1 * xC ü 180 => 2 * xEM + 1 * xC + 1 * xS1 = 1802 * xEM + 4 * xC ü 240 => 2 * xEM + 4 * xC + 1 * xS2 = 240

Onde xS1 significa o número de horas/máquina não usado e xS2 o número dehomens/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]120 * xEM + 70 * xC + 0 * xS1 + 0 * xS2

2 * xEM + 1 * xC + 1 * xS1 0 * xS2 = 180 2 * xEM + 4 * xC + 0* xS1 1* xS2 = 240

2.2. Encontre as soluções iniciais, variáveis básicas e não básicas para cada um.

Problema 1[MAX]150 * xA + 72 * xB + 0 * xS1 + 0 * xS2

60 * xA + 25 * xB + 1 * xS1 0 * xS2 = 300 1 * xA + 8 * xB + 0* xS1 1* xS2 = 50

Solução inicial: xA = xB = 0; xS1 = 300; xS2 = 50Variáveis não-básicas: xA e xB

Variáveis básicas: xS1 e xS2

Pesquisa Operacional 13Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 48

Page 49: Pesquisa Operacional 1 - caetano.eng.br

Problema 2[MAX] 100*xA + 500*xB + 350*xC + 650*xD + 0*xS1 + 0*xS2 + 0*xS3 + 0*xS4 + 0*xS5 + 0*xS6

150*xA + 100*xB + 500*xC + 350*xD + 1*xS1 + 0*xS2 + 0*xS3 + 0*xS4 + 0*xS5 + 0*xS6 = 4000 1*xA + 7*xB + 4*xC + 10*xD + 0*xS1 + 1*xS2 + 0*xS3 + 0*xS4 + 0*xS5 + 0*xS6 = 72 1*xA + 0*xB + 0*xC + 0*xD + 0*xS1 + 0*xS2 + 1*xS3 + 0*xS4 + 0*xS5 + 0*xS6 = 10 0*xA + 1*xB + 0*xC + 0*xD + 0*xS1 + 0*xS2 + 0*xS3 + 1*xS4 + 0*xS5 + 0*xS6 = 25 0*xA + 0*xB + 1*xC + 0*xD + 0*xS1 + 0*xS2 + 0*xS3 + 0*xS4 + 1*xS5 + 0*xS6 = 3 0*xA + 0*xB + 0*xC + 1*xD + 0*xS1 + 0*xS2 + 0*xS3 + 0*xS4 + 0*xS5 + 1*xS6 = 7

Solução inicial: xA = xB = xC = xD = 0;xS1 = 4000; xS2 = 72; xS3 = 10; xS4 = 25; xS5 = 3; xS6 = 7

Variáveis não-básicas: xA, xB, xC, xD

Variáveis básicas: xS1, xS2, xS3, xS4, xS5, xS6

Problema 3[MAX]120 * xEM + 70 * xC + 0 * xS1 + 0 * xS2

2 * xEM + 1 * xC + 1 * xS1 0 * xS2 = 180 2 * xEM + 4 * xC + 0* xS1 1* xS2 = 240

Solução inicial: xEM = xC = 0; xS1 = 180; xS2 = 240Variáveis não-básicas: xEM e xC

Variáveis básicas: xS1 e xS2

Pesquisa Operacional 14Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 49

Page 50: Pesquisa Operacional 1 - caetano.eng.br

Unidade 2: Método Simplex e Ferramentas ComputacionaisTó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çãoLinear.

Bibliografia:- MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed.

Thomson Pioneira, 2007.

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 ouimpossível de ser aplicada para problemas com mais de duas variáveis de decisão (pois serianecessá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 deprogramaçã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 peloMétodo Simplex. Entretanto, é necessário aprender todos os passos do Simplex, verificandosuas qualidades e os pontos críticos onde podem surgir problemas, possibilitando uma corretainterpretação dos resultados quando a solução por encontrada por meio de um software.

1. A Modelagem

Voltando ao Problema extraído de MOREIRA (2006) :

Uma fábrica produz dois produtos, A e B. Cada um deve ser processado por duasmáquinas, M1 e M2. Devido à programação de outros produtos que também usam estasmáquinas, estão disponíveis para os produtos A e B apenas 24 horas da máquina M1 e 16horas da máquina M2.

Para produzir uma unidade do produto A, são necessárias 4 horas em cada uma dasmáquinas e para produzir uma unidade do produto B, são necessárias 6 horas em M1 e 2 horasem M2. Cada unidade de A vendida gera um lucro de R$ 80,00 e cada unidade de B vendidagera um lucro de R$ 60,00.

Existe uma previsão de demanda máxima de 3 unidades para B, mas nenhumarestrição de demanda para A. Deseja-se saber: quanto produzir de cada produto paramaximizar o lucro?

Pesquisa Operacional 1Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 50

Page 51: Pesquisa Operacional 1 - caetano.eng.br

Cujo modelo final era:

Função Objetivo: [MAX] 80 * xA + 60 * xB

Sujeito a:4 * xA + 6 * xB ü 24 <= Restrição do número de horas de M1

4 * xA + 2 * xB ü 16 <= Restrição do número de horas de M2

1 * xB ü 3 <= Restrição de Demanda para B

Sendo as variáveis de decisão xA e xB, indicando as quantidades de produção para cadaproduto A e B.

O primeiro passo para a resolução para o Simplex será colocar o problema na formapadrão, para atender às exigências do método Simplex com relação às restrições e tambémpara determinar mais facilmente a solução inicial.

Como visto anteiormente, a forma padrão para este modelo é:

Função Objetivo: [MAX] 80 * xA + 60 * xB + 0 * xS1 + 0 * xS2 + 0 * xS3

Sujeito a:4 * xA + 6 * xB + 1 * xS1 + 0 * xS2 + 0 * xS3 = 24 <= Restrição M1

4 * xA + 2 * xB + 0 * xS1 + 1 * xS2 + 0 * xS3 = 16 <= Restrição M2

0 * xA + 1 * xB + 0 * xS1 + 0 * xS2 + 1 * xS3 = 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 facilmentecom os dados fornecidos até então, pois há 5 incógnitas mas apenas 3 equações, sendo umproblema indeterminado. Entretanto, como já visto, é possível escolher duas variáveisquaisquer e fixar seus valores, fazendo com que o problema fique com 3 equações e 3incógnitas, tornando-se um sistema determinado; com isso, fica possível o cálculo dasvariá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 0(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 achamada "solução básica". Note que, para que esta solução seja viável, é preciso que omodelo 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.

Pesquisa Operacional 2Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 51

Page 52: Pesquisa Operacional 1 - caetano.eng.br

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 estascaracterísticas, iniciando por uma solução inicial viável.

Por padrão, é definido que as variáveis de decisão iniciais (neste acaso, XA e XB) é queserão zeradas, e com isso é possível calcular uma solução incial:

Solução Básica: xS1 = 24 <= Restrição M1

xS2 = 16 <= Restrição M2

xS3 = 3 <= Restrição B

Solução Não-Básica:xA = 0xB = 0

Revisando, a idéia do Simplex é a seguinte: dada uma solução inicial (um dos pontosde 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 figuraanterior fosse iniciado o processo pelo vértice (0,0), o método calcularia o valor da funçãoobjetivo nos vértices (0,3) e (4,0) (que são os vértices vizinhos ao vértice (0,0)) e escolheriaaquele que a função objetivo tivesse o maior valor (é um problema de maximização).

Supondo que este vértice seja o vértice (4,0), o método calcularia o valor dos vértices(0,0) e (3,2), que são os vértices vizinhos e, mais uma vez, escolheria aquele que tem o maiorvalor na função objetivo... repetindo este processo até que não fosse possível melhorar asolução.

Pesquisa Operacional 3Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 52

Page 53: Pesquisa Operacional 1 - caetano.eng.br

Lembrando que os vértices da figura são estes:

Ponto XA XB XS1 XS2 XS3

A 0 0 24 16 3B 0 3 6 10 0C 1,5 3 0 4 0D 3 2 0 0 1E 4 0 8 0 3

E observando que, se há m incógnitas e n equações, haverá sempre (m-n) incógnitascom valor igual a zero nos pontos de vértice, o Simplex nada mais faz do que procurar, deuma 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álculosmatemá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 longede ser a melhor solução. A partir desta solução, o método permite que se "navegue" ao longodos extremos do espaço de soluções possíveis, até chegar à solução ótima. O ponto de partidacostuma ser a solução trivial, ou seja, aquela em que a origem do espaço é a solução. Emoutras 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 doespaço de soluções de forma aleatória. Da "solução trivial", o processo irá para o próximoextremo contíguo que fornecer o maior incremento na função objetivo (no caso de umproblema 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óximotableau, que representa a próxima solução (o extremo seguinte do espáco de soluçõespossíveis). O processo é repetido até que qualquer mudança nova sempre piore o resultado dafunção objetivo, ao invés de melhorar (quando então a resolução terá chegado ao fim).

O algoritmo é:

1) 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.

Pesquisa Operacional 4Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 53

Page 54: Pesquisa Operacional 1 - caetano.eng.br

3.1. Exemplo de Aplicação do Método Simplex

Neste primeiro exemplo, será resolvido o problema já apresentado, que possuíaapenas restrições do tipo ü, e que já foi devidamente convertido para a forma padrão. Omodelo matemático na forma padrão encontrado anteriormente foi:

Função Objetivo: [MAX] 80 * xA + 60 * xB + 0 * xS1 + 0 * xS2 + 0 * xS3

Sujeito a:4 * xA + 6 * xB + 1 * xS1 + 0 * xS2 + 0 * xS3 = 24 <= Restrição M1

4 * xA + 2 * xB + 0 * xS1 + 1 * xS2 + 0 * xS3 = 16 <= Restrição M2

0 * xA + 1 * xB + 0 * xS1 + 0 * xS2 + 1 * xS3 = 3 <= Restrição B

Segue, agora, a construção do primeiro tableau.

3.1.1. Construção do Primeiro Tableau

O primeiro passo é construir uma pequena tabela. O número de linhas será o númerode restrições mais quatro. Assim, este problema tem uma tabela de 7 linhas. O número decolunas é igual ao número de variáveis mais quatro, ou seja, neste caso o tableau terá 9colunas. O aspecto do primeiro tableau deve ser:

Linha C-ZLinha Z

310010XS301601024XS202400164XS10

bj / aijbjXS3XS2XS1XBXAVariáveisna Solução

cj

Linha0006080

Na primeira linha, temos a contribuição de cada variável para a função objetivo, sendoque XS1 a XS3 em nada contribuem, obviamente (em outras palavras, nesta linha é indicado ocoeficiente na função objetivo da variável representada na coluna). Observe os valores 80, 60,0, 0 e 0.

A segunda linha é basicamente uma linha de título, contendo os nomes das variáveis ealgumas outras informações. A primeira coluna, cj, indica a contribuição de cada variável nasolução (variáveis da solução básica) para o valor da função objetivo. No caso, as variáveisna solução representada são as variáveis de folga (XS1 a XS3), indicadas na segunda coluna, enada contribuem na função objetivo (o cj de cada uma delas é 0 - o valor é uma cópia do valorque está sobre a variável na primeira linha). É importante lembrar que estas variávies estão aíporque as variáveis XA e XB foram escolhidas como "solução não-básica" e valem zero.

Pesquisa Operacional 5Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 54

Page 55: Pesquisa Operacional 1 - caetano.eng.br

Ainda na segunda linha, aparecem os nomes das variáveis da função objetivo erestrições, além da coluna bj, que representa o lado direito das equações, ou seja, o "númerodepois do igual" nas restrições da modelagem matemática. Finalmente, há a coluna bj/aij, queserá usada durante o cálculo do Simplex. Vale lembrar que em cada tableau calculado doSimplex é possível visualizar imediatamente a solução representatada através da coluna"variáveis na solução" e da coluna "bj". O valor da coluna bj é 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 databela, a "variável na solução" é X1 e o valor de bj é 24. Isso significa que X1 = 24 nestasolução e, da mesma forma, X2 = 16 e X3 = 3. As variáveis que não aparecem na coluna"variáveis na solução" (no caso, XA e XB) valem 0 (zero).

Nas linhas seguintes temos os coeficientes de cada variável, retirados diretamente domodelo matemático, sendo que cada linha é relativa a uma restrição. Note que, como asvariáveis na solução são as variáveis de folga, o valor da coluna bj indica os recursosdisponí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 unidadedesta variável. Já a linha CZ indica quanto se acrescenta na função objetivo por aumentaruma 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 (XS1 a XS3),os coeficientes das restrições sempre são: 1 (um) quando a linha e coluna tem o mesmo nomeda variável representado e 0 (zero) nas outras.

Linha C-ZLinha Z

310010XS301601024XS20

2400164XS10

bj / aijbjXS3XS2XS1XBXAVariáveisna Solução

cj

Linha0006080Linha C

Dito isto, é necessário iniciar o cáculo do Simplex, que se inicial com o cálculo dalinha 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 XA, deve-se multiplicar, em cada linha de restrição, o valor docoeficiente nesta coluna pelo cj da linha. Após a multiplicação, soma-se todos os resultados eeste é o valor de Z da coluna XA. Por exemplo: Z da coluna XA = 4*0 + 4*0 + 0*0 = 0.

Deve-se repetir o processo para todas as colunas de variáveis e para a coluna bj. Oresultado está apresentado na tabela seguinte:

Pesquisa Operacional 6Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 55

Page 56: Pesquisa Operacional 1 - caetano.eng.br

Passo 1: multiplicando os elementos da linha j pelo valor de cj (indicação da operação dentrodos parênteses, lembrando que a multiplicação é pelo valor cj da linha, mas no caso desteprimeiro tableau, os cj são todos zero)

Linha C-ZLinha Z

3 (* 0)1 (* 0)0 (* 0) 0 (* 0)1 (* 0)0 (* 0)XS3016 (* 0) 0 (* 0) 1 (* 0)0 (* 0) 2 (* 0)4 (* 0)XS2024 (* 0) 0 (* 0) 0 (* 0) 1 (* 0) 6 (* 0) 4 (* 0)XS10

bj / aijbjXS3XS2XS1XBXAVariáveisna Solução

cj

Linha0006080Linha C

Passo 2: Somando os resultados coluna a coluna (resultado dentro dos parênteses)

Linha C-Z0+0+00+0+00+0+00+0+00+0+00+0+0Linha Z3 (0)1 (0)0 (0) 0 (0)1 (0)0 (0)XS3016 (0) 0 (0) 1 (0)0 (0) 2 (0)4 (0)XS2024 (0) 0 (0) 0 (0) 1 (0) 6 (0) 4 (0)XS10

bj / aijbjXS3XS2XS1XBXAVariáveisna Solução

cj

Linha0006080Linha C

Passo 3: Resultado da linha Z calculado

Linha C-Z000000Linha Z310010XS301601024XS202400164XS10

bj / aijbjXS3XS2XS1XBXAVariáveisna Solução

cj

Linha0006080Linha C

O cálculo da linha C-Z é mais simples: basta subtrair o valor de Z correspondente acada variável do coeficiente da variável na função objetivo (Linha C):

Passo 4: Calculando C-Z

0-00-00-060-080-0Linha C-Z000000Linha Z310010XS30

1601024XS202400164XS10

bj / aijbjXS3XS2XS1XBXAVariáveisna Solução

cj

Linha0006080Linha C

Pesquisa Operacional 7Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 56

Page 57: Pesquisa Operacional 1 - caetano.eng.br

Passo 5: C-Z calculado

0006080Linha C-Z000000Linha Z310010XS30

1601024XS202400164XS10

bj / aijbjXS3XS2XS1XBXAVariáveisna Solução

cj

Linha0006080Linha C

Agora o tableau está completo, valendo ressaltar que o valor no cruzamento da colunabj com a Linha Z representa o valor da função objetivo para a solução atual. Mas comosaber se esta solução, na qual XA=0 e XB=0, é uma solução ótima?

Bem, a linha C-Z indica o quanto é possível aumentar na função objetivo com oacréscimo de uma unidade em uma dada variável; assim, enquanto houver valores positivosnesta linha, ainda não se chegou à solução ótima. A solução ótima terá sido encontradaquando 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 osvalores 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 XA e do XB,indicando que ainda é possível melhorar a função objetivo, aumentando os valores de XA eXB (atualmente iguais a zero)

3.1.2. Construção do Segundo Tableau

Como dito antes, a idéia do Simplex é procurar qual a combinação de variáveis quedevem ser iguais a zero para que a função objetivo seja maximizada. Como determinado nopasso anterior, é necessário aumentar uma ou mais unidades em XA ou XB para que o valor dafunçã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:

1) Uma variável não-básica que se tornará uma variável da solução básica (entra nasolucã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 dasoluçã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 dafunção objetivo). No caso deste problema, essa variável é a XA, que apresenta um incrementode 80 por unidade na função objetivo.

Pesquisa Operacional 8Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 57

Page 58: Pesquisa Operacional 1 - caetano.eng.br

O segundo problema já é um pouco mais complicado, e é agora que a coluna bj/aij

apresenta sua função. Para o cálculo, divide-se o bj de cada linha pelo coeficiente da colunada variável que entra na solução (no caso, XA). Considerando que bj é a quantidade de umdado recurso disponível e aij é a quandidade deste recurso necessária para cada unidade davariá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 bj/aij. A linha que tiver o menorvalor nesta coluna, indicará a variável que sai (veja na coluna Variáveis na Solução).

Passo 6: Calculando bj/aij

0006080Linha C-Z000000Linha Z

3/0310010XS3016/41601024XS2024/42400164XS10

bj / aijbjXS3XS2XS1XBXAVariáveis naSolução

cj

Linha0006080Linha C

| |Variável que Entra Valor de bj

Passo 7: Com bj/aij, identificada variável que sai (menor valor maior que zero da coluna bj/aij)

0006080Linha C-Z000000Linha Z

∫310010XS3041601024XS2062400164XS10

bj / aijbjXS3XS2XS1XBXAVariáveis naSolução

cj

Linha0006080Linha C

| |Variável que Entra Valor de bj

Ou seja, como o menor valor de bj/aij é 4, a variável que sai é a XS2, entrando avariável XA em seu lugar. A linha da variável que sai recebe o nome de "linha principal" e oelemento no cruzamento da coluna da variável que entra com a linha principal é chamado de"elemento pivô", sendo que neste caso este elemento vale 4.

Agora, XS2 deve ser substituído por XA (lembrando de substituir cj pelo coeficiente davariável que entra na função objetivo, no caso, o 80 que está sobre o XA), além de apagartodos os valores da coluna bj/aij, das linhas Z e C-X e, em seguida, será necessário recalculartodas as linhas de restrição do tableau. O objetivo é conseguir que a propriedade de existir "1"na célula do cruzamento da variável na solução com sua coluna e "0" nas células de

Pesquisa Operacional 9Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 58

Page 59: Pesquisa Operacional 1 - caetano.eng.br

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ô, fazendoaparecer um "1" no cruzamento da linha da variável que entrou na solução (XA) com a colunada variável (no caso, XA):

Passo 8: Recalculando a linha principal

Linha C-ZLinha Z

310010XS3016/40/41/40/42/44/4XA802400164XS10

bj / aijbjXS3XS2XS1XBXAVariáveis naSolução

cj

Linha0006080Linha C

Passo 9: Linha principal recalculada - note que na linha/coluna XA, a célula vale 1.

Linha C-ZLinha Z

310010XS30401/401/21XA80

2400164XS10

bj / aijbjXS3XS2XS1XBXAVariáveis naSolução

cj

Linha0006080Linha C

O passo seguinte é recalcular as outras linhas para que as outras linhas da coluna XAvalham 0 (zero). Neste caso, as outras linhas são referentes às variáveis XS1 e XS3.

Recalculando XS1:

Primeiramente, determina-se o pivo da linha da variável XS1, que é o cruzamento dalinha de XS1 com a coluna da variável que está entrando, no caso, XA. No caso, este pivôtambém vale 4.

Passo 10: Pivô da linha da variável XS1

Linha C-ZLinha Z

310010XS30401/401/21XA80

2400164XS10

bj / aijbjXS3XS2XS1XBXAVariáveis naSolução

cj

Linha0006080Linha C

Pesquisa Operacional 10Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 59

Page 60: Pesquisa Operacional 1 - caetano.eng.br

A idéia é, então, subtrair de cada elemento da linha XS1 o valor do pivô desta linha(pivô = 4) multiplicado pelo elemento correspondente da linha principal, como indicado notableau abaixo:

Passo 11: Recalculando a linha da variável XS1

Linha C-ZLinha Z

310010XS30401/401/21XA80

24 -4*40 -4*00 -4*1/41 -4*06 -4*1/24 -4*1XS10

bj / aijbjXS3XS2XS1XBXAVariáveisna Solução

cj

Linha0006080Linha C

Passo 12: Linha da variável XS1 recalculada

Linha C-ZLinha Z

310010XS30401/401/21XA8080-1140XS10

bj / aijbjXS3XS2XS1XBXAVariáveisna Solução

cj

Linha0006080Linha C

Recalculando XS3:

Novamente, determina-se o pivo da linha, agora da variável XS3, que é o cruzamentoda linha de XS3 com a coluna da variável que está entrando, no caso, XA. No caso, este pivôvale 0.

Passo 13: Determinação do pivô da linha XS2

Linha C-ZLinha Z

310010XS30401/401/21XA8080-1140XS10

bj / aijbjXS3XS2XS1XBXAVariáveisna

Solução

cj

Linha0006080Linha C

Mais uma vez, subtrai-se de cada elemento da linha XS3 o valor do pivô desta linhamultiplicado pelo elemento correspondente da linha principal, como indicado abaixo:

Pesquisa Operacional 11Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 60

Page 61: Pesquisa Operacional 1 - caetano.eng.br

Passo 14: Recalculando a linha da variável XS3

Linha C-ZLinha Z

3 -0*41 -0*00 -0*1/40 -0*01 -0*1/20 -0*1XS30401/401/21XA8080-1140XS10

bj / aijbjXS3XS2XS1XBXAVariáveisna Solução

cj

Linha0006080Linha C

Passo 15: Linha da variável XS3 recalculada

Linha C-ZLinha Z

310010XS30401/401/21XA8080-1140XS10

bj / aijbjXS3XS2XS1XBXAVariáveisna Solução

cj

Linha0006080Linha C

Agora o tableau está atualizado e é possível recalcular as linhas Z e C-Z:

Passo 16: Calculando a nova linha Z

Linha C-Z0+320+00+0+00+20+00+0+00+40+00+80+0Linha Z3 (*0) 1 (*0) 0 (*0) 0 (*0) 1 (*0) 0 (*0)XS30

4 (*80)0 (*80)1/4(*80) 0 (*80) 1/2(*80)1(*80)XA808 (*0)0 (*0) -1 (*0) 1 (*0) 4 (*0)0 (*0)XS10

bj / aijbjXS3XS2XS1XBXAVar. naSolução

cj

Linha0006080Linha C

Passo 17: Linha Z calculada e calculando a nova linha C-Z

0-00-200-060-4080-80Linha C-Z32002004080Linha Z

310010XS30401/4 01/2 1XA8080-1140XS10

bj / aijbjXS3XS2XS1XBXAVar. naSolução

cj

Linha0006080Linha C

Pesquisa Operacional 12Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 61

Page 62: Pesquisa Operacional 1 - caetano.eng.br

Passo 18: Tableau 2 finalizado

0-200200Linha C-Z32002004080Linha Z

310010XS30401/4 01/2 1XA8080-1140XS10

bj / aijbjXS3XS2XS1XBXAVar. naSolução

cj

Linha0006080Linha C

3.1.3. Construção do Terceiro Tableau

Para a construção do terceiro tableau, novamente será necessário identificar a variávelque vai entrar na solução e a variável que vai sair da solução. O C-Z mais alto é agora o davariável XB, sendo ela a entrar na solução. Para identificar a variável que sai, é necessáriocalcular os bj/aij de cada linha:

Passo 19: Indicação da variável que entra e variável que sai

0-200200Linha C-Z32002004080Linha Z

3/1 = 3310010XS304/0,5 = 8401/4 01/2 1XA808/4 = 280-1140XS10

bj / aijbjXS3XS2XS1XBXAVar. naSolução

cj

Linha0006080Linha C

O menor valor de bj/aij foi 2, na linha de XS1. Assim, é esta a variável que sai, comoindicado 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 cj, eliminação dosconteúdos da coluna bj/aij 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 20: Cálculo da nova linha principal

Linha C-ZLinha Z

310010XS30401/4 01/2 1XA80

8/4=20/4=0-1/41/44/4=10/4=0XB60

bj / aijbjXS3XS2XS1XBXAVar. naSolução

cj

Linha0006080Linha C

Pesquisa Operacional 13Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 62

Page 63: Pesquisa Operacional 1 - caetano.eng.br

Passo 21: Linha principal já recalculada

Linha C-ZLinha Z

310010XS30401/4 01/2 1XA8020-1/41/410XB60

bj / aijbjXS3XS2XS1XBXAVar. naSolução

cj

Linha0006080Linha C

O "1" no cruzamento XB já apareceu. Agora é preciso ajustar as outras linhas paraque os "0" apareçam nas outras linhas desta coluna. Como o pivô da linha XA é 1/2, a linhaXA será recalculada subtraindo de cada elemento dela o seu pivô multiplicado pelo elementoda linha principal:

Passo 22: Recalculando a linha XA

Linha C-ZLinha Z

310010XS304 -1/2*20 -1/2*01/4 -1/2*-1/40 -1/2*1/41/2 -1/2*11 -1/2*0XA80

20-1/41/410XB60

bj / aijbjXS3XS2XS1XBXAVar. naSolução

cj

Linha0006080Linha C

Passo 23: Linha XA recalculada

Linha C-ZLinha Z

310010XS30303/8 -1/801XA8020-1/41/410XB60

bj / aijbjXS3XS2XS1XBXAVar. naSolução

cj

Linha0006080Linha C

Pesquisa Operacional 14Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 63

Page 64: Pesquisa Operacional 1 - caetano.eng.br

Na linha XS3, o pivô é o 1. A linha XS3 será recalculada subtraindo de cada elementodela o seu pivô multiplicado pelo elemento da linha principal:

Passo 24: Recalculando a linha XS3

Linha C-ZLinha Z

3 -1*21 -1*00 -1*-1/40 -1*1/41 -1*10 -1*0XS30303/8 -1/801XA8020-1/41/410XB60

bj / aijbjXS3XS2XS1XBXAVar. naSolução

cj

Linha0006080Linha C

Passo 25: Linha XS3 recalculada

Linha C-ZLinha Z

111/4-1/400XS30303/8 -1/801XA8020-1/41/410XB60

bj / aijbjXS3XS2XS1XBXAVar. naSolução

cj

Linha0006080Linha C

Agora o tableau está atualizado e é possível recalcular a linha Z e C-Z:

Passo 26: Calculando a nova linha Z

Linha C-Z120+240+00+0+0-15+30+015-10+060+0+00+80+0Linha Z

1 (*0)1 (*0) 1/4 (*0) -1/4(*0) 0 (*0) 0 (*0)XS303 (*80)0 (*80)3/8 (*80)-1/8(*80)0 (*80)1 (*80) XA802 (*60)0 (*60)-1/4(*60) 1/4(*60) 1 (*60) 0 (*60)XB60

bj / aijbjXS3XS2XS1XBXAVar. naSolução

cj

Linha0006080Linha C

Passo 27: Calculando a nova linha C-Z

0-00-150-560-6080-80Linha C-Z36001556080Linha Z

111/4-1/400XS30303/8-1/801XA8020-1/4 1/4 10XB60

bj /aij

bjXS3XS2XS1XBXAVar. naSolução

cj

Linha

0006080Linha C

Pesquisa Operacional 15Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 64

Page 65: Pesquisa Operacional 1 - caetano.eng.br

Passo 28: Tableau final

0-15-500LinhaC-Z

36001556080Linha Z111/4-1/400XS30303/8-1/801XA8020-1/4 1/4 10XB60

bj / aijbjXS3XS2XS1XBXAVar. naSolução

cj

Linha0006080LinhaC

Como na linha C-Z não há qualquer valor maior que zero, esta é a solução ótima. Asolução é indicada pelas variáveis na coluna "Variáveis na Solução" e seus respectivosvalores estão na coluna bj, sendo que as variáveis que não estão em nenhuma linha da tabelatêm, por definição, valor igual a zero.

Assim, a solução ótima para o problema é:

XA = 3XB=2XS1 = 0XS2 = 0XS3 = 1

O que significa que serão produzidas 3 unidades de A, 2 unidades de B, esgotando ashoras de máquina 1 e 2 disponíveis, mas não atendendo completamente a demanda de B, jáque o valor de XS3 é 1 (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 bj

com a linha Z: 360.

Bibliografia

MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. ThomsonPioneira, 2007.

Pesquisa Operacional 16Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 65

Page 66: Pesquisa Operacional 1 - caetano.eng.br

Unidade 2: Método Simplex e Ferramentas ComputacionaisTó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 "bemcomportados", isto é, que de início já possuiam praticamente todas as características para quefuncionem bem com o Método Simplex. Adicionalmente, já foi apresentada a maneira delidar com problemas em que há restrições do tipo ü, que foram transformadas em restriçõesdo tipo "=".

Entretanto, outras situações podem surgir: restrições com restrições do tipo maior ouigual, igualdades, problemas de minimização, "lado direito" de eqüações negativo... estassituações igualmente vão exigir que algum "truque" seja usado, similar ao que aconteceu comas variáveis de folga nas restrições do tipo ü.

Nesta aula serão apresentados alguns destes truques, em que situações eles são usadose a forma de aplicá-los.

1. Lado Direito das Restrições Negativo

Considere que todas as variáveis de uma restrição sejam movidas o lado esquerdo dosinal 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 sechama de "lado direito". Este é o valor que não poderá ser negativo e, se for, uma medidaprecisará ser tomada.

Apenas para elucidar o conceito de "lado direito", segue um exemplo abaixo:

xA + xB + 7 = yA + yB

||

xA + xB - yA - yB = -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? Naverdade, isso é uma conseqüência direta da condição de não negatividade e da maneira comque se determina a solução incial; mas, simplificadamente, pode-se dizer simplesmente que acoluna bj (o lado direito das restrições) nunca pode conter um número negativo, porque ela

Pesquisa Operacional 1Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 66

Page 67: Pesquisa Operacional 1 - caetano.eng.br

representa os recursos que estão sobrando, ou seja, os recursos disponíveis... e não faz sentidofalar em recursos disponíveis negativos!

Assim, quando uma situação deste tipo ocorrer, será necessária uma correção; estacorreção é simples: basta multiplicar a equação ou inequação por -1. Observe equaçãoapresentada anteriormente:

xA + xB - yA - yB = -7

O lado direito tem o valor negativo -7, e isso não é aceitável. Neste caso, bastamultiplicar a restrição toda por -1, invertendo todos os sinais e tornando o lado direitopositivo:

[ xA + xB - yA - yB = -7 ] * (-1) => - xA - xB + yA + yB = 7

Mais alguns exemplos seguem. Se, ao modelar, houver equações do seguinte tipo:

5XA - 6XB ü - 17 2XA + 1XB ¶ - 3- 4XA - 4XB = - 16

Basta multiplicar todas as restrições por -1, lembrando de inverter o sinal dasdesigualdades:

[ 5XA - 6XB ü - 17 ] *(-1) => -5XA + 6XB ¶ +17[ 2XA + 1XB ¶ - 3 ] *(-1) => -2XA - 1XB ü + 3[- 4XA - 4XB = - 16 ] *(-1) => +4XA + 4XB = + 16

É importante lembrar que apenas o lado direito não pode ser negativo. Oscoeficientes das variáveis podem.

2. Restrições do Tipo ¶

Este tipo de restrição é bastante comum em problemas de minimização, emboraapareça também em alguns problemas de maximização.

Assim como foi necessário fazer modificações nas restrições do tipo ü , com asvariáveis de folga, no caso das restrições do tipo ¶ também será necessário algum tipo deajuste.

Considere, por exemplo, a restrição abaixo:

4XA + 10XB ¶ 45

Pesquisa Operacional 2Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 67

Page 68: Pesquisa Operacional 1 - caetano.eng.br

Qualquer valor de XA e XB que tornem a soma maior ou igual a 45 terá resolvido oproblema. Por exemplo, substituindo os valores XA=4 e XB=3:

4*4 + 10*3 = 16 + 30 = 46 que é maior ou igual a 45.

Assim, pode-se dizer que XA=4 e XB=3 é uma solução possível para o problema. Mas,quando se transforma a inequação em uma equação, o problema surge:

4XA + 10XB = 45

Esta equação não mais admite XA=4 e XB=3 como resposta (porque 46 não é igual a45), significando que modelagem, desta forma, não é mais capaz de representar o problemaoriginal... e, devido ao objetivo final - que é o de resolver o problema real - não se poderealizar mudanças na modelagem que a torne incapaz de representar o problema! A soluçãoaqui, similar à solução para a restrição do tipo ü, é usar uma variável a mais, só que agora elaaparecerá do lado direito:

4XA + 10XB ¶ 45 => 4XA + 10XB = 45 + XE

Sempre será possível escolher um valor de XE que torne a igualdade verdadeira. Estavariável é chamada de variável de excesso, que pode ser encarada como uma variável de folganegativa, ou uma "variável de falta":

4XA + 10XB = 45 + XE => 4XA + 10XB -XE = 45

Infelizmente isso não resolve totalmente o problema; isso ocorre porque, no momentode terminar a solução inicial, quando as variáveis de decisão (XA e XB, no caso) serãoconsideradas iguais a zero, será encontrado um valor negativo para a variável XE, o que não éadmissível. Observe o que ocorre ao considerar XA = XB = 0:

4XA + 10XB -XE = 45 => 4*0 + 10*0 -XE = 45 => -XE = 45 => XE = -45

XE não pode ter um valor negativo! Como resolver este novo problema? Neste caso otruque é inserir outra variável e indicar que a variável de excesso também faz parte dasolução não-básica, ou seja, que XA = XB = XE = 0:

4XA + 10XB -XE + A1 = 45 => 0 + A1 = 45 => A1 = 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 estarazão, este tipo de variável é chamada de variável artificial. Estas variáveis terão umaimplicação na resolução do Simplex, mas este assunto não será estudado a fundo nestadisciplina.

Pesquisa Operacional 3Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 68

Page 69: Pesquisa Operacional 1 - caetano.eng.br

3. Restrições do Tipo =

Aparentemente, como se deseja restrições de igualdade, a impressão que se teminicialmente é 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 oSimplexe e, observe o que ocorre quando se zera os valores as variáveis de decisão (XA e XB,neste caso) em uma restrição de igualdade:

4XA + 4XB = 16 => 4*0 + 4*0 = 16 => 0 = 16 !?!?!?!?

Não é preciso muito esforço para perceber que este resultado é absurdo. Assim, parapossibilitar 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:

4XA + 4XB + A1 = 16 => 4*0 + 4*0 + A1 = 16 => 0 = 16 - A1 => A1 = 16 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 0 nasvariáveis de folga acrescentadas ao modelo, também as variáveis de excesso entrarão naFunção Objetivo com coeficiente zero, pela mesma razão anterior: para que todas as variáveisapareçam na Função Objetivo.

Mas, e as variáveis artificiais? Bem, como o próprio nome diz, estas variáveis nãofazem parte do problema, são apenas um artifício para facilitar o cálculo de uma soluçãoinicial de forma simples, para que possamos dar partida no Simplex. Por esta razão, é precisogarantir no método Simplex que estas variáveis sejam retiradas da base.

Para fazer isso, existem dois mecanismos:

1) O Método do M grande, onde as variáveis artificiais entram "prejudicando" aFunção Objetivo na proporção de um valor M maior que qualquer outro valor existente noproblema;

2) O Método das Duas Fases, sendo que na primeira fase se substitui a funçãoobjetivo pela minimização da soma de todas as variáveis artificiais e, ao obter o resultadofinal, 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 noprocedimento de cálculo. O segundo método é um pouco mais longo (pois envolve duas

Pesquisa Operacional 4Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 69

Page 70: Pesquisa Operacional 1 - caetano.eng.br

soluções seqüenciais), mas o procedimento não será diferente do que foi visto no cálculo doSimplex tradicional. Ambos os métodos fogem ao escopo deste curso.

4.1. Problemas de Minimização

Até agora, entretanto, nada foi dito sobre problemas de minimização. O métodoSimplex parece resolver muito bem problemas de maximização, mas não há nada parecidoapra minimização? Na verdade, é possível alterar um pouco o procedimento do Simplex deforma que sua sistemática minimize o valor da função objetivo. Entretanto, há umamodificaçã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 demaximização que seja equivalente a ele. Isto é simples: basta multiplicar a função objetivopor -1. Assim, é possível dizer que:

[MIN] 4XA + 4XB => [MAX] - 4XA - 4XB

É importante ressaltar que os valores determinados para as variáveis de decisão, apóseste 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 acoluna bj do tableau) estará invertido, ou seja, é preciso multiplicá-lo por -1 para obter o valorcorreto da função objetivo original.

Exercício L3

Modele e apresente na forma padrão (pronto para o Simplex) o seguinte problemaabaixo:

1) Para realizar a instalação de terminais de computador, uma empresa pode usar osesforços de dois funcionários: Pedro e João. O salário de Pedro é R$ 25,00 por hora e o deJoão é de R$ 40,00 por hora. Pedro consegue instalar um terminal em meia hora (0,5 hora) eJoão em 15 minutos (0,25 hora). É necessário instalar um total de 40 terminais, sendo quePedro deve instalar pelo menos 10 deles. Sabe-se que nenhum dos dois funcionários podetrabalhar mais do que 8 horas em um dia. Deseja-se minimizar o custo total da instalação.

1. 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. ThomsonPioneira, 2007.

Pesquisa Operacional 5Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 70

Page 71: Pesquisa Operacional 1 - caetano.eng.br

Notas da Aula 09: Usando o Método Simplex das Duas FasesProf. Daniel Caetano

Objetivo: Apresentar o Método Simplex com Duas Fases para resolver problemascom variáveis artificiais.

Introdução

Nas aulas anteriores, foram apresentados diversos artifícios matemáticos para quediversos tipos de problemas possam ser modelados e resolvidos pelo algoritmo Simplex.

Entretanto, alguns daqueles artifícios provocavam o aparecimento das chamadasvariáveis artificiais, que não possuem qualquer significado físico e precisam ser totalmenteeliminadas de um problema para que ele seja resolvido a contento.

Infelizmente, o Médoto Simplex não elimina naturalmente estas variáveis, entãoprecisaremos fazer um pequeno truque, que é o de executar duas vezes o Simplex: a primeiravez 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.

1. O Modelo Matemático na Forma Padrão

Suponhamos que a modelagem de um problema já tenha sido resolvida, e o resultadoseja o representado abaixo:

Função Objetivo: [MAX] 4 * xA + 3 * xB

Sujeito a:2 * xA + 1 * xB = 151 * xB ¶ 4

Como visto anteriomente, as restrições do tipo "=" ganham uma variável artificial e asrestrições do tipo "¶" ganham uma variável de excesso e uma variável artificial. Assim, omodelo pode ser reescrito como:

F.O.: [MAX] 4 * xA + 3 * xB

S.A.: 2 * xA + 1 * xB + 1 * A1 = 151 * xB - 1 * xE + 1 * A2 = 4

O que, colocando finalmente na forma padrão, fica:

Pesquisa Operacional I 1Primeiro Semestre de 2007

2008_SI_-_PesquisaOperacional_I_-_o2007 71

Page 72: Pesquisa Operacional 1 - caetano.eng.br

F.O.: [MAX] 4 * xA + 3 * xB + 0 * xE + 0 * A1 + 0 * A2

S.A.: 2 * xA + 1 * xB + 0 * xE + 1 * A1 + 0 * A2 = 150 * xA + 1 * xB - 1 * xE + 0 * A1 + 1 * A2 = 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. Mascomo fazer isso? Pensemos assim: se o valor das variáveis artificiais fosse 0 (zero), isso nãoseria o mesmo que se elas não estivessem na solução? Sim, seria! Então o truque é achar umasoluçã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] 1 * A1 + 1 * A2

Observe que o menor valor possível para esta função objetivo é zero, considerandoque nenhuma variável pode ter valor negativo, quando ambas as variáveis A1 e A2 valeremzero. Inicialmente vamos inverter o sinal desta função objetivo, para tornar o nosso problemaum problema de maximização:

F.O.: [MAX] - 1 * A1 - 1 * A2

E vamos acrescentar as variáveis faltantes: xA, xB e xE:

F.O.: [MAX] 0 * xA + 0 * xB + 0 * xE - 1 * A1 - 1 * A2

Colocando esta nova função objetivo juntamente com as restrições originais, temos omodelo matemático a ser resolvido na primeira fase:

F.O.: [MAX] 0 * xA + 0 * xB + 0 * xE - 1 * A1 - 1 * A2

S.A.: 2 * xA + 1 * xB + 0 * xE + 1 * A1 + 0 * A2 = 150 * xA + 1 * xB - 1 * xE + 0 * A1 + 1 * A2 = 4

Sendo a solução inicial XA=XB=XE=0, A1=15 e A2=4.

2.1. Construção do Primeiro Tableau

O primeiro passo é construir o primeiro Tableau. Lembremos que o número de linhasserá o número de restrições mais quatro. Assim, em nosso problema teremos uma tabela de 6linhas. O número de colunas é igual ao número de variáveis mais quatro, ou seja, em nossocaso, o tableau terá 9 colunas. O aspecto do primeiro tableau deve ser:

Pesquisa Operacional I 2Primeiro Semestre de 2007

2008_SI_-_PesquisaOperacional_I_-_o2007 72

Page 73: Pesquisa Operacional 1 - caetano.eng.br

Linha C-ZLinha Z

410-110A201501012A10

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha-1-1000

Calculemos as linhas Z e C-Z:

00122Linha C-Z-19-1-11-2-2Linha Z410-110A2-11501012A1-1

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha-1-1000

A variável que entra pode ser tanto a xA como a xB, dado que ambas possuem o maiorvalor. Escolheremos aqui a variável xA, e em seguida calcularemos a coluna bj/aij.

00122Linha C-Z-19-1-11-2-2Linha Z

inf.410-110A2-17,51501012A1-1

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha-1-1000

Como 7,5 é menor que infinito, A1 é a variável que sai:

00122Linha C-Z-19-1-11-2-2Linha Z

inf.410-110A2-17,51501012A1-1

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha-1-1000

Pesquisa Operacional I 3Primeiro Semestre de 2007

2008_SI_-_PesquisaOperacional_I_-_o2007 73

Page 74: Pesquisa Operacional 1 - caetano.eng.br

2.2. Construção do Segundo Tableau

Primeiramente copiamos a maior parte das informações, menos os dados e a variávelque saiu:

Linha C-ZLinha Z

A2-1

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha-1-1000

Acrescentamos a variável que entrou no lugar da que saiu, preenchendo também o cj,usando para isso o valor que está acima da variável que entra na tabela:

Linha C-ZLinha Z

A2-1XA0

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha-1-1000

Agora preencheremos a linha da variável que entrou. Note que a coluna da variávelque entrou deve ter "1" na linha onde esta variável aparece e "0" em todas as outras linhas:

Linha C-ZLinha Z

0A2-11XA0

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha-1-1000

No tableau anterior, é possível verificar que, na posição onde preciso de "1" (na linhaonde entrou XA), tenho um "2":

Primeiro Tableau

7,51501012A1-1

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Pesquisa Operacional I 4Primeiro Semestre de 2007

2008_SI_-_PesquisaOperacional_I_-_o2007 74

Page 75: Pesquisa Operacional 1 - caetano.eng.br

Para que o valor "2" vire "1", é preciso dividir esta linha toda por 2:

15/201/201/21bjA2A1XEXBXA

E agora posso colocá-la no segundo tableau:

Linha C-ZLinha Z

0A2-115/201/201/21XA0

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha-1-1000

Para a outra linha, entretanto, precisamos de um "0"... e no primeiro tableau játínhamos um "0"! Basta então copiar a linha:

Primeiro Tableau

inf.410-110A2-1

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Copiando para o segundo Tableau, temos:

Linha C-ZLinha Z

410-110A2-115/201/201/21XA0

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha-1-1000

Calculemos agora as linhas Z e C-Z:

0-1-110Linha C-Z-4-101-10Linha Z410-110A2-1

15/201/201/21XA0

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha-1-1000

Assim, é possível verificar qual é a variável que entra: XB. Calculando a coluna bj/aij:

Pesquisa Operacional I 5Primeiro Semestre de 2007

2008_SI_-_PesquisaOperacional_I_-_o2007 75

Page 76: Pesquisa Operacional 1 - caetano.eng.br

0-1-110Linha C-Z-4-101-10Linha Z

4410-110A2-11515/201/201/21XA0

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha-1-1000

Como 4 é o menor valor, então A2 é a variável que sai:

0-1-110Linha C-Z-4-101-10Linha Z

4410-110A2-11515/201/201/21XA0

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha-1-1000

2.3. Construção do Terceiro Tableau

Primeiramente copiamos a maior parte das informações, menos os dados e a variávelque saiu:

Linha C-ZLinha Z

XA0

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha-1-1000

Acrescentamos a variável que entrou no lugar da que saiu, preenchendo também o cj,usando para isso o valor que está acima da variável que entra na tabela:

Linha C-ZLinha Z

XB0XA0

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha-1-1000

Pesquisa Operacional I 6Primeiro Semestre de 2007

2008_SI_-_PesquisaOperacional_I_-_o2007 76

Page 77: Pesquisa Operacional 1 - caetano.eng.br

Agora preencheremos a linha da variável que entrou. Note que a coluna da variávelque entrou deve ter "1" na linha onde esta variável aparece e "0" em todas as outras linhas:

Linha C-ZLinha Z

1XB00XA0

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha-1-1000

No tableau anterior, é possível verificar que, na posição onde preciso de "1" (na linhaonde entrou XB), já existe um "1"! Basta então copiar a linha:

Linha C-ZLinha Z

410-110XB00XA0

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha-1-1000

Para a outra linha, entretanto, precisamos de um "0"... mas no tableau anterior temos ovalor "1/2". Será, então, necessário dividir a linha da variável que entrou por "-1/2" eposteriormente somá-la à linha que entrará na posição de XA:Do Segundo Tableau

1515/201/201/21XA0

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha da variável que entrou no Tableau atual:

410-110XB0

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha da variável que entrou no Tableau atual multiplicada por -1/2...

-2-1/201/2-1/20bj / aijbjA2A1XEXBXA

Somando com a linha do segundo Tableau:

11/2-1/21/21/201bj / aijbjA2A1XEXBXA

Pesquisa Operacional I 7Primeiro Semestre de 2007

2008_SI_-_PesquisaOperacional_I_-_o2007 77

Page 78: Pesquisa Operacional 1 - caetano.eng.br

Agora basta copiar estes valores no tabelau atual:

Linha C-ZLinha Z

410-110XB011/2-1/21/21/201XA0

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha-1-1000

Agora é só calcular as linhas Z e C-Z:

-1-1000Linha C-Z000000Linha Z410-110XB0

11/2-1/21/21/201XA0

bj / aijbjA2A1XEXBXAVariáveisna Solução

cj

Linha-1-1000

Pronto! Primeira fase terminada e, observe, na solução atual temos apenas as variáveisXA e XB: A1 e A2 ficaram com valores zero!

Mas o problema acabou? Não! Terminamos apenas a primeira fase, que tinha objetivode eliminar as variáveis artificiais. Agora vamos para a segunda fase, que tem o objeito deresolver, 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, mascom algumas pequenas modificações:

1) A linha da função objetivo deve ser substituída pela função objetivo original, F.O.: [MAX] 4 * xA + 3 * xB + 0 * xE + 0 * A1 + 0 * A2

Lembrando de corrigir os valores da coluna cj.2) As colunas relativas a A1 e A2 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:

Pesquisa Operacional I 8Primeiro Semestre de 2007

2008_SI_-_PesquisaOperacional_I_-_o2007 78

Page 79: Pesquisa Operacional 1 - caetano.eng.br

Linha C-ZLinha Z

4-110XB311/21/201XA4

bj / aijbjXEXBXAVariáveisna Solução

cj

Linha034

Este é o nosso primeiro tableau da segunda fase. Vamos calcular as linhas Z e C-Z:

100Linha C-Z34-134Linha Z4-110XB3

11/21/201XA4

bj / aijbjXEXBXAVariáveisna Solução

cj

Linha034

Pronto, pelo cálculo, determinamos que a variável que entra é a variável XE.Calculemos a coluna bj/aij:

100Linha C-Z34-134Linha Z

-44-110XB31111/21/201XA4

bj / aijbjXEXBXAVariáveisna Solução

cj

Linha034

O menor valor, em princípio, é o -4. Entretanto, não posso considerar valoresnegativos neste campo. Assim, o valor considerado será o 11 e a variável que sai é XA:

100Linha C-Z34-134Linha Z

-44-110XB31111/21/201XA4

bj / aijbjXEXBXAVariáveisna Solução

cj

Linha034

Pesquisa Operacional I 9Primeiro Semestre de 2007

2008_SI_-_PesquisaOperacional_I_-_o2007 79

Page 80: Pesquisa Operacional 1 - caetano.eng.br

Assim, teremos o primeiro passo do próximo tableau:

Linha C-ZLinha Z

XB3XE0

bj / aijbjXEXBXAVariáveisna Solução

cj

Linha034

Na coluna XE, precisamos de 1 na linha de XE e 0 nas outras:

Linha C-ZLinha Z

0XB31XE0

bj / aijbjXEXBXAVariáveisna Solução

cj

Linha034

Na linha que saiu, tínhamos 1/2 na posição em que precisamos de 1. Assim,multiplicaremos a linha original inteira por 2, ao copiar para o novo tableau:

Linha C-ZLinha Z

0XB311102XE0

bj / aijbjXEXBXAVariáveisna Solução

cj

Linha034

Novamente, para a linha da variável XB precisamos de 0 na linha XE, mas no tableauanterior temos -1 nesta posição. Para eliminar este -1, basta somar à linha anterior os valoresda linha da variável que entrou:

Pesquisa Operacional I 10Primeiro Semestre de 2007

2008_SI_-_PesquisaOperacional_I_-_o2007 80

Page 81: Pesquisa Operacional 1 - caetano.eng.br

Linha do Tableau anterior

-44-110XB3

bj / aijbjXEXBXAVariáveisna Solução

cj

Linha da variável que entrou no tableau atual

11102XE0

bj / aijbjXEXBXAVariáveisna Solução

cj

Somando ambas...

15012bjXEXBXA

Copiando no tableau atual...

Linha C-ZLinha Z

15012XB311102XE0

bj / aijbjXEXBXAVariáveisna Solução

cj

Linha034

Calculemos agora as linhas Z e C-Z:

00-2Linha C-Z45036Linha Z15012XB311102XE0

bj / aijbjXEXBXAVariáveisna Solução

cj

Linha034

Como todos os valores são negativos ou zero, está finalizado o problema, cuja soluçãoé XB = 15, XE = 11 e XA = 0, com valor da função objetivo igual a 45, o que pode serverificado que respeita as restrições do problema original:

Função Objetivo: [MAX] 4 * xA + 3 * xB

Sujeito a:2 * xA + 1 * xB = 151 * xB ¶ 4

Pesquisa Operacional I 11Primeiro Semestre de 2007

2008_SI_-_PesquisaOperacional_I_-_o2007 81

Page 82: Pesquisa Operacional 1 - caetano.eng.br

4. Exercício L4

Resolva o Simplex modelado no exercício L3 (disponível emhttp:/www.caetano.eng.br/aulas/fb/PO/ , no arquivo da aula 8):

F.O.: [MAX]-25*xP - 40*xJ - 0*xE1 - 0*xS1 - 0*xS2 - 0*a1 - 0*a2

S.A.: 2*xP + 4*xJ + 0*xE1+ 0*xS1+ 0*xS2+1*a1 +0*a2 = 402*xP +0*xJ - 1*xE1 + 0*xS1+ 0*xS2+0*a1 +1*a2 = 101*xP +0*xJ + 0*xE1+ 1*xS1+ 0*xS2+0*a1 +0*a2 = 80*xP 1*xJ + 0*xE1+ 0*xS1+ 1*xS2+0*a1 +0*a2 = 8

Entrega na próximas aula. Vale nota.

5. Bibliografia

MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório, 2006.

Pesquisa Operacional I 12Primeiro Semestre de 2007

2008_SI_-_PesquisaOperacional_I_-_o2007 82

Page 83: Pesquisa Operacional 1 - caetano.eng.br

Notas da Aula 10: Resolução da L4Prof. Daniel Caetano

Objetivo: Resolver a quarta lista de exercícios, sedimentando o procedimento decálculo do Método Simplex em Duas Fases.

Resolução do Exercício L4

Resolva o Simplex modelado no exercício L3 (disponível emhttp:/www.caetano.eng.br/aulas/fb/PO/ , no arquivo da aula 8):

F.O.: [MAX]-25*xP - 40*xJ - 0*xE1 - 0*xS1 - 0*xS2 - 0*a1 - 0*a2

S.A.: 2*xP + 4*xJ + 0*xE1+ 0*xS1+ 0*xS2+1*a1 +0*a2 = 402*xP +0*xJ - 1*xE1 + 0*xS1+ 0*xS2+0*a1 +1*a2 = 101*xP +0*xJ + 0*xE1+ 1*xS1+ 0*xS2+0*a1 +0*a2 = 80*xP 1*xJ + 0*xE1+ 0*xS1+ 1*xS2+0*a1 +0*a2 = 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 umafunção objetivo que proporcione sua eliminação. Como visto anteriormente, a função objetivoque torna os valores das variáveis artificiais iguais a zero é, neste caso:

F.O.: [MIN] 0*xP + 0*xJ + 0*xE1+ 0*xS1+ 0*xS2 + 1*a1 + 1*a2

Ou, tornando o problema de maximização:

F.O.: [MAX] 0*xP + 0*xJ + 0*xE1+ 0*xS1+ 0*xS2 - 1*a1 - 1*a2

Considerando o problema originalmente modelado, porém usando a nova funçãoobjetivo, e definindo inicialmente que XP = XJ = XE1 = 0, podemos montar o seguinte tableau:

C-ZZ

80010010XS2080001001XS10101000-102A2-1400100042A1-1

bj/aijbjA2A1XS2XS1XE1XJXPVScj-1-100000

Calculando Z, C-Z e bj/aij temos o tableau completo:

Pesquisa Operacional I 1Primeiro Semestre de 2007

2008_SI_-_PesquisaOperacional_I_-_o2007 83

Page 84: Pesquisa Operacional 1 - caetano.eng.br

0000-144C-Z-50-1-1001-4-4Z

inf.80010010XS20880001001XS105101000-102A2-120400100042A1-1bj/aijbjA2A1XS2XS1XE1XJXPVScj

-1-100000

Como é possível ver, entra a variável XP e sai a variável A2. A base do próximotableau é, então:

C-ZZ

0XS200XS101XP00A1-1

bj/aijbjA2A1XS2XS1XE1XJXPVScj-1-100000

Calculando a primeira linha, que precisa ser dividida toda por 2 para obter 1 naposição XP x XP:

C-ZZ

0XS200XS10

51/2000-1/201XP00A1-1

bj/aijbjA2A1XS2XS1XE1XJXPVScj-1-100000

Pesquisa Operacional I 2Primeiro Semestre de 2007

2008_SI_-_PesquisaOperacional_I_-_o2007 84

Page 85: Pesquisa Operacional 1 - caetano.eng.br

Calculando as próximas linhas, temos:

C-ZZ

80010010XS203-1/20011/200XS1051/2000-1/201XP030-1100140A1-1

bj/aijbjA2A1XS2XS1XE1XJXPVScj-1-100000

Calculando Z, C-Z e bj/aij temos o tableau pronto:

-2000140C-Z-301-100-1-40Z

880010010XS20inf.3-1/20011/200XS10inf.51/2000-1/201XP07,530-1100140A1-1bj/aijbjA2A1XS2XS1XE1XJXPVScj

-1-100000

Como é possível ver, a variável que entra é XJ e a que sai é XA1. O próximo tableauestá pronto abaixo:

-1-100000C-Z00000000Z1/21/4-1/410-1/400XS203-1/20011/200XS1051/2000-1/201XP015/2-1/41/4001/410XJ0

bj/aijbjA2A1XS2XS1XE1XJXPVScj-1-100000

Onde é possível observar que a 1a. fase terminou. Note que A1 e A2 não estão mais nasoluçã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. Paracontinuar o Simplex, basta substituir a função objetivo do tableau pela original e retirar ascolunas das variáveis artificiais:

F.O.: [MAX]-25*xP - 40*xJ - 0*xE1 - 0*xS1 - 0*xS2 - 0*a1 - 0*a2

Pesquisa Operacional I 3Primeiro Semestre de 2007

2008_SI_-_PesquisaOperacional_I_-_o2007 85

Page 86: Pesquisa Operacional 1 - caetano.eng.br

O tableau fica assim:

C-ZZ

1/210-1/400XS203011/200XS10500-1/201XP-2515/2001/410XJ-40

bj/aijbjXS2XS1XE1XJXPVScj000-40-25

A partir disso podemos calcular Z, C-Z e bj/aij para verificar qual variável entra e qualsai:

00-5/200C-Z-425005/2-40-25Z1/210-1/400XS203011/200XS10500-1/201XP-2515/2001/410XJ-40

bj/aijbjXS2XS1XE1XJXPVScj000-40-25

Como é possível ver, esta já é a solução do problema, pois não é possível melhorar asolução. O resultado final é XJ=7,5 e XP=5, ou seja, é mais econômico colocar o funcionáriomais caro (mas mais produtivo) trabalhando por mais horas. E o custo deste dia de trabalhoserá de R$ 425,00 (lembrando de re-inverter o sinal da função objetivo, já que o problemaoriginal era uma minimização que foi transformada numa maximização).

Bibliografia

MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório, 2006.

Pesquisa Operacional I 4Primeiro Semestre de 2007

2008_SI_-_PesquisaOperacional_I_-_o2007 86

Page 87: Pesquisa Operacional 1 - caetano.eng.br

Unidade 2: Método Simplex e Ferramentas ComputacionaisTópico 8: Ferramentas Computacionais

Prof. Daniel Caetano

Objetivo: Apresentar o uso do Excel/Solver para a resolução de um problema deotimização.

1. Apresentação do Problema

1) Para realizar a instalação de terminais de computador, uma empresa pode usar osesforços de dois funcionários: Pedro e João. O salário de Pedro é R$ 25,00 por hora e o deJoão é de R$ 40,00 por hora. Pedro consegue instalar um terminal em meia hora (0,5 hora) eJoão em 15 minutos (0,25 hora). É necessário instalar um total de 40 terminais, sendo quePedro deve instalar pelo menos 10 deles. Sabe-se que nenhum dos dois funcionários podetrabalhar 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*xP + 40*xJ

S.A.: 2*xP + 4*xJ = 40 <= Restrição do número de máquinas a instalar.2*xP ¶ 10 <= Restrição do mínimo de máquinas para PedroxP ü 8 <= Número máximo de horas de trabalho para PedroxJ ü 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 transformadopara a forma padrão antes de ser fornecido para o computador.

Entretanto, há ferramentas mais simples no mercado, como aquela que vem noMicrosoft Excel, chamada Solver. O Solver é uma biblioteca do Excel que implementaalgoritmos 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.1. Preparando a Planilha para o Uso do Solver

Ao abrir o Excel, surge uma planilha em branco, mas é possível preenchê-la de formaa facilitar o trabalho para seu uso posterior no solver. A idéia é listar primeiramente todas as

Pesquisa Operacional 1Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 87

Page 88: Pesquisa Operacional 1 - caetano.eng.br

variáveis de decisão, com seu nome e valor inicial (normalmente 0), como apresentado na telaa 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, lembrandoque 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), sendoque, no exemplo da figura, Xp é a célula D3 e Xj é a célula D4, fazendo com que a fórmula25*xP + 40*xJ seja:

= 25*D3 + 40*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 3colunas: a primeira contém as fórmulas do lado esquerdo de cada restrição, convertidas para oformato 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 (onúmero).

Pesquisa Operacional 2Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 88

Page 89: Pesquisa Operacional 1 - caetano.eng.br

O lado direito das restrições 2*xP + 4*xJ = 40, 2*xP ¶ 10, xP ü 8 e xJ ü 8 ficam, noformato 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. Noteque os valores das restrições estão em laranja e os limites das restrições estão em roxo.

2.1. Iniciando e Preparando o Solver

Agora que a planilha está pronta, está na hora de iniciar o Solver. O solver se encontrano menu ferramentas, como indicado na figura a seguir:

Pesquisa Operacional 3Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 89

Page 90: Pesquisa Operacional 1 - caetano.eng.br

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 problemaque se deseja resolver, já que o Solver serve para muitos outros tipos de problema. A janelainicial de Opções é:

As mudanças que devem ser feitas são: marcar "Presumir modelo linear" e "Presumirnão negativos". Depois disso, basta clicar no botão OK.

Após isso, será apresentada novamente a janela do Solver. No campo "Definir CélulaDestino", deve-se clicar no botão e indicar a célula em verde. No campo "Igual a" deve-semarcar "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 emamarelo (todas ao mesmo tempo).

No campo "Submeter às Restrições", há um pouco mais de trabalho. Deve-seprimeiramente clicar no botão "Adicionar". A janela abaixo será apresentada:

Pesquisa Operacional 4Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 90

Page 91: Pesquisa Operacional 1 - caetano.eng.br

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 queconté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 nafigura abaixo:

Repentindo o processo para as outras 3 restrições, a janela do solver terá a seguinteaparência:

Neste momento, basta clicar no botão "Resolver". Após isso, aparecerá a seguintejanela:

Após decidir se quer visualizar algum dos relatórios (Resposta, Sensibilidade eLimites), deve-se clicar no botão Ok. Neste ponto, a planilha do Excel mostrará a soluçãofinal, como apresentado na figura a seguir.

Pesquisa Operacional 5Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 91

Page 92: Pesquisa Operacional 1 - caetano.eng.br

Ou seja: a solução é Xp = 5 (Pedro trabalhará 5 horas) e Xj = 7,5 (João trabalhará 7,5horas). O custo final será R$ 425,00. Estes valores também são apresentados no relatório derespostas.

O "Relatório de Sensibilidade" e o "Relatório de Limites" apresentam algumasinformações adicionais sobre variações que poderiam ocorrer sem que a solução fossemodificada.

Pesquisa Operacional 6Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 92

Page 93: Pesquisa Operacional 1 - caetano.eng.br

Unidade 3: Métodos Alternativos de SoluçãoTópico 9a: Problemas Específicos: Problema da Atribuição

Prof. Daniel Caetano

Objetivo: Apresentar a modelagem do Problema da Atribuição como base paraposterior apresentação do algoritmo húngaro.

Bibliografia:- MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed.

Thomson Pioneira, 2007.

Introdução

O Problema da Atribuição/Designação é um problema bastante comum, tratando-se deum caso especial de um problema mais geral, o Problema do Transporte da ProgramaçãoLinear.

Os Problemas de Atribuição/Designação são sempre num formato em que existe umdeterminado número de atividades a serem processadas e um determinado número derecursos para processá-las; o objetivo é atribuir (ou designar) qual atividade será processadapor qual recurso.

Note que este é um tipo genérico de problema; isto significa que os as atividadespodem ser produtos, projetos ou trechos de código, por exemplo. Da mesma forma, osrecursos podem ser equipamentos, equipes de projetistas ou CPUs, por exemplo.

O objetivo neste problema é alocar as atividades aos recursos de processamento deforma a minimizar a soma do custo de cada processamento.

1. Um Problema de Atribuição

Como exemplo, considere o seguinte problema (MOREIRA, 2006, pág. 122,modificado):

Exemplo:

Em uma fábrica temos dois trabalhos T1, T2 e T3, que podem ser processados por 3máquinas diferentes: M1, M2 e M3. Devido à diferenças tecnológicas nas máquinas, o tempo

Pesquisa Operacional 1Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 93

Page 94: Pesquisa Operacional 1 - caetano.eng.br

para que cada uma delas realize cada um dos trabalhos é diferente, estando expressados natabela abaixo:

10129M315912M28510M1

T3T2T1Máquina \ Trabalho

2. Modelagem Matemática do Problema da Atribuição

Considere para a resolução as variáveis de decisão Xij, sendo i o número da máquina ej o número do trabalho: assim, X12 indica se a máquina 1 foi (ou não) atribuída para otrabalho 2; X31 indica se a máquina 3 foi (ou não) atribuída ao trabalho 1. Ou seja: quandouma destas variáveis for 1, houve a atribuição. Se ela for 0, não houve. Exemplos:

Se X12 = 1, a máquina 1 foi atribuída ao trabalho 2.Se X12 = 0, a máquina 1 não foi atribuída ao trabalho 2.Se X31 = 1, a máquina 3 foi atribuída ao trabalho 1.Se X31 = 0, a máquina 3 não foi atribuída ao trabalho 1.

Note que as variáveis Xij só podem assumir valores 0 ou 1, já que não faz sentidodizer 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 X11

= 1, então X12 e X13 precisam ser, obrigatoriamente, iguais a 0. Isso significa dizer que se amáquina 1 foi usada para o trabalho 1 (X11 = 1) esta máquina 1 não pode ser usada para otrabalho 2 e 3 (X12 = X13 = 0). Da mesma forma, se X12 = 1, então X11 = X13 = 0... ou ainda, seX13 = 1, então X11 = X12 = 0. Ora, como é possível ver, a soma dos valores de X1j = 1, sempre!Isso pode ser descrito assim:

X11 + X12 + X13 = 1, X1j c { 0, 1}

O que foi dito sobre a máquina 1, pode também ser dito sobre a máquina 2 e sobre amáquina 3:

X21 + X22 + X23 = 1, X2j c { 0, 1}X31 + X32 + X33 = 1, X3j c { 0, 1}

Juntando todas estas restrições, resulta:

X11 + X12 + X13 = 1 X21 + X22 + X23 = 1X31 + X32 + X33 = 1

Xij c { 0, 1}

Pesquisa Operacional 2Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 94

Page 95: Pesquisa Operacional 1 - caetano.eng.br

Por outro lado, é sabido também que os trabalhos só podem ser designados para umamáquina de cada vez, também não fazendo sentido dizer que um trabalho foi "meio" atribuídoa uma máquina e "meio" atribuído a outra. Assim, ocorre que se X11 = 1, então X21 e X31

precisam ser, obrigatoriamente, iguais a 0. Isso significa dizer que se o trabalho 1 foi alocadopara a máquina 1 (X11 = 1) este mesmo trabalho não pode ser alocado para as máquians 2 e 3(X21 = X31 = 0). Da mesma forma, se X21 = 1, então X11 = X31 = 0... ou ainda, se X31 = 1, entãoX11 = X21 = 0. Ora, como é possível ver, a soma dos valores de Xi1 = 1, sempre! Isso pode serdescrito da seguinte maneira:

X11 + X21 + X31 = 1, Xi1 c { 0, 1}

O que foi dito sobre o trabalho 1, pode também ser dito sobre o trabalho 2 e sobre otrabalho 3:

X12 + X22 + X32 = 1, Xi2 c { 0, 1}X13 + X23 + X33 = 1, Xi3 c { 0, 1}

Juntando todas estas restrições, teremos:

X11 + X21 + X31 = 1X12 + X22 + X32 = 1X13 + X23 + X33 = 1

Xij c { 0, 1}

Com isso, pode-se apresentar a definição completa das restrições:

X11 + X12 + X13 = 1 <= Máquina 1 só pega um trabalhoX21 + X22 + X23 = 1 <= Máquina 2 só pega um trabalhoX31 + X32 + X33 = 1 <= Máquina 3 só pega um trabalhoX11 + X21 + X31 = 1 <= Trabalho 1 só está em uma máquinaX12 + X22 + X32 = 1 <= Trabalho 2 só está em uma máquinaX13 + X23 + X33 = 1 <= Trabalho 3 só está em uma máquina

Xij c { 0, 1}

Mas ainda falta a definição de uma função objetivo! Bem, a função objetivo é a somado custo de cada atribuição realizada. Como Xij indica exatamente se uma atribuição foi feitaou não, basta multiplicar o custo de cada atribuição (dados pelo problema) pela variável Xij,que identifica se aquela atribuição foi feita:

10129M315912M28510M1

T3T2T1Máquina \ Trabalho

Pesquisa Operacional 3Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 95

Page 96: Pesquisa Operacional 1 - caetano.eng.br

Exemplo 1:Custo da atribuição da M1 ao T1: 10Variável que indica se esta atribuição foi feita (1 se sim, 0 se não): X11

Custo final desta atribuição: 10* X11

Exemplo 2:Custo da atribuição da M2 ao T3: 15Variável que indica se esta atribuição foi feita (1 se sim, 0 se não): X23

Custo final desta atribuição: 15* X23

Jutando o custo das 9 possíveis atribuições, define-se a função objetivo:

F.O.:[MIN] 10X11 + 5X12 + 8X13 + 12X21 + 9X22 + 15X23 + 9X31 + 12X32 + 10X33

S.A.: X11 + X12 + X13 = 1X21 + X22 + X23 = 1X31 + X32 + X33 = 1X11 + X21 + X31 = 1X12 + X22 + X32 = 1X13 + X23 + X33 = 1

Xij c { 0, 1}

Enfim, o modelo completo. Entretanto, ainda falta colocar este modelo na formapadrão, o que acrescentaria uma variável artificial em cada restrição, ampliando o número devariáveis de 9 para 15.

Observe como um problema simples e pequeno, de atribuição de 3 máquinas a 3trabalhos, tornou-se um modelo matemático enorme, com 15 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 queprovavelmente impede o Simplex (sozinho) de resolvê-lo, sendo necessário um algoritmo queengloba o Simplex, chamado "Branch and Bound" que pode vir a ter que re-executar diversasvezes o Simplex, podendo ter que adicionar até mais 9 restrições (linhas do Simplex), umapara cada variável de decisão, totalizando 15 variáveis e 15 restrições.

Não é preciso ir muito longe para perceber que esse problema pode demorar um bomtempo 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.

Pesquisa Operacional 4Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 96

Page 97: Pesquisa Operacional 1 - caetano.eng.br

3. Exercício L4 (Livro)

Em uma empresa de construção civil, há três projetos que podem ser alocados a trêsequipes diferentes. Tanto o tempo de experiência das equipes quanto suas orientaçõestécnicas são distintas, de modo que o tempo de término de cada projeto dependerá da equipeespecífica ao qual ele for alocado. A matriz a seguir mostra os tempos para cada equipo eprojeto. Modele como um problema de programação linear (para o Simplex, mas não precisacolocar na forma padrão) e aplique o Algoritmo Húngaro para chegar à alocação ótima, ouseja, o menor número de horas pagas de desenvolvimento.

302923Equipe 3182217Equipe 2212415Equipe 1

Projeto CProjeto BProjeto A

Bibliografia

MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. ThomsonPioneira, 2007.

Pesquisa Operacional 5Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 97

Page 98: Pesquisa Operacional 1 - caetano.eng.br

Unidade 3: Métodos Alternativos de SoluçãoTó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, 2007.

Introdução

Como foi visto anteriormente, o problema da atribuição/designação pode sermodelado matematicamente como um problema de programação linear, visando sua soluçãopelo método Simplex.

Entretanto, a solução pelo método Simplex pode ser excessivamente demorada emproblemas muito grandes, com milhares de atividades a serem atribuidas. Por esta razão, foicriado um algoritmo chamado "Algoritmo Húngaro" que é capaz de resolver problemas deatribuição com um esforço computacional bastante menor que o Simplex.

Nesta aula será visto como solucionar o problema apresentado anteriormente comauxílio do Algorítmo Húngaro.

1. O Algoritmo Húngaro

Assim como o Simplex, o Algoritmo Húngaro pode ser descrito como uma seqüênciade operações matemáticas que, quando aplicadas, revelam a solução ótima para um problemade atribuição.

O Algoritmo Húngaro é baseado na matriz dos tempos/custos de atribuição que sedeseja minimizar. Além disso, ele é baseado no fato de existir igual número de tarefas emáquinas (ou seja, o número de linhas é igual ao de colunas). Há uma pressuposição quequalquer tarefa pode ser alocada a qualquer máquina e, finalmente, pressupõe que osdados são custos (ou outra grandeza qualquer) que precisam ser minimizados.

Os passos do Algoritmo Húngaro são:

1) 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.

Pesquisa Operacional 1Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 98

Page 99: Pesquisa Operacional 1 - caetano.eng.br

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 13.10) Subtração deste número de todos que não estiverem cobertos por retas.11) Adição do número selecionado no passo 9 em todas as interseções de retas.12) Voltar ao passo 7.13) 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, 2006, pág. 122,modificado) visto anteriormente.

Exemplo:

Em uma fábrica temos dois trabalhos T1, T2 e T3, que podem ser processados por 3máquinas diferentes: M1, M2 e M3. Devido à diferenças tecnológicas nas máquinas, o tempopara que cada uma delas realize cada um dos trabalhos é diferente, estando expressados natabela abaixo:

10129M315912M28510M1

T3T2T1Máquina \ Trabalho

Com base neste problema será apresentado o algoritmo húngaro para o problema deatribuição, visando encontrar qual máquina deve realizar qual trabalho de forma a minimizaro número total de horas de máquina gastos.

2.1. Aplicação do Algoritmo

O Algoritmo Húngaro é composto de várias etapas, que serão vistas a seguir, pararesolver o problema previamente apresentado. Segue, agora, um guia detalhado de comoexecutar cada etapa, passo a passo.

Pesquisa Operacional 2Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 99

Page 100: Pesquisa Operacional 1 - caetano.eng.br

Passo 1: Desenho da tabela de custos

10129M315912M28510M1

T3T2T1Máquina \ Trabalho

Passo 2: Seleciona-se o menor valor de cada linha...

1012>>9<<M315>>9<<12M28>>5<<10M1

T3T2T1Máquina \ Trabalho

Passo 3: Subtrai-se este número de todos as células da mesma linha que ele

130M3603M2305M1

T3T2T1Máquina \ Trabalho

Passo 4: Seleciona-se o menor valor de cada coluna

>>1<<3>>0<<M3603M23>>0<<5M1

T3T2T1Máquina \ Trabalho

Passo 5: Subtrai-se este número de todos as células da mesma coluna que ele

030M3503M2205M1

T3T2T1Máquina \ Trabalho

Passo 6: Determina-se a ordem da matriz

A ordem da matriz é 3, já que ela é uma matriz 3x3.

Pesquisa Operacional 3Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 100

Page 101: Pesquisa Operacional 1 - caetano.eng.br

Passo 7: Traça-se o |menor| número de retas (h/v) que passem por todos os zeros

-----------0----------------------3|----------------------0-----------M350|3M220|5M1

T3T2T1Máquina \ Trabalho

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úmerode retas é MENOR que a ordem (três), segue-se para o passo 9. Caso o número fosse igual atrês, a seqüência seria a partir do passo 13. Note que se o número de retas for MAIOR que aordem, certamente há erro no traçado das retas.

Passo 9: Caso "no. de retas < ordem", seleciona-se o menor valor "não coberto"

-----------0----------------------3|----------------------0-----------M350|3M2

>>2<<0|5M1T3T2T1Máquina \ Trabalho

Passo 10: Subtrai-se valor selecionado no passo 9 de todos os "não cobertos"

-----------0----------------------3|----------------------0-----------M330|1M200|3M1

T3T2T1Máquina \ Trabalho

Passo 11: Soma-se o valor selecionado no passo 9 na interseção das retas

-----------0----------------------5|----------------------0-----------M330|1M200|3M1

T3T2T1Máquina \ Trabalho

Passo 12: Traça-se o |menor| número de retas que passem por todos os zeros

----------- 0 ---------------------- 3 |---------------------- 0 -----------M330 |1M2

----------- 0 ---------------------- 0 |---------------------- 3 -----------M1T3T2T1Máquina \ Trabalho

Caso o número de retas ainda seja menor que a ordem, volta-se para o passo 8 ereprete-se até conseguir um número de retas igual à ordem da matriz.

Pesquisa Operacional 4Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 101

Page 102: Pesquisa Operacional 1 - caetano.eng.br

Passo 13: Determina-se a atribuição

A primeira linha ou coluna que aparece apenas UM zero deve ser localizada e aatribuição feita no ponto em que aparece o zero. Neste exemplo: A linha M2 tem apenas UMzero (coluna T2). Assim, o trabalho T2 será atribuído à máquina M2, e essa linha e colunapodem ser eliminadas (já que a M2 e o T2 não poderão ser atribuídos a mais nada):

030M3301M2003M1

T3T2T1Máquina \ Trabalho

Resultando em:

00M303M1

T3T1Máquina \ Trabalho

Localizando a próxima linha ou coluna que aparece apenas UM zero, define-se apróxima atribuição. Neste exemplo: A linha M1 tem apenas UM zero (coluna T3). Assim, otrabalho T3 será atribuído à máquina M1, e essa linha e coluna podem ser eliminadas:

00M303M1

T3T1Máquina \ Trabalho

Resultando em:

0M3T1Máquina \ Trabalho

Finalmente, o trabalho T1 será atribuído à máquina M3. Solução:

T1 => M3, custo 9T2 => M2, custo 9T3 => M1, custo 8

Custo final total: 26 horas.

Pesquisa Operacional 5Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 102

Page 103: Pesquisa Operacional 1 - caetano.eng.br

3. Tornando o Algoritmo Húngaro Genérico

Foi visto anteriormente que, para que o Algoritmo Húngaro funcione, existe anecessidade de obedecer alguns critérios... mas e quando isso não ocorre? Neste caso, serãousados alguns truques para "forçar" os critérios necessários.

Número de Linhas e Colunas Diferente: Neste caso devem ser criadas linhas oucolunas fictícias (conforme o caso), preenchendo o custo de todas as células destalinha/coluna acrescentada como 0.

Problema de Maximização ao invés de minimização: Neste caso, procura-se omaior número na matriz. Encontrado este número, em cada célula indicar o resultado daoperação "Maior_Número - Valor_Original_Da_Célula_Atual".

Alocações Impossíveis: Quando alguma alocação é impossível, basta indicar seucusto com um valor excessivamente alto. Normalmente a letra "M" é usada para representareste valor.

Bibliografia

MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. ThomsonPioneira, 2007.

Pesquisa Operacional 6Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 103

Page 104: Pesquisa Operacional 1 - caetano.eng.br

Resolução da Lista 3Prof. 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, 2007.

Resolução do Exercício L3

Enunciado:Modele e apresente na forma padrão (pronto para o Simplex) o seguinte problema

abaixo:1) 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,00 por hora e o deJoão é de R$ 40,00 por hora. Pedro consegue instalar um terminal em meia hora (0,5 hora) eJoão em 15 minutos (0,25 hora). É necessário instalar um total de 40 terminais, sendo quePedro deve instalar pelo menos 10 deles. Sabe-se que nenhum dos dois funcionários podetrabalhar mais do que 8 horas em um dia. Deseja-se minimizar o custo total da instalação.

1. Modele matematicamente o problema acima.

Função Objetivo:

Como se quer minimizar o custo de instalação, a primeira coisa é determinar como sepode calcular este custo. Bem, há dois funcionários, sendo que ambos recebem um valorespecífico por hora. Assim, se for definido:

xP = número de horas trabalhadas por PedroxJ = número de horas trabalhadas por João

Sabendo que o salário de Pedro é R$ 25,00 por hora e o de João é de R$ 40,00 porhora, o custo de cada um dos funcionários será:

Pedro: 25 * xP (em reais)João: 40 * xJ (em reais)

Assim, o custo total será:

Custo = 25*xP + 40*xJ

Como se deseja minimizar o custo, a função objetivo fica:

[MIN] 25*xP + 40*xJ

Pesquisa Operacional 1Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 104

Page 105: Pesquisa Operacional 1 - caetano.eng.br

Restrições:

Há, basicamente, 4 restrições:

- Número total de máquinas a instalar: 40- Número mínimo de máquinas que serão instaladas por Pedro: 10- 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: 40

Primeiro é preciso identificar quantas máquinas Pedro e João instalam por hora. Peloenunciado, Pedro instala um terminal em meia hora. Em outras palavras, ele instala 2máquinas em uma hora. Como xP é número de horas trabalhadas por Pedro, o número total demáquinas instaladas por Pedro é:

Máquinas Instaladas por Pedro: 2*xP

Da mesma forma, é dito que João instala uma máquina em 15 minutos, ou seja, eleinstala 4 máquinas em uma hora. Como xJ é número de horas trabalhadas por João, o númerototal de máquinas instaladas por João é:

Máquinas Instaladas por João: 4*xJ

Assim, o total de máquinas instaladas é:

2*xP + 4*xJ

Que deve ser exatamente igual a 40... ou seja:

2*xP + 4*xJ = 40 <= Restrição do número de máquinas a instalar.

- Número mínimo de máquinas que serão instaladas por Pedro: 10

Já foi visto que o número de máquinas instaladas por Pedro 2*xP. O que esta restriçãodiz é que este número precisa ser pelo menos igual a 10, ou seja, ele é maior ou igual a 10.Assim:

2*xP ¶ 10 <= Restrição do mínimo de máquinas para Pedro

Pesquisa Operacional 2Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 105

Page 106: Pesquisa Operacional 1 - caetano.eng.br

- Número máximo de horas de trabalho de Pedro: 8

Como xP é o número de horas trabalhadas por Pedro, este valor deve ser menor que 8:

xP ü 8 <= Número máximo de horas de trabalho para PedroxJ ü 8 <= Número máximo de horas de trabalho para João

Modelo Final

F.O.:[MIN] 25*xP + 40*xJ

S.A.:2*xP + 4*xJ = 40 <= Restrição do número de máquinas a instalar.2*xP ¶ 10 <= Restrição do mínimo de máquinas para PedroxP ü 8 <= Número máximo de horas de trabalho para PedroxJ ü 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çõesdo tipo ü e ¶ respectivamente, sendo que apenas com isso as restrições já podem se tornarigualdades:

F.O.: [MIN] 25*xP + 40*xJ

S.A.: 2*xP + 4*xJ = 40 (=)2*xP - 1*xE1 = 10 (¶)1*xP + 1*xS1 = 8 (ü)

1*xJ + 1*xS2 = 8 (ü)Sinal Antigo ---^

Entretanto, este problema ainda não admite solução direta para xP = xJ = 0, algo que édesejável para poder iniciar o Simplex. As restrições problemáticas são aquelas cujos sinaisoriginais eram ¶ ou =, uma vez que com a igualdade teremos resultados estranhos ao fazer xP

= xJ = 0:

2*xP + 4*xJ = 40 => (xP = xJ = 0) => 2*0 + 4*0 = 40 => 0 = 40 !?!?!!?2*xP - 1*xE1 = 10 => (xP = xJ = 0) => 2*0 -1 *xE1= 10 => xE1= -10 !?!?!!?

Pesquisa Operacional 3Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 106

Page 107: Pesquisa Operacional 1 - caetano.eng.br

Assim, é necessário adicionar variáveis artificiais nestas restrições, de forma a tornar asolução xP = xJ = 0 possível. Com isso, o problema fica:

F.O.: [MIN] 25*xP + 40*xJ

S.A.: 2*xP + 4*xJ +1*a1 = 402*xP - 1*xE1 +1*a2 = 101*xP + 1*xS1 = 8

1*xJ + 1*xS2 = 8

Agora a modelagem está quase completa, faltando apenas fazer com que todas asvariáveis apareçam em todas as linhas, o que é conseguido acrescentando-as com coeficientezero onde elas não aparecem:

F.O.: [MIN] 25*xP + 40*xJ + 0*xE1+ 0*xS1+ 0*xS2+0*a1 +0*a2

S.A.: 2*xP + 4*xJ + 0*xE1+ 0*xS1+ 0*xS2+1*a1 +0*a2 = 402*xP +0*xJ - 1*xE1 + 0*xS1+ 0*xS2+0*a1 +1*a2 = 101*xP +0*xJ + 0*xE1+ 1*xS1+ 0*xS2+0*a1 +0*a2 = 80*xP 1*xJ + 0*xE1+ 0*xS1+ 1*xS2+0*a1 +0*a2 = 8

O último truque a ser aplicado é a conversão de um problema de minimização paraum de maximização, bastando, para isso, multiplicar a função objetivo por -1:

F.O.: [MAX]-25*xP - 40*xJ - 0*xE1 - 0*xS1 - 0*xS2 - 0*a1 - 0*a2

S.A.: 2*xP + 4*xJ + 0*xE1+ 0*xS1+ 0*xS2+1*a1 +0*a2 = 402*xP +0*xJ - 1*xE1 + 0*xS1+ 0*xS2+0*a1 +1*a2 = 101*xP +0*xJ + 0*xE1+ 1*xS1+ 0*xS2+0*a1 +0*a2 = 80*xP 1*xJ + 0*xE1+ 0*xS1+ 1*xS2+0*a1 +0*a2 = 8

3. Bibliografia

MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. ThomsonPioneira, 2007.

Pesquisa Operacional 4Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 107

Page 108: Pesquisa Operacional 1 - caetano.eng.br

Resolução da Lista 4Prof. Daniel Caetano

Objetivo: Apresentar a resolução da listsa.

Bibliografia:- MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed.

Thomson Pioneira, 2007.

1. Exercício L4

Em uma empresa de construção civil, há três projetos que podem ser alocados a trêsequipes diferentes. Tanto o tempo de experiência das equipes quanto suas orientaçõestécnicas são distintas, de modo que o tempo de término de cada projeto dependerá da equipeespecífica ao qual ele for alocado. A matriz a seguir mostra os tempos para cada equipo eprojeto. Modele como um problema de programação linear (para o Simplex, mas não precisacolocar na forma padrão) e aplique o Algoritmo Húngaro para chegar à alocação ótima, ouseja, o menor número de horas pagas de desenvolvimento.

302923Equipe 3182217Equipe 2212415Equipe 1

Projeto CProjeto BProjeto A

Modelagem Matemática

Considere para a resolução as variáveis de decisão Xij, sendo i o número da equipe e ja letra do projeto: X1B indica se a equipe 1 foi (ou não) atribuída para o projeto B; X3A indicase a equipe 3 foi (ou não) atribuída ao projeto A. Ou seja: quando uma destas variáveis for 1,houve a atribuição. Se ela for 0, não houve. Assim:

Se X1B = 1, a equipe 1 foi atribuída ao projeto B.Se X1B = 0, a equipe 1 não foi atribuída ao projeto B.Se X3A = 1, a equipe 3 foi atribuída ao projeto A.Se X3A = 0, a equipe 3 não foi atribuída ao projeto A.

Note que as variáveis Xij só podem assumir valores 0 ou 1, já que não faz sentidodizer 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 X1A = 1, X1B e X1C

precisam ser, obrigatoriamente, iguais a 0. Isso significa dizer que se a equipe 1 foi usadapara o projeto A (X1A = 1) esta equipe 1 não pode ser usada para os projetos B e C (X1B = X1C

= 0). Da mesma forma, se X1B = 1, então X1A = X1C = 0... ou ainda, se X1C = 1, então X1A =X1B = 0. Ora, como é possível ver, a soma dos valores de X1j = 1, sempre! Isso pode serdescrito assim:

Pesquisa Operacional 1Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 108

Page 109: Pesquisa Operacional 1 - caetano.eng.br

X1A + X1B + X1C = 1, X1j c { 0, 1}

O que foi dito sobre a equipe 1, pode também ser dito sobre a equipe 2 e sobre aequipe 3:

X2A + X2B + X2C = 1, X2j c { 0, 1}X3A + X3B + X3C = 1, X3j c { 0, 1}

Juntando todas estas restrições, resulta em:

X1A + X1B + X1C = 1 X2A + X2B + X2C = 1X3A + X3B + X3C = 1

Xij c { 0, 1}

Por outro lado, é sabido também que os projetos só podem ser designados para umaequipe de cada vez, também não fazendo sentido dizer que um projeto foi "meio" atribuído auma equipe e "meio" atribuído a outra. Assim, temos que se X1A = 1, X2A e X3A precisam ser,obrigatoriamente, iguais a 0. Isso significa dizer que se o projeto 1 foi alocado para a equipe 1(X1A = 1) este mesmo projeto não pode ser alocado para as máquinas 2 e 3 (X2A = X3A = 0).Da mesma forma, se X2A = 1, então X1A = X3A = 0... ou ainda, se X3A = 1, então X1A = X2A = 0.Ora, como é possível ver, a soma dos valores de XiA = 1, sempre! Isso pode ser descrito daseguinte maneira:

X1A + X2A + X3A = 1, XiA c { 0, 1}

Bem, o que foi dito sobre o projeto A, pode também ser dito sobre o projeto B e sobreo projeto C:

X1B + X2B + X3B = 1, XiB c { 0, 1}X1C + X2C + X3C = 1, XiC c { 0, 1}

Juntando todas estas restrições, resulta em:

X1A + X2A + X3A = 1X1B + X2B + X3B = 1X1C + X2C + X3C = 1

Xij c { 0, 1}

Pesquisa Operacional 2Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 109

Page 110: Pesquisa Operacional 1 - caetano.eng.br

Com isso, temos a definição completa das restrições:

X1A + X1B + X13 = 1 <= Equipe 1 só pega um projetoX2A + X2B + X23 = 1 <= Equipe 2 só pega um projetoX3A + X3B + X33 = 1 <= Equipe 3 só pega um projetoX1A + X2A + X3A = 1 <= Projeto A só está em uma equipeX1B + X2B + X3B = 1 <= Projeto B só está em uma equipeX1C + X2C + X3C = 1 <= Projeto C só está em uma equipe

Xij c { 0, 1}

Mas ainda falta a definição de uma função objetivo! Bem, a função objetivo é a somado custo de cada atribuição realizada. Como Xij indica se uma atribuição foi feita, bastamultiplicar o custo de cada atribuição (dados pelo problema) pela variável Xij que identificase aquela atribuição foi feita:

302923Equipe 3182217Equipe 2212415Equipe 1

Projeto CProjeto BProjeto A

Exemplo 1:Custo da atribuição da E1 ao PA: 15Variável que indica se esta atribuição foi feita (1 se sim, 0 se não): X1A

Custo final desta atribuição: 15* X1A

Exemplo 2:Custo da atribuição da E2 ao PC: 18Variável que indica se esta atribuição foi feita (1 se sim, 0 se não): X2C

Custo final desta atribuição: 18* X2C

Jutanto o custo das 9 possíveis atribuições, definimos a função objetivo:

F.O.:[MIN] 15X1A + 24X1B + 21X1C + 17X2A + 22X2B + 18X2C + 23X3A + 29X3B + 30X3C

X1A + X1B + X13 = 1X2A + X2B + X23 = 1X3A + X3B + X33 = 1X1A + X2A + X3A = 1X1B + X2B + X3B = 1X1C + X2C + X3C = 1

Xij c { 0, 1}

Pesquisa Operacional 3Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 110

Page 111: Pesquisa Operacional 1 - caetano.eng.br

Resolução pelo Algoritmo Húngaro

Passo 1: Desenho da tabela de custos

302923Equipe 3182217Equipe 2212415Equipe 1

Projeto CProjeto BProjeto A

Passo 2: Seleciona-se o menor valor de cada linha...

3029>>23<<Equipe 31822>>17<<Equipe 22124>>15<<Equipe 1

Projeto CProjeto BProjeto A

Passo 3: Subtrai-se este número de todos as células da mesma linha que ele

760Equipe 3150Equipe 2690Equipe 1

Projeto CProjeto BProjeto A

Passo 4: Seleciona-se o menor valor de cada coluna

760Equipe 3>>1<<>>5<<0Equipe 2

69>>0<<Equipe 1Projeto CProjeto BProjeto A

Passo 5: Subtrai-se este número de todos as células da mesma coluna que ele

610Equipe 3000Equipe 2540Equipe 1

Projeto CProjeto BProjeto A

Passo 6: Determina-se a ordem da matrizA 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

610 |Equipe 3---------- 0 -------------------- 0 -------------------- 0 |----------Equipe 2

540 |Equipe 1Projeto CProjeto BProjeto A

Passo 8: Compara-se o número de retas com a ordem da matrizHá 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.

Pesquisa Operacional 4Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 111

Page 112: Pesquisa Operacional 1 - caetano.eng.br

Passo 9: Caso "no. de retas < ordem", seleciona-se o menor valor "não coberto"

6>>1<<0 |Equipe 3---------- 0 -------------------- 0 -------------------- 0 |----------Equipe 2

540 |Equipe 1Projeto CProjeto BProjeto A

Passo 10: Subtrai-se valor selecionado no passo 9 de todos os "não cobertos"

500 |Equipe 3---------- 0 -------------------- 0 -------------------- 0 |----------Equipe 2

430 |Equipe 1Projeto CProjeto BProjeto A

Passo 11: Soma-se o valor selecionado no passo 9 na interseção das retas

500 |Equipe 3---------- 0 -------------------- 0 -------------------- 1 |----------Equipe 2

430 |Equipe 1Projeto CProjeto BProjeto A

Passo 12: Traça-se o |menor| número de retas que passem por todos os zeros

50 |0 |Equipe 3------------0-----------------------0 |----------------------1 |-----------Equipe 2

43 |0 |Equipe 1Projeto CProjeto BProjeto A

Como o número de retas é igual à ordem da matriz, segue-se para o passo 13.

Passo 13: 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 Equipe1 tem apenas UM zero (ProjetoA). Assim, o Projeto A seráatribuído à Equipe 1, e essa linha e coluna podem ser eliminadas:

500Equipe 3001Equipe 2430Equipe 1

Projeto CProjeto BProjeto A

50Equipe 300Equipe 2

Projeto CProjeto B

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 Bserá atribuído à Equipe 3, e essa linha e coluna podem ser eliminadas:

Pesquisa Operacional 5Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 112

Page 113: Pesquisa Operacional 1 - caetano.eng.br

50Equipe 300Equipe 2

Projeto CProjeto B

0Equipe 2Projeto C

Finalmente, o Projeto C será atribuído à Equipe 2. Solução:

PA => E1, tempo 15 mesesPB => E3, custo 29 mesesPC => E2, custo 18 meses

Custo final total: 62 meses.

Bibliografia

MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. ThomsonPioneira, 2007.

Pesquisa Operacional 6Atualização: 12/03/2008

2008_SI_-_PesquisaOperacional_I_-_o2007 113

Page 114: Pesquisa Operacional 1 - caetano.eng.br

Apresentação da DisciplinaProf. Daniel Caetano

Objetivo: Apresentar o conteúdo da disciplina Pesquisa Operacional II, no âmbitogeral e dentro do contexto do curso de Sistemas de Informação.

Bibliografia: MOREIRA; ARENALES et al.

1. 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 conceitosbá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 etambém foi apresentado o método Simplex para encontrar a solução ótima para o modelomatemático. Mas o que era otimizar, mesmo?

Relembrando, otimizar significa encontrar uma combinação de fatores de operaçãoque nos permite o melhor desempenho possível. Em outras palavras, se vamos transportarcarga e podemos fazer isso de diversas formas, otimizar é determinar todos as característicasdo transporte que nos trará um menor custo ou tempo, por exemplo. Da mesma forma, sequeremos transportar um certo conjunto de dados por uma rede como a internet, onde temosdiversos caminhos pelos quais uma informação pode ser transmitida, otimizar significadeterminar o modo de transmissão e o caminho da transmissão de forma que a comunicaçãoseja o mais rápida possível.

Ainda no curso anterior, vimos que alguns problemas em que o método Simplexpoderia ter desempenho pouco satisfatório em problemas grandes; para estes casos, em quemesmo um computador rápido pode levar dias, meses ou até anos (...) para encontrar umasolução ótima, foi apresentado como exemplo um algoritmos que lida com um problemaespecífico clássico deste tipo: o Algorítmo Húngaro para o problema da atribuição.

Pesquisa Operacional II 1Atualização: 13/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 114

Page 115: Pesquisa Operacional 1 - caetano.eng.br

O Problema de Atribuição é muito comum além das esferas clássicas de alocarprojetos a equipes; ele pode ser usado, por exemplo, em um sistema de computaçãodistribuída. Neste tipo de sistema o computador responsável pelo controle de execução dasaplicações deve decidir qual é o outro computador que irá processar uma informação ouexecutar um dado software. Como cada equipamento pode ter recursos distintos (velocidadede processamento, memória, dispositivos, etc), trata-se de um problema de atribuição que oSistema Operacional terá de resolver.

Figura 1 - Qual programa será executado em qual computador?

Hoje também estão se tornando comuns os computadores com dois processadores oumais (Dual Core, como Core2 Duo, Athlon X2, etc) e isso traz uma tarefa ao SistemaOperacional, 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 quala 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?

1.1. 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

Pesquisa Operacional II 2Atualização: 13/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 115

Page 116: Pesquisa Operacional 1 - caetano.eng.br

Neste curso serão apresentados outros métodos de otimização, aplicáveis a problemasespecíficos, que eventualmente precisam ser resolvidos em tempos muito curtos e para osquais o Simplex não fornece solução ou não é rápido o suficiente. Vejamos rapidamentealguns deles.

- Problema do Transporte da Programação Linear

O Problema do Transporte é muito comum quando queremos realocar recursosou 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 detransmissão de cada fonte para cada destino é diferente. Qual fonte manda o arquivopara qual destino de forma que todos sejam atendidos com o menor custo de tempototal possível? É possível modelar este problema como um problema do transportepara decidir qual origem envia dados para qual destino, de forma a minimizar o tempototal 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 umbanco 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 detransporte, para indicar o menor caminho para ir de um lugar ao outro, este tipo deproblema é também muito comum em redes de comunicação.

Nas redes de comunicação, ao estabelecer uma conexão entre um ponto fonte eum destino, é necessário definir qual o caminho que gasta o menor número derecursos (centrais, cabos de conexão etc.) para transportar a informação de um ponto aoutro. Nestas aplicações são usados algoritmos de roteamento que decidem por onde ainformaçã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

Pesquisa Operacional II 3Atualização: 13/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 116

Page 117: Pesquisa Operacional 1 - caetano.eng.br

caminho ideal para realizar uma conexão. Neste curso serão apresentados doisalgoritmos 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 paracasos 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 dosImigrandes, com o objetivo de construir um sistema de informações que indiquequantos postos de pedágio são necessários colocar em funcionamento, dada umaprevisã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 coma média de chegada dos veículos e calcula quantos postos de pedágio serãonecessários. Mas aí o seu cliente chega e diz: "Olha, eu queria saber quanto será, com99,5% de probabilidade, o maior número de carros que ficarão em uma fila dopedá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 seusistema para dimensioná-lo, para responder à esta pergunta. O método mais simplespara avaliar este tipo de situação é, em geral, a simulação.

Pesquisa Operacional II 4Atualização: 13/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 117

Page 118: Pesquisa Operacional 1 - caetano.eng.br

A simulação usará de métodos estocásticos (envolvendo aleatoriedade) parasimular o que ocorreria na realidade, as taxas de chegadas dos carros (que, narealidade, não são iguais à média durante todo o tempo!) para estimar a informaçãodesejada.

- Problemas Gerais

Imagine que, em outra situação, você é contratado para desenvolver umsistema que, por exemplo, deve calcular quais são os professores serão alocados emquais horários de aula para minimizar o número de professores e alocá-los dentro dasrestrições de cada um deles. Ao montar o modelo, percebe que o tal problema não seencaixa 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 quenão seja a melhor, há uma saída: o uso dos chamados métodos heurísticos. MétodosHeurísticos são processos que, em geral, determinam soluções muito boas para umdeterminado 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: "Useessa, que resolve qualquer problema". Uma heurística é sempre desenvolvidaespecificamente para um tipo de problema (ou para um problema específico, no casomais comum). Entretanto, existem alguns mecanismos que podem ser facilmenteadaptáveis para diversos problemas: são as chamadas Meta-Heurísticas. AsMeta-Heurísticas não são genéricas, mas podem ser facilmente adaptadas para umgrande 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 deSistemas de Informação?

Ora, o objetivo de um profissional de Sistemas de Informação é construir sistemascapazes de fornecer informações relevantes para seus utilizadores. Isso, em geral, envolve oprocessamento de grandes quantidades de dados e a geração de alguns números, reduzindo

Pesquisa Operacional II 5Atualização: 13/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 118

Page 119: Pesquisa Operacional 1 - caetano.eng.br

uma infinidades de dados em um pequeno conjunto de informações que seja mais facilmentecompreendido 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óriosatravés de análises de um Banco de Dados. Uma grande massa de dados é analisada atravésde uma diretiva especificada pelo programador (no SQL, através de um SELECT) e umresultado é apresentado.

No caso mais simples de manipulação de banco de dados, trata-se de uma simplesbusca. 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 umadeterminada 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 queainda requerem processamento posterior.

Além das buscas e estatísticas sobre bancos de dados serem o mínimo que um sistemade informação precisa faz, de forma geral já existem muitos softwares comerciais queatentem à quase todas as necessidades que uma empresa possa ter. Por esta razão, umprofissional da área de Sistemas de Informação não pode se satisfazer apenas com esseconhecimento; ele precisa ir além e desenvolver softwares que forneçam mais informações einformações mais interessantes aos seus clientes.

Um sistema de informações não deve apenas se preocupar em diagnosticar umproblema, como "as vendas caíram no terceiro trimestre do ano", mas também sugerirsoluções, como "precisamos redirecionar as vendas para a cidade X, o que reduzirá o nossocusto e aumentará nossa competitividade". E este tipo de resposta, apesar de muitas vezes serbaseado em informações de um banco de dados, não sai com uma simples query; é necessáriotodo um processamento adicional visando um objetivo específico.

É justamente esse processamento específico que é desenvolvido na PesquisaOperacional; muitos dos problemas comuns já possuem um método usual de cálculo de suasolução ótima, outros exigem que um algoritmo de otimização seja desenvolvido... mas issonem 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 PesquisaOperacional está no âmbito da aplicação. A função é desenvolver sistemas que apliquem astécnicas de Pesquisa Operacional visando encontrar informações mais úteis ao cliente do queuma mera estatística histórica. Trata-se de gerar novas informações ao invés de apenassintetizar e/ou modificar a forma de apresentação de velhas informações.

Pesquisa Operacional II 6Atualização: 13/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 119

Page 120: Pesquisa Operacional 1 - caetano.eng.br

Assim, a Pesquisa Operacional traz para o profissional de Sistemas de Informaçãouma oportunidade de se diferenciar no mercado, de desenvolver sistemas mais completos emais informativos, podendo alcançar uma posição de destaque no mercado.

3. BIBLIOGRAFIA

MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. ThomsonPioneira, 2007.

ARENALES, M; ARMENTANO, V; MORABITO, R; YANASSE, H. PesquisaOperacional. Rio de Janeiro: Editora Campus, 2006

Pesquisa Operacional II 7Atualização: 13/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 120

Page 121: Pesquisa Operacional 1 - caetano.eng.br

Unidade 1: Introdução aos Problemas de Fluxo em RedeProf. Daniel Caetano

Objetivo: Apresentar o conceitos dos Problemas de Fluxo em Rede e suarepresentaçã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óduloque 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 sejamsatisfeitos.

Figura 1: Qual trajeto o caminhão deve fazer da Base aos pontos de demanda D1~D4?

Um outro dia é solicitado que seja desenvolvido um módulo para o sistema do GPSdos caminhões, capaz de encontrar o melhor caminho do ponto em que o caminhão está, até oponto de entrega.

Pesquisa Operacional II 1Atualização: 18/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 121

Page 122: Pesquisa Operacional 1 - caetano.eng.br

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 massa1 - estes problemas todos podem serresolvidos pelo método Simplex. Entretanto, dada a dimensão que estes problemas podemadquirir (em termos de números de equações), muitas vezes o Simplex se torna lento edesajeitado em seu tratamento.

Observação 1: Um modelo de conservação de massa é aquele em que impomos como restrições que tudoque 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 possuemem comum. No primeiro caso, por exemplo, temos um problema em que são envolvidascargas 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 serlevado de um ponto a outro, passando por diversos pontos intermediários, todos elesinterligados 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çõesentre 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 aoponto de entrega PE?

Este tipo de problema, que envolvem algum tipo de movimentação entre pontos noespaço (ou tempo), passando por interconexões entre estes pontos, é chamado de "Problemade Fluxo em Rede", pois deseja-se determinar por onde ocorrerá o fluxo nas interconexões deuma rede qualquer. Problemas que entram nesta categoria são aqueles que envolvem tráfegode 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 foramexploradas na criação de algoritmos específicos, buscando soluções mais rápidas, maiseficientes computacionalmente, para tais problemas.

Pesquisa Operacional II 2Atualização: 18/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 122

Page 123: Pesquisa Operacional 1 - caetano.eng.br

1. 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çãoeficaz. No caso do problema de fluxo em rede, existe um problema que envolve pontos noespaço (ou tempo) e suas interconexões. Uma forma visual conveniente para representar estesmodelos 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; estarepresentação é chamada de grafo. Em um grafo de um problema de transporte, entretanto, osnomes não são "pontos" e "interconexões". Os pontos são chamados nós e os elementos deinterconexã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 umadireçã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 duasdireções, o grafo será não-direcionado, como o exemplo da figura 1.

Computacionalmente, os grafos são, em geral, representados como um conjunto denó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.

Pesquisa Operacional II 3Atualização: 18/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 123

Page 124: Pesquisa Operacional 1 - caetano.eng.br

2. BIBLIOGRAFIA

AHUJA, R.K; MAGNANTI, T.L; ORLIN, J.B. Network Flows: Theory, Algorithms andApplications. New Jersey: Prentice Hall, 1993.

MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. ThomsonPioneira, 2007.

ARENALES, M; ARMENTANO, V; MORABITO, R; YANASSE, H. PesquisaOperacional. Rio de Janeiro: Editora Campus, 2006

Pesquisa Operacional II 4Atualização: 18/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 124

Page 125: Pesquisa Operacional 1 - caetano.eng.br

Unidade 2: O Problema do TransporteProf. Daniel Caetano

Objetivo: Apresentar a modelagem do problema do transporte e capacitar para suasoluçã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 dosprodutos. A Qualquer-Cola tem uma série de fábricas/centros de distribuição, cada um delescom uma determinada produção, e deseja saber quantos engradados enviará de cada centro dedistribuição para cada ponto de venda, sendo que cada um destes pontos possui uma demandaespecífica, com o objetivo de reduzir os custos de transporte.

Este tipo de problema, bastante comum, é denominado "Problema do Transporte", ese refere ao problema básico em que temos uma determinada quantidade de origens de umproduto (fábricas, por exemplo), com uma capacidade de produção limitada, e destinos paraeste produto (lojas, por exemplo), que possuem uma determinada demanda pelos produtos.

Em geral, é possível transportar de qualquer fábrica para qualquer loja. Entretanto, oscustos podem variar bastante em cada caso. Por esta razão, existe uma dúvida clássica: quantolevar 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 veremostambém uma forma mais rápida e eficiente de solucioná-los.

Pesquisa Operacional II 1Atualização: 25/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 125

Page 126: Pesquisa Operacional 1 - caetano.eng.br

1. UM PROBLEMA DE TRANSPORTE

Conceitos Chave:

- Fabricas => Capacidade de Produção- Lojas => Demanda- Custos F para L- Grafo

Duas fábricas (F1 e F2) possuem capacidade de produção de 10000 e 15000engradados de Qualquer-Cola respectivamente, fornecendo um total de 25000 engradados quedevem ser entregues em 3 lojas (L1, L2 e L3), que possuem demandas de 10000, 4000 e11000 engradados respectivamente, completando demanda por 25000 engradados. Os custosde transporte (por engradado) de uma fábrica até uma loja são:

10912F29813F1

L3L2L1

Qual a quantidade de engradados que deve ser levada de cada fábrica Fx para cadaloja Ly, de forma a minimizar o custo de transporte?

2. MODELAGEM MATEMÁTICA

Conceitos Chave:

- Variáveis de Decisão: Xij => 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 perguntaoriginal: "quanto deve ser transportado de cada fábrica para cada loja?".

Pesquisa Operacional II 2Atualização: 25/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 126

Page 127: Pesquisa Operacional 1 - caetano.eng.br

Assim, se a quantidade de engradados transportada da fábrica i para a loja j forchamada de Xij, pode-se dizer, por exemplo, que X11 representa a quantidade de engradadosque deve ser transportada da fábrica 1 para a loja 1. Da mesma forma, X12 representa aquantidade de engradados que deve ser transportada da fábrica 1 para a loja 2, X21 representaa quantidade de engradados que deve ser transportada da fábrica 2 para a loja 1 e assim pordiante.

Como decorrência, se transportar um engradado da fábrica 1 para a loja 1 custa $ 13(como indicado na tabela) e o número de engradados transportado da loja 1 para a fábrica 1 éX11, então pode-se dizer que o custo do transporte dos engradados da fábrica 1 para a loja 1 é:

13 * X11

Se nenhum engradado for transportado, X11 = 0, então o custo será 13 * 0 = 0... ouseja, se nada for transportado da fábrica 1 para a loja 1, o custo será zero. Se um engradadofor transportado, X11 = 1 e o custo será 13 * 1= 13. Finalmente, se 100 engradados foremtransportados da fábrica 1 para a loja 1, X11 = 100 e o custo será 13 * 100 = 1300.

O raciocínio pode ser feito para todas as outras possibilidades de transporte; o custototal do transporte será a soma de todas estas parcelas que, neste caso, podem serrepresentadas da seguinte forma.

CT = 13 * X11 + 8 * X12 + 9 * X13 + 12* X21 + 9 * X22 + 10 * X23

Como o objetivo é minimizar o custo de transporte, a função objetivo fica:

[MIN] 13 * X11 + 8 * X12 + 9 * X13 + 12* X21 + 9 * X22 + 10 * X23

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 podeenviar mais do que produz; b) Nenhuma loja pode receber menos do que necessita.

2.1. 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. Nocaso da fábrica 1, que produz 10000 unidades, seu envio total é X11 + X12 + X13 (soma daquiloque ela envia para as lojas 1, 2 e 3, respectivamente). Assim, a primeira restrição será:

X11 + X12 + X13 ü 10000

No caso da fábrica 2, que produz 15000, e seu envio total é X21 + X22 + X23 (somadaquilo que ela envia para as lojas 1, 2 e 3, respectivamente). A segunda restrição, então, fica:

X21 + X22 + X23 ü 15000

Pesquisa Operacional II 3Atualização: 25/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 127

Page 128: Pesquisa Operacional 1 - caetano.eng.br

2.2. Nenhuma loja recebe menos do que necessita

A loja 1 precisa receber 10000 unidades. Tudo que ela recebe é X11 + X21 (soma doque é enviado para ela pelas fábricas 1 e 2, respectivamente). Assim, a terceira restrição será:

X11 + X21 ¶ 10000

Analogamente, as restrições quatro e cinco (referentes às lojas 2 e 3) são:

X12 + X22 ¶ 4000X13 + X23 ¶ 11000

Desta maneira, o modelo final será:

F.O. [MIN] 13 * X11 + 8 * X12 + 9 * X13 + 12* X21 + 9 * X22 + 10 * X23

S.A. X11 + X12 + X13 ü 10000X21 + X22 + X23 ü 15000X11 + X21 ¶ 10000X12 + X22 ¶ 4000X13 + X23 ¶ 11000

Em alguns casos pode-se desejar que o número de unidades enviadas a cada loja sejaexatamente 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* 100 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

Pesquisa Operacional II 4Atualização: 25/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 128

Page 129: Pesquisa Operacional 1 - caetano.eng.br

Apesar do Simplex resolver a contento um problema como o apresentado, é útil usarum algoritmo específico. Segundo Render e Stair Jr. (2000, apud Moreira, 2006), estesalgoritmos são particularmente interessantes porque:

1) Seus tempos de computação são, em geral, 100 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 encontraruma solução inicial válida. Infelizmente, aqui a solução inicial não é obtida zerando variáveise é necessário um método específico para iniciar o processo. Existem vários métodos paraisso. Neste curso será apresentado um chamado "método do canto noroeste".

3.1. O Método do Canto Noroeste

O primeiro passo é desenhar uma tabela, que terá sempre 2 colunas a mais que onúmero de centros de demanda (lojas, por exemplo) e 2 linhas a mais que o número deprodutores (fábricas, por exemplo). Para o problema da Qualquer-Cola apresentado, a tabelainicial é:

11.0004.00010.000Demanda

15.000F2

10.000F1SuprimentoL3L2L1

Nesta tabela, devem ser acrescentados os custo de transporte de cada trajeto dentrodos retângulos vazios no meio, entre parênteses, como indicado na tabela a seguir:

11.0004.00010.000Demanda

15.000(10)(9)(12)F2

10.000(9)(8)(13)F1SuprimentoL3L2L1

Agora, a partir da primeira célula no canto superior esquerdo (canto noroeste), deve-setentar preencher a demanda de cada coluna (da esquerda para a direita), seguindo nas linhasde cima para baixo. Nas tabelas seguintes estarão anotados em vermelho o valor que sobra desuprimento de cada fábrica e o que falta em cada centro de demanda após a alocação em cadapasso:

Pesquisa Operacional II 5Atualização: 25/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 129

Page 130: Pesquisa Operacional 1 - caetano.eng.br

11.00011.000

4.0004.000

10.0000

Demanda

15.00015.000

(10)(9)(12)F2

10.0000

(9)(8)(13)10.000

F1SuprimentoL3L2L1

Como a demanda da primeira coluna pode ser preenchida pelo suprimento da primeiralinha, segue-se para a segunda coluna. Considerando a demanda da segunda coluna (4000), aprimeira linha ainda tem condições de atendê-la?

Como a fábrica F1 já usou toda a sua produção para suprir a loja L1, a resposta éNÃO. Assim, indica-se ZERO na posição F1/L2 e parte-se para a segunda linha (segundafábrica), que ainda tem 15000 engradados. Usamos uma parte destas unidades para suprir aloja L2, na coluna 2:

11.00011.000

4.0000

10.0000

Demanda

15.00011.000

(10)(9)4.000

(12)F2

10.0000

(9)(8)0

(13)10.000

F1SuprimentoL3L2L1

Como a demanda da segunda coluna pode ser preenchida pelo suprimento da segundalinha, parte-se para a terceira coluna. Considerando a demanda da terceira coluna (11000), asegunda linha (fábrica) ainda tem condições de atendê-la?

Como sobraram ainda 11.000 unidades na F2, a resposta é SIM! Assim, devem serusadas estas unidades para suprir a demanda de L3:

11.0000

4.0000

10.0000

Demanda

15.0000

(10)11.000

(9)4.000

(12)F2

10.0000

(9)(8)0

(13)10.000

F1SuprimentoL3L2L1

Esta é uma solução possível, já que os requisitos foram respeitados. Entretanto, estasolução tem um custo alto: 13,00*10.000 + 9,00*4.000 + 10,00*11.000 = 130.000,00 +36.000,00 + 110.000,00 = 276.000,00. Para obtenção da tabela final, deve-se marcar ascélulas vazia com um pequeno "-".

Pesquisa Operacional II 6Atualização: 25/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 130

Page 131: Pesquisa Operacional 1 - caetano.eng.br

11.0004.00010.000Demanda

15.000(10)11.000

(9)4.000

(12)-

F2

10.000(9)-

(8)0

(13)10.000

F1SuprimentoL3L2L1

Com esta solução inicial pode-se partir para o algoritmo do problema do transporte.

3.2. A Lógica de Realocação de Cargas

O algoritmo baseia-se na realocação de cargas, ou seja, pequenas mudanças nasolução, trocando o fornecedor de uma loja por outro. Antes de ser apresentado o algoritmopropriamente dito, é preciso entender com clareza o mecanismo de realocação de carga.

Suponha, por exemplo, que tenha sido detectado que seria interessante passar atransportar UM ENGRADADO da fábrica F2 para a loja L1. Isso pode ser representadocolocando mais uma unidade na célula F2-L1 da tabela:

11.0004.00010.00010.001

Demanda

15.00015.001

(10)11.000

(9)4.000

(12)+1

F2

10.000(9)-

(8)0

(13)10.000

F1SuprimentoL3L2L1

Entretanto, como é possível ver, isso provoca um desequilíbrio: para atender a estasituação, F2 teria que produzir 15001 unidades (ao invés de 15000). Para contornar esteproblema, é preciso diminuir o número de engradados entregues pela fábrica F2 em algumadas outras lojas, como por exemplo a loja 2 (célula F2/L2):

11.0004.0003.999

10.00010.001

Demanda

15.00015.000

(10)11.000

(9)4.000-1

(12)+1

F2

10.000(9)-

(8)0

(13)10.000

F1SuprimentoL3L2L1

Entretanto, apesar de isso ter corrigido o suprimento de F2, agora a demanda de L2não está sendo atendida (3999, ao invés de 4000). Para acertar esta situação, é necessárioenviar um engradado de F1 para L2:

Pesquisa Operacional II 7Atualização: 25/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 131

Page 132: Pesquisa Operacional 1 - caetano.eng.br

11.0004.0004.000

10.00010.001

Demanda

15.00015.000

(10)11.000

(9)4.000-1

(12)+1

F2

10.00010.001

(9)-

(8)0+1

(13)10.000

F1SuprimentoL3L2L1

A demanda de L2 está corrigida, agora. Entretanto, o suprimento de F1 está maior quesua capacidade (10001, ao invés de 10000). Para ajustar o suprimento de F1, pode-se reduziro envio de engradados da fábrica F1 para a loja L1, sendo isso indicado com a subtração deuma unidade da posição F1/L1:

11.0004.0004.000

10.00010.000

Demanda

15.00015.000

(10)11.000

(9)4.000-1

(12)+1

F2

10.00010.000

(9)-

(8)0+1

(13)10.000-1

F1SuprimentoL3L2L1

Agora, com a realocação completa, a tabela está novamente equilibrada. Mas será querealmente valeu a pena fazer essa realocação? Quanto o custo diminuiu por realocar as cargasdesta maneira?

Isto pode ser calculado de duas formas: a primeira delas é refazendo toda a conta decusto 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:

F1/L2: +1 * 8 = 8F2/L1: +1 * 12 = 12

Por outro lado, nas células onde houve uma diminuição de uma unidade, houve umdecréscimo de custo:

F1/L1: -1 * 13 = -13F2/L2: -1 * 9 = -9

O valor total da diferença de custo foi: 8 + 12 -13 -9 = 20 - 22 = -2

O resultado -2 significa que o transporte ficou $ 2,00 mais barato com essa relocação.É uma diferença baixa porque apenas um engradado foi realocado. Se mais engradados foremrealocados, a economia será maior. Como saber qual o máximo de relocações que possofazer? Simples. O truque é substituir o "+1" e "-1" das células por uma variável d, da seguinteforma:

Pesquisa Operacional II 8Atualização: 25/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 132

Page 133: Pesquisa Operacional 1 - caetano.eng.br

11.0004.00010.000Demanda

15.000(10)11.000

(9)4.000-d

(12)+d

F2

10.000(9)-

(8)0+d

(13)10.000-d

F1SuprimentoL3L2L1

Observando as células que estão perdendo unidades (-d), ou seja, F1/L1 e F2/L2, épossível ver que elas possuem, respectivamente, 10.000 e 4.000 engradados. O menor valorentre eles é, portanto, 4.000. Assim, o máximo valor que d pode assumir é 4.000 (pois,obviamente, nenhum valor na tabela pode ser negativo). Assim, se for considerado que d =4000, o resultado da relocação máxima será:

11.0004.00010.000Demanda

15.000(10)11.000

(9)0

(12)4000

F2

10.000(9)-

(8)4000

(13)6.000

F1SuprimentoL3L2L1

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 "-".

11.0004.00010.000Demanda

15.000(10)11.000

(9)-

(12)4000

F2

10.000(9)-

(8)4000

(13)6.000

F1SuprimentoL3L2L1

Este é o princípio da relocação, que pode ser realizada de uma forma mecânica: arelocaçã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:

Pesquisa Operacional II 9Atualização: 25/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 133

Page 134: Pesquisa Operacional 1 - caetano.eng.br

Com o ciclo determinado, verifica-se qual célula perde carga (-d) que possui o menorvalor de carga e este será o valor limite para d. Feito isso, Realiza-se as contas de economia, acélula que ficou zerada ganha o "-" e o passo está finalizado.

Entretanto, apesar de este exemplo ter sido apresentado com uma célula qualquer, esseprocesso não deve ser realizado a esmo, para todas as células vazias. A escolha de qual célulareceberá a realocação de carga é a essência do Algoritmo do Problema do Transporte.

3.3. O Algoritmo do Problema do Transporte

O algoritmo do problema do transporte é um procedimento que permite identificarqual a célula vazia que trará maior ganho se passar a conter carga, através de um processo derealocação de carga. Adicionalmente, o procedimento permite verificar em que momentonenhuma realocação permitirá economias, indicando o fim do processo.

Assim, a idéia do algoritmo é:

1) 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 1.

Pesquisa Operacional II 10Atualização: 25/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 134

Page 135: Pesquisa Operacional 1 - caetano.eng.br

Quando nenhuma relocação trouxer qualquer benefício, a solução ótima terá sidoencontrada. O algoritmo é mais facilmente compreendido se apresentado na forma deexemplo.

Para identificar a célula que trará mais economia ao receber carga, será necessáriovoltar à tabela inicial do problema da Qualquer Cola, com uma linha e uma coluna somadas àmesma:

K

11.0004.00010.000Demanda

15.000(10)11.000

(9)4.000

(12)-

F2

10.000(9)-

(8)0

(13)10.000

F1LSuprimentoL3L2L1

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:

K

11.0004.00010.000Demanda

15.000(10)11.000

(9)4.000

(12)-

F2

010.000(9)-

(8)0

(13)10.000

F1LSuprimentoL3L2L1

Os outros valores serão determinados iterativamente: para cada célula já com carga, ovalor correspondente de L e K deve ser tal que sua soma seja exatamente o custo unitário dacélula. Por exemplo, sendo o L da primeira linha é igual a zero e o custo da célula F1/L1igual a 13, tem-se que 0 + K = 13 e, portanto, K da coluna L1 =13.

Da mesma forma, sendo o L da primeira linha é igual a zero e o custo da célula F1/L2igual a 8, tem-se que 0 + K = 8 e, portanto, K da coluna L2 =8.

813K

11.0004.00010.000Demanda

15.000(10)11.000

(9)4.000

(12)-

F2

010.000(9)-

(8)0

(13)10.000

F1LSuprimentoL3L2L1

Pesquisa Operacional II 11Atualização: 25/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 135

Page 136: Pesquisa Operacional 1 - caetano.eng.br

Uma vez determinado o K da coluna L2, o L da linha F2 fica automaticamentedefinido: uma vez que a célula F2/L2 tem custo 9 e o K da coluna L2 é 8, então é preciso que8 + L = 9, o que leva a um L = 1 para a linha F2.

813K

11.0004.00010.000Demanda

115.000(10)11.000

(9)4.000

(12)-

F2

010.000(9)-

(8)0

(13)10.000

F1LSuprimentoL3L2L1

Este L, junto com o custo da célula F2/L3, define o K da coluna L3:

9813K

11.0004.00010.000Demanda

115.000(10)11.000

(9)4.000

(12)-

F2

010.000(9)-

(8)0

(13)10.000

F1LSuprimentoL3L2L1

Com base nesta tabela, agora, é possível calcular o índice de melhoria de cada célulavazia. Este índice é calculado com o custo da célula vazia, subtraído do K de sua coluna e doL de sua linha. Por exemplo, a melhoria da célula F1/L3 é:

Célula C - K - L =F1/L3 9 - 9 - 0 = 0

Calculando para as outras, temos:

Célula C - K - L =F1/L3 9 - 9 - 0 = 0F2/L1 12 -13 - 1 = -2

Este resultado significa que realocar carga para a célula F1/L3 não melhora em nada asolução... mas realocar carga na célula F2/L1 vai reduzir o custo em $ 2,00 por cada unidaderealocada!

Então, deve-se determinar o ciclo de realocação que acrescenta +d na célula F2/L1:

Pesquisa Operacional II 12Atualização: 25/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 136

Page 137: Pesquisa Operacional 1 - caetano.eng.br

A célula F2/L2 determina o limite para d, que é 4000. Fazendo as contas, o resultadoda realocação é:

11.0004.00010.000Demanda

15.000(10)11.000

(9)-

(12)4000

F2

10.000(9)-

(8)4000

(13)6.000

F1SuprimentoL3L2L1

Com a nova distribuição, repete-se o processo, calculando os novos Ls e Ks:

11813K

11.0004.00010.000Demanda

-115.000(10)11.000

(9)-

(12)4000

F2

010.000(9)-

(8)4000

(13)6.000

F1LSuprimentoL3L2L1

E, agora, calcula-se novamente os índices de melhoria para as células vazias:

Célula C - K - L =F1/L3 9 -11 - 0 = -2F2/L2 9 -8 -(-1) = 2

Agora a célula que provoca melhoria é a célula F1/L3. O ciclo dela fica:

K

11.0004.00010.000Demanda

15.000(10)11.000-d

(9)-

(12)4000+d

F2

10.000(9)+d

(8)4000

(13)6.000-d

F1LSuprimentoL3L2L1

Pesquisa Operacional II 13Atualização: 25/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 137

Page 138: Pesquisa Operacional 1 - caetano.eng.br

E o valor máximo que d pode assumir agora é 6000. Assim, recalculando, o resultadoserá:

K

11.0004.00010.000Demanda

15.000(10)5.000

(9)-

(12)10.000

F2

10.000(9)6.000

(8)4000

(13)-

F1LSuprimentoL3L2L1

Novamente, repete-se o processo, calculando os novos Ls e Ks:

9811K

11.0004.00010.000Demanda

115.000(10)5.000

(9)-

(12)10.000

F2

010.000(9)6.000

(8)4000

(13)-

F1LSuprimentoL3L2L1

E os índices de melhoria das células vazias:

Célula C - K - L =F1/L1 13 -11 - 0 = 2F2/L2 9 -8 -1 = 0

Como não é possível mais melhorar a solução, o problema está finalizado. O resultadofinal, ótimo, é: X12 = 4.000, X13 = 6.000, X21 = 10.000 e X23 = 5.000. Os demais Xij 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

Pesquisa Operacional II 14Atualização: 25/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 138

Page 139: Pesquisa Operacional 1 - caetano.eng.br

É notório que o algoritmo apresentado funciona apenas no caso em a oferta total (dasfábricas) e a demanda total (das lojas) é exatamente a mesma; por outro lado, na prática, issoraramente ocorre. Ou a oferta ou a demanda é maior.

Quando a oferta é maior, o problema pode ser resolvido normalmente. Simplesmenteo total transportado será inferior à produção global das fábricas. Entretanto, se a demanda formaior, o problema se torna insolúvel.

Para contornar este problema, basta introduzir uma fábrica fictícia, capaz de produzirexatamente a quantidade que falta de unidades para o equilíbrio entre oferta e demanda, eligada 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 (eminimizado) corretamente. Entretanto, as lojas que receberem mercadorias da fábrica fictíciaestarão, na verdade, deixando de receber estes produtos.

5. EXERCÍCIO

Três fábricas (F1, F2 e F3) possuem capacidade de produção de 10000 unidades,15000 unidades e 5000 unidades respectivamente, compondo um total de 30000 unidades quedevem ser entregues em 4 lojas (L1, L2, L3 e L4) que possuem demandas de 8000 unidades,4000 unidades, 7000 unidades e 11000 unidades respectivamente, completando demanda por30000 unidades. Os custos de transporte (por unidade) das fábrica até as loja são:

6988F31410912F2129813F1L3L3L2L1

Qual a quantidade de produtos que eu levo de cada fábrica Fx para cada loja Ly, deforma a minimizar o custo de transporte?

6. BIBLIOGRAFIA

MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. ThomsonPioneira, 2007.

ARENALES, M; ARMENTANO, V; MORABITO, R; YANASSE, H. PesquisaOperacional. Rio de Janeiro: Editora Campus, 2006

AHUJA, R.K; MAGNANTI, T.L; ORLIN, J.B. Network Flows: Theory, Algorithms andApplications. New Jersey: Prentice Hall, 1993.

Pesquisa Operacional II 15Atualização: 25/08/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 139

Page 140: Pesquisa Operacional 1 - caetano.eng.br

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 decaminho 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 sedepara com algum problema em que é necessários otimizar um trajeto, visando redução decusto de material, transporte, tempo de resposta... enfim, problemas que envolvem a reduçãode algum tipo de "custo" que varia de acordo com o trajeto escolhido.

Um destes casos surge quando, durante o desenvolvimento de um sistema gerencialqualquer, o cliente solicita que seja calculado qual o trajeto que seu motoboy deve fazer pararealizar 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, oGPS 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 comalgoritmos mais específicos que o Simplex, como o Label Setting, Label Correcting, NetworkSimplex, Out-of-Kilter, dentre outros. No caso específico de caminho mínimo entre dois

Pesquisa Operacional II 1Atualização: 04/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 140

Page 141: Pesquisa Operacional 1 - caetano.eng.br

pontos sem mais nenhum tipo de restrição, os algoritmos mais adequados são o LabelCorrecting e o Label Setting. Por questões didáticas, será apresentado inicialmente oalgoritmo Label Setting e, em aulas posteriores, o Label Correcting.

1. 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 adistância entre os baricentros das sub-regiões da cidade. Obviamente, para este taxista, é umgrande negócio reduzir ao máximo a distância percorrida, economizando combustível etempo. Pensando no problema do taxista, a empresa para a qual ele trabalha encomendou umsoftware que, dada a origem e o destino, forneça o melhor caminho. Assim, apenas com ocusto adicional do software, a empresa está contribuindo para uma qualidade superior de seusserviç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íficodentro dos problemas de fluxo em rede: o problema do caminho mínimo. Este problema temainda características mais específicas, dentro de um problema de caminho mínimo: é umproblema 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 querestringe 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, porsimplicidade, 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 1.:

Figura 1: Exemplo de um problema a ser resolvido para o taxista

Pesquisa Operacional II 2Atualização: 04/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 141

Page 142: Pesquisa Operacional 1 - caetano.eng.br

Em um problema deste nível, com este número reduzido de vias, possibilidades erestrições... É até possível pensarmos em um cálculo manual. Entretanto, a situação se tornaextremamente 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, fazertodas 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 existemsoluções que resolvem este tipo de problema em tempo real, em sistemas como o Apontadore 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

Pesquisa Operacional II 3Atualização: 04/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 142

Page 143: Pesquisa Operacional 1 - caetano.eng.br

- 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 desprezadastodas as características irrelevantes para a resolução, além de serem explicitados todos osdados que possam ser necessários à solução.

Como a idéia apresentada desde o início é resolver o problema por um algoritmo defluxo em rede, modelar o problema como uma rede é praticamente uma necessidade. Paratanto, será utilizada a representação em grafo, com nós e arcos, sendo que os nósrepresentaram 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álculodas distâncias pela soma dos comprimentos dos arcos. Neste instante, a rede do taxista podeser 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, umamostrando que entrou 1 unidade no ponto de partida e uma indicando que saiu uma unidadeno 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) eele simplesmente desaparece (já que a representação dele saindo do nó simplesmente não foifeita). A mesma incoerência ocorre no nó final, onde um indivíduo sai do sistema sem nuncater chegado àquele nó.

É necessário, então, indicar variáveis em cada um dos arcos, especificando se oindivíduo está passando por aquele arco ou não, de forma que todos os nós estejamequilibrados: se chegou um indivíduo a um dado nó, este indivíduo também precisa sairdaquele 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.

Pesquisa Operacional II 4Atualização: 04/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 143

Page 144: Pesquisa Operacional 1 - caetano.eng.br

.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 Xij podeindicar se o indivíduo está usando o arco que sai do nó i para o nó j. Se esta variável vale 1,indica que o indivíduo passa por aquele arco; se ela valer 0, o indivíduo não passa por aquelearco.

Em um nó podem chegar vários arcos, e também podem sair vários arcos. Assim, paraque um nó esteja em equilíbrio, isto é, tudo que chegar nele tem também que sair, a soma dofluxo de todos os arcos que chegam neste nó deve ser ser igual à soma do fluxo de todos osarcos 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 ficaninguém. Todo mundo que chega nele, sai dele". Considerando que A seja o conjunto detodos os arcos (m,n) de uma rede, pode-se representar matematicamente esta situação para onó 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 destemesmo nó i, o resultado deve ser sempre zero. Em outras palavras, todo mundo que chega emno nó i, sai do nó i.

Esta representação é boa para nós genéricos, do meio da rede, mas não é válida paraos nós de Origem e de Destino, já que nestes nós há o "aparecimento" e o "desaparecimento"de indivíduos, respectivamente.

Pesquisa Operacional II 5Atualização: 04/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 144

Page 145: Pesquisa Operacional 1 - caetano.eng.br

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á odesaparecimento 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, asequaçõ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 é 0nos nós genéricos, -1 no nó de origem e 1 no nó de destino. Assim, é possível indicar aeqüação para todos os nós de forma genérica:

Se i é o nó inicial, b = -1. Se i é o nó final, b = 1. Em todas as outras situações, b = 0.

Como isso, está completo o conjunto de restrições que garantem o balanceamento dosnós e, portanto, da rede. Entretanto, as restrições garantem uma solução possível; é necessáriodefinir uma função objetivo que garanta o menor comprimento possível para a solução.

Como xij terá valor 1 se um arco estiver sendo usado e 0 se não estiver sendo usado,pode-se afirmar que o custo de um arco na solução é:

cij * xij

onde cij é o comprimento do arco que vai de i para j. Isso significa que se o arcoestiver sendo usado, ele terá um custo cij * 1 = cij. Se o arco não estiver sendo usado, seucusto será cij * 0 = 0. A soma do custo de todos os arcos definidos desta forma, dá o custo dasolução, e a função objetivo - que é minimizar este custo - pode ser representada da seguinteforma:

Pesquisa Operacional II 6Atualização: 04/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 145

Page 146: Pesquisa Operacional 1 - caetano.eng.br

Em outras palavras, esta eqüação significa que deve-se minimizar a soma do custo detodos os trechos (arcos) que compõem o caminho usado.

Com essa modelagem completa, é possível observar que há praticamente uma equaçãode restrição para cada nó do sistema (o equilíbrio de cada nó) e cada uma delas terá tantasvariá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 earcos 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ógicaa) Etiquetarb) Selecionar nó "sem pai" para o qual se conhece todos os caminhosc) Calcular melhor caminhod) Indicar caminho na etiquetae) Voltar ao passo (b)

Se a abordagem para a solução por Simplex torna o problema muito complexo, comoproceder? Neste problema, a modelagem matemática será deixada de lado, e ele será atacadopor um outro ponto de vista: e se o objetivo fosse apenas calcular o caminho mínimo nopequeno 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 omelhor. Esta é exatamente a essência do algoritmo Label Setting.

Entretanto, para resolver problemas grandes é necessário que o processo sejaexplicitado da forma mais clara e eficiente possível. Uma maneira de sistematizar talprocedimento é descrita a seguir:

1. Cria-se uma "etiqueta" em todos os nós, com duas posições: uma para indicar quala distância acumulada até aquele nó e outra para indicar qual é o nó que o antecedeno melhor caminho, ou seja, seu nó "pai".

2. Indica-se em todos os nós um distância acumulada igual a "0" e o nó pai "-1",indicando que nenhum dos nós possui ancetessor ainda.

Pesquisa Operacional II 7Atualização: 04/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 146

Page 147: Pesquisa Operacional 1 - caetano.eng.br

3. O processo tem início marcando o nó inicial (de partida) como tendo a si mesmocomo nó "pai".

4. Dentre os nós que não possuem antecessores (pai = -1), deve-se selecionar um emque 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 estadistância é a soma da distância até o nó origem do arco de chegada, somada aocomprimento do arco.

6. Anota-se na etiqueta do nó selecionado a menor distância obstida nos cálculos dopasso 5, e marca-se como "nó pai" em sua etiqueta aquele que foi a origem destamenor 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 é ovalor da distância acumulada até este ponto, até que todos os nós tenham "o melhorantecessor" indicado.

Apesar de simples, uma descrição de algoritmo nem sempre é muito esclarecedora. Naseção seguinte será apresentado um exemplo da aplicação do algoritmo no problema dotaxista, com o objetivo de auxiliar na compreensão do algoritmo.

4. RESOLUÇÃO DE UM PROBLEMA

1. Indicação das etiquetas:

O primeiro passo do procedimento será desenhar a rede e desenhar uma pequenaetiqueta 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 feitocomo é mostrado na figura 6.

:Figura 6: A rede a ser resolvida com as etiquetas desenhadas.

Pesquisa Operacional II 8Atualização: 04/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 147

Page 148: Pesquisa Operacional 1 - caetano.eng.br

2. Preenchimento inicial:

Em seguida, deve-se preencher as etiquetas com os valores iniciais para cada nó: parao nó inicial, indica-se ele mesmo como pai (0) e em todos os outros indica-se "sem pai" (-1).Indica-se a distância acumulada igual a 0 em todas as etiquetas. O resultado desta etapa podeser 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ó 1 recebe ligação do nó 0 (origem) edo nó 2. Como o nó 2 ainda não tem pai (-1 na etiqueta), não se pode etiquetar o nó 1 ainda.

O nó 2, por sua vez, recebe ligação do nó 0 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çãoneste instante, já que depende dos nós 1, 2 e 3... Nenhum deles ainda calculado.

Finalmente, o nó 3 recebe ligação apenas do nó 0, que já está calculado (tem paiindicado). Desta forma, é possível calcular qual a distância acumulada, que será a distânciaacumulada em 0 (0 km) somada com a distância do caminho de 0 a 3 (22 km). Assim,indica-se na etiqueta do nó 3 que seu novo pai é o nó 0, e que a distância acumulada até entãoé 22 km, como pode ser visto na figura 8.

:Figura 8: Preenchimento da primeira etiqueta.

Pesquisa Operacional II 9Atualização: 04/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 148

Page 149: Pesquisa Operacional 1 - caetano.eng.br

4. Cálculo e indicação da segunda etiqueta:

Neste passo é possível observar que o nó 1 continua sendo de cálculo inviável, já queo nó 2 (do qual ele depende) continua sem pai indicado.

Entretanto, agora já é possível calcular o nó 2: ele depende do nó 0 e do nó 3, e ambosjá estão calculados e possuem pais. Mas qual será o nó pai do nó 2, o nó 0 ou o nó 3? Aresposta é simples: aquele que gerar uma menor distância acumulada.

Considerando o nó 0 como pai, a distância acumulada em 0 (0 km) somada com adistância do arco que liga o nó 0 ao nó 2 (15 km) perfaz uma distância total de 15 km.

Considerando o nó 3 como pai, a distância acumulada em 3 (22 km) somada com adistâ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ó 0 como pai é mais vantajosa, já que 15kmé uma distância menor que 24km. Por este motivo, o nó 0 será o eleito como "melhorantecessor". Assim, deve ser indicada na etiqueta do nó 2 que seu "pai" é o nó 0 e que adistância acumulada é 15 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ó 1 e o nó Destino. Onó destino depende de 1, então está fora de questão no momento. O nó 1, entretanto, dependedo nó 0 e do nó 2, ambos já calculados. Portanto, o nó 1 é o selecionado para esta etapa.

Novamente, há duas possibilidades de caminho. Vindo pelo nó 0, a distância totalacumulada será de 25 km (0 km + 25 km). Vindo pelo nó 2, entretanto, a distância totalacumulada será de 21 km (15 km + 6 km). É natural, portanto, a seleção do nó 2 como paipara o nó 1, já que 21km é uma distância menor que 25km.

Pesquisa Operacional II 10Atualização: 04/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 149

Page 150: Pesquisa Operacional 1 - caetano.eng.br

Assim, deve ser indicado na etiqueta do nó 1 que seu "pai" é o nó 2,e a distânciaacumulada é 21 km, como mostrado na figura 10.

Figura 10: 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 1, 2 e 3, sendo quetodos eles já estão devidamente calculados. Há, então, três possibilidades de caminho:

- Vindo pelo nó 1: 21 km + 5 km = 26 km- Vindo pelo nó 2: 15 km + 12 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ó 1, que deve serindicado na etiqueta como apresentado na figura 11.

:Figura 11: 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ícitoqual é o caminho que tem esta distância total.

Pesquisa Operacional II 11Atualização: 04/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 150

Page 151: Pesquisa Operacional 1 - caetano.eng.br

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 oseguinte caminho: D-1-2-O, o qual está indicado na figura 12, encerrando a solução doproblema.

Figura 12: Indicação do caminho mínimo.

É claro, entretanto, que este caminho está invertido, sendo o caminho da origem parao destino, é O-2-1-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 seguindoem direção sempre do "melhor antecessor" é possível identificar o melhor caminho, tendo oalgoritmo realizado seu trabalho com êxito.

Entretanto, um outro resultado interessante é obtido de sua aplicação: não apenas omelhor caminho para um único destino foi calculado, mas sim o melhor caminho paraqualquer destino, partindo do mesmo nó inicial.

Esse é um resultado bastante interessante já que em determinadas situações (comoentregas realizadas sempre a partir de uma determinada base) basta uma execução e já serãoobtidos 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,

Pesquisa Operacional II 12Atualização: 04/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 151

Page 152: Pesquisa Operacional 1 - caetano.eng.br

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

1. Usando o algoritmo Label Setting, encontre o caminho mínimo entre os pontos: 1 e13; 1 e 11; 1 e 9; 1 e 6.

7. BIBLIOGRAFIA

AHUJA, R.K; MAGNANTI, T.L; ORLIN, J.B. Network Flows: Theory, Algorithmsand Applications. New Jersey: Prentice Hall, 1993.

BRADLEY, S. P.; HAX, A. C.; MAGNANTI, T. L. Applied mathematicalprogramming. Reading, Mass.: Addison-Wesley Pub. Co., 1977.

CHVATAL, V. Linear programming. New York: W. H. Freeman, 1983.

GALLO, G; PALLOTTINO, S. Shortest path methods in transportation models. (M.Florian, ed.) Transportation Planning Models. North Holland, Elsevier Science Publishers. p.227-256, 1984.

WINSTON, W. L. Operations research: applications and algorithms. S.I.:International Thomson Publishing, 1994.

Pesquisa Operacional II 13Atualização: 04/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 152

Page 153: Pesquisa Operacional 1 - caetano.eng.br

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 eapresentar 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 deresolver 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" esua inabilidade de resolver problemas com ciclos. Para a solução deste tipo de problema, seráapresentado o algoritmo "Label Correcting".

1. 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

Pesquisa Operacional II 1Atualização: 16/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 153

Page 154: Pesquisa Operacional 1 - caetano.eng.br

- Lógica do Label Settinga) Etiquetarb) Selecionar nó "sem pai" para o qual se conhece todos os caminhosc) Calcular melhor caminhod) Indicar caminho na etiquetae) Voltar ao passo (b)

O problema a ser resolvido pode ser considerado o mesmo apresentado na unidadeanterior, o desenvolvimento do software para uma empresa de Taxi, de forma que o clientepudesse pagar a viagem antes de executá-la. Para isso, é preciso que o sistema saiba qual é ocaminho 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 ocaminho mínimo a ser encontrado é entre apenas dois pontos. Não haverá a preocupação comeventuais limitações de fluxo em cada arco.

1.1. Revendo: o Problema Modelado como um Grafo

O seguinte modelo (Figura 1) havia sido proposto anteriormente para estudo:

Figura 1: "Modelagem gráfica" da rede

E, para a solução, foi apresentado o algoritmo do Label Setting.

1.2. Revendo: o Algoritmo Label Setting

O algoritmo Label Setting pode ser sistematizado da seguinte forma:

1. Cria-se uma "etiqueta" em todos os nós, com duas posições: uma para indicar quala distância acumulada até aquele nó e outra para indicar qual é o nó que o antecedeno melhor caminho, ou seja, seu nó "pai".

Pesquisa Operacional II 2Atualização: 16/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 154

Page 155: Pesquisa Operacional 1 - caetano.eng.br

2. Indica-se em todos os nós um distância acumulada igual a "0" e o nó pai "-1",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 mesmocomo nó "pai".

4. Dentre os nós que não possuem antecessores (pai = -1), deve-se selecionar um emque 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 estadistância é a soma da distância até o nó origem do arco de chegada, somada aocomprimento do arco.

6. Anota-se na etiqueta do nó selecionado a menor distância obtida nos cálculos dopasso 5, e marca-se como "nó pai" em sua etiqueta aquele que foi a origem destamenor distância calculada.

7. Volta ao passo 4.

2. 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 foiapresentado, ele apresenta uma limitação bastante grande: não permite a resolução de redesque possuam ciclos, uma vez que nestes casos sempre haverá nós cujos cálculos serãointerdependentes. 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 apossibilidade de representá-la em camadas ordenadas, sendo que a movimentação dos arcos

Pesquisa Operacional II 3Atualização: 16/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 155

Page 156: Pesquisa Operacional 1 - caetano.eng.br

deve sempre ir de uma camada para a seguinte, nunca para a mesma camada ou a camadaanterior. A rede do problema resolvido pelo algoritmo Label Setting na seção anterior, porexemplo, 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 comoeste, sendo que inevitavelmente haverá arcos ligando nós de níveis mais altos em direção anó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 deum algoritmo de remoção de ciclos e, apenas depois disso, lançar mão da utilização do LabelSetting. Entretanto, esta pode não ser uma forma apropriada, já que a eliminação de ciclospura 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 lidarcom o problema dos ciclos, garantindo que a solução ótima seja atingida. Esta é a base daproposta 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) Etiquetarb) 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.

Pesquisa Operacional II 4Atualização: 16/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 156

Page 157: Pesquisa Operacional 1 - caetano.eng.br

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, 1984) foi desenvolvido paralidar com os casos em que o algoritmo Label Setting não se comporta bem, ou seja, aquelesque possuem ciclos. De forma geral, o Label Correcting nada mais é que uma variação doLabel 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 pequenasvariações:

- Existe um novo indicador na etiqueta: 0 se o nó não precisa ter seus sucessoresrecalculados e 1 se ele precisa ter seus sucessores recalculados.

- A partir de um nó com antecessor (já etiquetado) e que esteja marcado para ter seussucessores recalculados, são calculados todos os nós sucessores deste, substituindo a etiquetaanterior 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 parao Label Correcting é:

1. Cria-se uma etiqueta em todos os nós, indicando a distância acumulada "0" e "-1"como o nó antecessor. Indica-se também em todas as etiquetas que seus sucessores nãoprecisam ser calculados, com o valor "0".

2. Marca-se o nó 0 (origem) como sendo antecessor de si próprio, indicando "0" emsua etiqueta, distância total acumulada "0" e indicando que este nó precisa ter seus sucessorescalculados, indicando "1" 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ó comindicaçã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óssucessores deste, sendo esta distância a soma da distância total acumulada até o nó atual como 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 aindaque a nova distância seja inferior à anteriormente indicada na etiqueta do sucessor, indica-seno nó sucessor a nova distância acumulada, o novo nó antecessor e também se deve indicarque seus descendentes precisam ser recalculados.

6. Voltar ao passo 3.

Embora ligeiramente mais complexo, este algoritmo resolve inclusive casos comciclos, embora isso signifique um aumento significativo na quantidade de cálculosnecessários para a solução do problema.

Pesquisa Operacional II 5Atualização: 16/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 157

Page 158: Pesquisa Operacional 1 - caetano.eng.br

Uma outra característica positiva deste algoritmo é que ele permite que novos nós earcos 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 sendonecessitando recálculo de seus descendentes.

4. EXEMPLO

Usando o algoritmo Label Correcting, encontrar o caminho mínimo entre os pontos 1e 4.

Passo 1: O primeiro passo para a resolução é indicar as etiquetas:

Pesquisa Operacional II 6Atualização: 16/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 158

Page 159: Pesquisa Operacional 1 - caetano.eng.br

Passo 2: Realizar as marcações iniciais: o nó 1 é o pai de si mesmo (na parte de cimada etiqueta), com distância acumulada 0 (na parte do meio) e é preciso calcular seusdescendentes (1 na parte de baixo):

Passo 3: Dos nós que possuem descendentes a calcular (apenas o nó 1, por enquanto),deve-se selecionar aquele que tem a menor distância acumulada: o nó 1, tem distânciaacumulada 0. Assim, o nó 1 será usado para cálculo no próximo passo.

Passo 4: A partir do nó selecionado (neste caso, o nó 1), calcula-se todos os seusdescendentes: 2 e 5:

- Nó 2: 0 + 20 = 20 (distância acumulada até 1 + comprimento do arco de 1 a 2)- Nó 5: 0 + 41 = 41 (distância acumulada até 1 + comprimento do arco de 1 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 seuantecessor ("pai") como sendo o nó 1. Indica-se ainda que estes 2 nós precisam que seusdescendentes sejam calculados (indicando 1 na parte inferior da etiqueta), e que o nó 1 nãoprecisa mais ter seus descendentes calculados (indicando 0 na parte inferior da etiqueta):

Pesquisa Operacional II 7Atualização: 16/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 159

Page 160: Pesquisa Operacional 1 - caetano.eng.br

Passo 5: Dos nós que possuem descendentes a calcular (2 e 5), selecionar aquele quetem a menor distância acumulada: o nó 2 tem 20 acumulado e o nó 5 tem 41 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 seusdescendentes: 3 e 6:

- Nó 3: 20 + 11 = 31 (distância acumulada até 2 + comprimento do arco de 2 a 3)- Nó 6: 20 + 32 = 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") comosendo o nó 2. Adicionalmente, indica-se que estes nós precisam que seus descendentes sejamcalculados (indicando 1 na parte inferior das etiquetas), e que o nó 2 não precisa mais ter seusdescendentes calculados (indicando 0 na parte inferior da etiqueta):

Passo 7: Dos nós que possuem descendentes a calcular (3, 5 e 6), selecionar aqueleque tem a menor distância acumulada: o nó 3 tem 31 acumulado; o nó 5 tem 41 acumulado; eo 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 seusdescendentes: 4, 5 e 6:

- Nó 4: 31 + 27 = 58 (distância acumulada até 3 + comprimento do arco de 3 a 4)- Nó 5: 31 + 9 = 40 (distância acumulada até 3 + comprimento do arco de 3 a 5)- Nó 6: 31 + 21 = 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ânciaacumulada (58) no meio e a necessidade de cálculo dos descendentes (1) 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 41, como é possível ver pelaetiqueta. Seguindo o novo caminho, o valor acumulado fica 40. Como 40 é menor que 41, onovo caminho é melhor que o antigo. Por esta razão, a etiqueta do nó 5 será corrigida com osvalores novos de pai (3), distância acumulada (40) e a necessidade de recálculo de seusdescendentes.

Pesquisa Operacional II 8Atualização: 16/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 160

Page 161: Pesquisa Operacional 1 - caetano.eng.br

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ãobom quanto o novo. Finalmente, o nó 3 deve ser remarcado indicando que seus descendentesnão mais precisam ser recalculados:

Passo 9: Dos nós que possuem descendentes a calcular (4, 5 e 6), deve-se selecionaraquele que tem a menor distância acumulada: o nó 4 tem 58 acumulado; o nó 5 tem 40acumulado; e o nó 6 tem 52 acumulado. Assim, o nó 5 será usado no próximo passo.

Passo 10: A partir do nó selecionado (neste caso, o nó 5), calcular todos os seusdescendentes: 2 e 6:

- Nó 2: 40 + 10 = 50- Nó 6: 40 + 11 = 51Como 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 era20, e pelo novo caminho ela fica 50, sendo claramente uma piora. Este nó fica como estava.

No nó 6, a distância acumulada anterior era 52, e a nova é 51. Assim, há umamelhoria, e este nó deve ter sua etiqueta remarcada para pai como nó 2, distância acumulada51 e indicar que seus descendentes precisam ser recalculados. Adicionalmente deve-se indicarque o nó 5 não precisa mais ter seus descendentes calculados:

Pesquisa Operacional II 9Atualização: 16/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 161

Page 162: Pesquisa Operacional 1 - caetano.eng.br

Passo 11: Dos nós que possuem descendentes a calcular (4 e 6), selecionar aquele quetem a menor distância acumulada: o nó 4 tem 58 acumulado; e o nó 6 tem 51 acumulado.Assim, o nó 6 será usado no próximo passo.

Passo 12: A partir do nó selecionado (neste caso, o nó 6), calcular todos os seusdescendentes: 4:

- Nó 4: 51 + 3 = 54O 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ó 4deve ser corrigida: 6 (pai), 54 (distância) e 1 (calcular descendentes). O nó 6 deve serajustado para indicar que seus descendentes não mais precisam ser calculados (0):

Passo 13: Sobrou apenas um nó (4) com descendentes a serem calculados, então, o nó9 será usado no próximo passo.

Passo 14: Ocorre que o nó 4 não tem descendentes, então sua etiqueta pode sercorrigida para indicar que seus descendentes não precisam ser calculados.

Passo 15: Como não há mais nós com descendentes para calcular, esta é a solução doproblema. O caminho mínimos é definido da mesma forma que no label setting:

1 a 4: 4-6-5-3-2-1... ou 1-2-3-5-6-4, com distância total 54.

Pesquisa Operacional II 10Atualização: 16/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 162

Page 163: Pesquisa Operacional 1 - caetano.eng.br

5. ATIVIDADE

1. Usando o algoritmo Label Correcting, encontre o caminho mínimo entre os pontos:1 e 9; 1 e 5; 1 e 6.

2. Usando o algoritmo Label Correcting, encontre o caminho mínimo entre os pontos:1 e 7; 1 e 6; 1 e 5.

6. BIBLIOGRAFIA

AHUJA, R.K; MAGNANTI, T.L; ORLIN, J.B. Network Flows: Theory, Algorithmsand Applications. New Jersey: Prentice Hall, 1993.

BRADLEY, S. P.; HAX, A. C.; MAGNANTI, T. L. Applied mathematicalprogramming. Reading, Mass.: Addison-Wesley Pub. Co., 1977.

CHVATAL, V. Linear programming. New York: W. H. Freeman, 1983.GALLO, G; PALLOTTINO, S. Shortest path methods in transportation models. (M.

Florian, ed.) Transportation Planning Models. North Holland, Elsevier Science Publishers. p.227-256, 1984.

WINSTON, W. L. Operations research: applications and algorithms. S.I.:International Thomson Publishing, 1994.

Pesquisa Operacional II 11Atualização: 16/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 163

Page 164: Pesquisa Operacional 1 - caetano.eng.br

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ãosolú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é omomento. Em alguns casos, existem múltiplas fontes e múltiplos sorvedouros (como ocorriano problema do transporte); com efeito, este é o problema mais comum, em termos detransporte, e os vários caminhos mínimos para transporte precisam ser determinados a umtempo só.

Nestes casos é utilizado um algoritmo chamado "Network Simplex", cujo mecanismosde cálculo tem muito mais de semelhante com os problemas de caminho mínimo que com oSimplex propriamente dito. Entretanto, a origem deste método de cálculo é o método Simplexe, por esta razão, seu nome é Network Simplex (ou Simplex das Redes).

1. O NETWORK SIMPLEX

Conceitos Chave:

- Obtenção de custo mínimo * Diversos caminhos simultâneos (Ps)

- Método iterativo

Pesquisa Operacional II 1Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 164

Page 165: Pesquisa Operacional 1 - caetano.eng.br

* 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-1 arcos (N é o número de nós)b) P0 = 0c) Pi = Pi-1 + ci-1,i

d) Para arcos não presentes na solução: DPj = Pi + cij - Pj

e) Se todos os DPj ¶ 0, solução ótimaf) Se arcos tiveram DPj < 0, o mais negativo entrará na solução (ciclo).g) Balanceamento da redeh) Remover um dos arcos (voltando a N-1)i) Voltar ao passo (c)

O método Network Simplex é uma maneira de resolver o problema de fluxo em redecitado anteriormente, baseado na obtenção do custo mínimo para realizar os diversoscaminhos dentro da rede (chamados de Ps).

Da mesma forma que o Método Simplex, é um método iterativo que, a partir de umasolução viável, avalia qual seria o ganho da substituição de um dos arcos da solução por umdos arcos não presentes na solução. Caso a adição de um (ou mais) arcos resultem em umasolução melhor (redução em um dos Ps), o melhor destes arcos é escolhido e passa a fazerparte da solução, e o arco correspondente da solução anterior passa a não fazer mais parte danova.

A grande dificuldade deste algoritmo, para problemas grandes, reside na necessidadede se iniciar sua aplicação a partir de uma solução viável, que nem sempre pode ser obtidacom um baixo esforço computacional.

1.1. Algoritmo Network Simplex

O algoritmo Network Simplex pode ser descrito da seguinte forma:

1) Procura-se uma solução com N-1 arcos que não forme ciclos. N é o número de nós.2) Calcula-se o P para cada um nós, onde Pi = Pi-1 + ci-1,i, lembrando que, caso a

direção não seja indicada, cij = -cji. O P do nó admitido como inicial é sempre consideradoigual a zero.

3) Para cada arco (i, j) não presente na solução, calcula-se qual seria o DPj, se tal arco(i, j) estivesse presente na solução: DPj = Pi + cij - Pj, lembrando que, caso a direção não sejaindicada, cij = -cji.

Pesquisa Operacional II 2Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 165

Page 166: Pesquisa Operacional 1 - caetano.eng.br

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 melhoradacom 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-1 arcos na solução.9) Volta ao passo 2.

1.2. Exemplo de Algusn Passos do Algoritmo Network Simplex

Nesta seção será apresentada a aplicação de uma iteração do algoritmo NetworkSimplex. Para isso, considere a rede da figura abaixo:

Como não será feita uma aplicação completa, não importa, neste momento, os custosde cada arco e nem os cálculos dos Ps em si, que são bastante similares ao cálculo dos nósdescendentes do método do caminho mínimo.

1) Procura-se uma solução com N-1 arcos (4, neste caso) que não forme ciclos:

2) Calcula-se o P para cada um nós, onde Pi = Pi-1 + ci-1,i, lembrando que, caso adireção não seja indicada, cij = -cji. O P do nó admitido como inicial é sempre consideradoigual a zero.

Pesquisa Operacional II 3Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 166

Page 167: Pesquisa Operacional 1 - caetano.eng.br

3) Para cada arco (i, j) não presente na solução, calculamos qual seria o DPj, se talarco (i, j) estivesse presente na solução: DPj = Pi + cij - Pj, lembrando que, caso a direção nãoseja indicada, cij = -cji.

4) Como o objetivo é minimizar o custo do caminho, se todos os DPs forem nãonegativos (as trocas de arcos possíveis não melhorarão a solução), o caminho ótimo foiencontrado. Caso contrário, continua-se com o passo 5.

5) Se algum dos DPs for negativo, isso significa que a solução pode ser melhoradacom a substituição do arco que gerou tal DP. Para efeito de demonstração, suponha-se que oarco (4,5) reduziria o custo da solução. O seguinte ciclo seria formado: 1-4-5/1-3-5:

6) Se o objetivo é aumentar o fluxo nos arcos do lado 1-4-5 do ciclo (uma vez queeles propiciam redução de custo), será necessário diminuir o fluxo dos arcos do lado docaminho 1-3-5. A nova configuração fica assim:

7) Como não é possível ter um ter fluxo negativo, o maior valor que h pode assumir é1. Assim, a nova solução fica:

Pesquisa Operacional II 4Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 167

Page 168: Pesquisa Operacional 1 - caetano.eng.br

8) Agora, basta eliminar um dos arcos desnecessários, para eliminar o ciclo e voltar ater N-1 arcos na solução:

9) Volta ao passo 2.

2. BIBLIOGRAFIA

AHUJA, R.K; MAGNANTI, T.L; ORLIN, J.B. Network Flows: Theory, Algorithms andApplications. New Jersey: Prentice Hall, 1993.

BRADLEY, S. P.; HAX, A. C.; MAGNANTI, T. L. Applied mathematical programming.Reading, Mass.: Addison-Wesley Pub. Co., 1977.

WINSTON, W. L. Operations research: applications and algorithms. S.I.: InternationalThomson Publishing, 1994.

Pesquisa Operacional II 5Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 168

Page 169: Pesquisa Operacional 1 - caetano.eng.br

Unidade 6: Emulação e Simulação Prof. Daniel Caetano

Objetivo: Apresentar os conceitos de emulação e simulação, e capacitar para aaplicaçã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 pesquisaoperacional, o conceito de simulação é bastante importante e, ainda que o conceito deemulação não seja tão relacionado, é importante diferenciá-los.

Um problema comum, por exemplo, é verificar se uma solução proposta para umdeterminado problema está adequada, em casos que envolvem fatores variáveis. É possíveldeterminar com mais ou menos simplicidade o número de guichês necessário para atenderuma determinada quantidade de pessoas, mas como se pode determinar o tamanho máximoprová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étodobastante comum de geração de valores para simulação, o chamado Método Monte Carlo.

Pesquisa Operacional II 1Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 169

Page 170: Pesquisa Operacional 1 - caetano.eng.br

1. 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 oconceito 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 respondeexatamente da mesma maneira que um objeto modelado. Isso significa duas coisas:

a) Deve ser impossível diferenciar os resultados obtidos pelo modelo daqueles obtidosa 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 afunção de um hardware; isso significa que o software é um modelo do hardware que, com asmesmas entradas, produz exatamente as mesmas saídas que o hardware real. Um software quepermite executar os programas de um computador (ou videogame) em outro é, portanto, umemulador: dada uma mesma entrada (o programa do computador original real), é geradaexatamente a mesma saída (o programa ou jogo, como é percebido pelo usuário).

Figura 1: Comportamento do objeto real A e de sua emulação

Pesquisa Operacional II 2Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 170

Page 171: Pesquisa Operacional 1 - caetano.eng.br

A figura 1 representa exatamente a situação ocorrida na emulação: para uma mesmaentrada X, a saída será sempre Y (que é uma função de X), seja no objeto real A, seja em suaemulação. Note que a saída Y ser sempre a mesma para uma entrada X pressupõe que tanto oobjeto real quanto a emulação partem do mesmo estado E original, pois as saídas Ydependem 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 modelodeterminístico-probabilístico que responde resultados com a mesma probabilidade que umobjeto modelado. Isso significa duas coisas:

a) Deve ser impossível diferenciar os resultados obtidos pelo modelo daqueles obtidosa partir do objeto real.

b) Dado um conjunto de entradas, as saídas não serão sempre as mesmas (nem nomodelo, nem na realidade). Entretanto, a probabilidade de cada resultado deve ser a mesmapara 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, asprobabilidades Z de cada saída Y serão sempre as mesmas. Note que isso não significa quehaverá 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 aodeterminístico, é porque é comum que problemas de simulação envolvam também relaçõesdeterminísticas. Por exemplo, se alguém for simular a distância alcançada pelo tiro de umaespingarda, apesar de alguns fatores probabilísticos poderem ser considerados (a arma nãodisparar, 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.

Pesquisa Operacional II 3Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 171

Page 172: Pesquisa Operacional 1 - caetano.eng.br

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 gargalode uma operação e tentar gerar alternativas de operação de forma a evitar o gargalo eaumentar a eficiência do sistema como um todo.

Quando o funcionamento do sistema envolve apenas variáveis determinísticas (cujosvalores 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 oproblema através de um algoritmo computacional de otimização, determinando exatamentecomo o sistema deve funcionar.

Entretanto, algumas vezes isso é muito difícil ou, até mesmo, impossível; as razõespara essa dificuldade podem ser várias. Por exemplo, o sistema como um todo pode sercomplexo demais para uma modelagem matemática simples; O sistema pode tambémenvolver variáveis probabilísticas, que levam a modelagens matemáticas extremamentecomplexas e cujos mecanismos de solução são ainda mais complexos.

Nestes casos é comum que especialistas proponham soluções com base emindicadores e em sua experiência; entretanto, em muitos casos é conveniente ter uma boaidéia de como o sistema operaria nas novas condições propostas antes de implementar isso naprática. Com essa avaliação prévia seria possível verificar não apenas se a solução propostarealmente é boa, mas também perceber de antemão alguns conflitos que possam surgirseguindo a nova forma de operar.

Para poder realizar essa avaliação e verificação, é necessário criar um modelo desimulação e usá-lo para, a partir dos resultados da simulação, inferir sobre o comportamentodo sistema real.

Pesquisa Operacional II 4Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 172

Page 173: Pesquisa Operacional 1 - caetano.eng.br

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(1) = 0,10; P(2) = 0,15; P(4) = 0,25; P(5) = 0,07; P(6) = 0,05

= Soma das probabilidades é sempre 1!= 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étodopara 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 nacapacidade 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 1.

O Método Monte Carlo consiste em transformar números como estes da tabela emvalores possíveis de um problema e que tenham uma determinada probabilidade de ocorrer. Atítulo de exemplo da operação, suponhamos que em uma situação real, um sistema responda 6valores distintos: 1, 2, 3, 4, 5 e 6. Cada um deles tem uma probabilidade (freqüência de saída)associada: P(1) = 0,10; P(2) = 0,15; P(3) = 0,38; P(4) = 0,25; P(5) = 0,07 e P(6) = 0,05.Repare que a soma das probabilidades de todos os resultados tem que ser 1,00.

Se for necessário simular uma seqüência de saídas numéricas deste sistema, é precisodefinir uma maneira de encontrar uma seqüência destes 6 números de forma que aprobabilidade de cada um deles sair se mantenha. O Monte Carlo será usado para isso e oprimeiro passo é definir uma tabela com as probabilidades (freqüências) acumuladas:

Valor Probabilidade P. Acumulada1 0,10 0,102 0,15 0,253 0,38 0,634 0,25 0,885 0,07 0,956 0,05 1,00

Pesquisa Operacional II 5Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 173

Page 174: Pesquisa Operacional 1 - caetano.eng.br

Agora, é preciso definir 10 valores que serão relacionados ao valor 1, 15 valores queserão relacionados ao valor 2, 38 valores que serão relacionados ao número 3 e assim pordiante. Isso permite que, ao sortear números entre 0 e 99, o valor 1 tem 10 chances em 100 desair (probabilidade 0,10). Da mesma forma, o número 2 tenha 15 chances em 100 de sair(probabilidade 0,15), o número 3 tenha 38 chances em 100 de sair (probabilidade 0,38) eassim por diante. Uma maneira fácil de fazer isso é usar números seqüenciais:

Valor Real Valores Sorteados Equivalentes1 0,1,2,3,4,5,6,7,8,9 (10 valores)2 10,11,12,13,14,15,16,17,18,19,20,21,22,23,24 (15 valores)3 25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,

44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62 (38 valores)

4 63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,8182,83,84,85,86,87 (25 valores)

5 88,89,90,91,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 ovalor da probabilidade acumulada multiplicada por 100:

Valor Probabilidade P. Acumulada Último valor1 0,10 0,10 92 0,15 0,25 243 0,38 0,63 624 0,25 0,88 875 0,07 0,95 946 0,05 1,00 99

Assim, se considerarmos os números seqüenciais, fica fácil encontrá-los a partir daprobabilidade acumulada: basta pegar o número da probabilidade desconsiderando a vírgula esubtrair 1, lembrando que o intervalo seguinte começa no próximo número!

Valor Probabilidade P. Acumulada Intervalo1 0,10 0,10 0-92 0,15 0,25 10-243 0,38 0,63 25-624 0,25 0,88 63-875 0,07 0,95 88-946 0,05 1,00 95-99

Mas, para que serve isso? Bem, vamos pegar 20 valores da tabela 1; neste caso, vamosadotar os números da primeira coluna, de cima para baixo, desprezando a coluna da centena.Os valores estão representados a seguir:

Pesquisa Operacional II 6Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 174

Page 175: Pesquisa Operacional 1 - caetano.eng.br

# Valor Valor 21 041 412 802 023 712 124 936 365 849 496 741 417 339 398 111 119 474 7410 968 6811 620 2012 973 7313 598 9814 134 3415 734 3416 156 5617 766 6618 675 7519 566 6620 104 04

Agora, vamos converter o "Valor 2" (de dois dígitos) para os valores de 1 a 6, usandopara isso os intervalos determinados previamente:

Valor Probabilidade P. Acumulada Intervalo1 0,10 0,10 0-92 0,15 0,25 10-243 0,38 0,63 25-624 0,25 0,88 63-875 0,07 0,95 88-946 0,05 1,00 95-99

Por exemplo: 41 cai no intervalo do número 3, então ele representa o número 3. 02 caino intervalo do número 1, então ele representa o número 1... e assim por diante. O resultado:

# Valor Valor 2 Simulado1 041 41 32 802 02 13 712 12 24 936 36 35 849 49 36 741 41 37 339 39 38 111 11 29 474 74 410 968 68 411 620 20 212 973 73 413 598 98 614 134 34 315 734 34 316 156 56 317 766 66 418 675 75 419 566 66 420 104 04 1

Pesquisa Operacional II 7Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 175

Page 176: Pesquisa Operacional 1 - caetano.eng.br

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 (20):

Valor Ocorrências Prob. Simulação1 2 2/20 = 0,102 3 3/20 = 0,153 8 8/20 = 0,404 6 6/20 = 0,305 0 0/20 = 0,006 1 1/20 = 0,05

Comparando com as probabilidades teóricas:

Valor Ocorrências Prob. Simulação Prob. Teórica Diferença1 2 2/20 = 0,10 0,10 0,002 3 3/20 = 0,15 0,15 0,003 8 8/20 = 0,40 0,38 +0,024 6 6/20 = 0,30 0,25 +0,055 0 0/20 = 0,00 0,07 -0,076 1 1/20 = 0,05 0,05 0,00

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 onúmero de resultados, mais próxima as probabilidades dos resultados simulados serão dasprobabilidades teórica do objeto real simulado.

Como é sempre necessário um grande número de "rodadas" para garantir que osresultados da simulação sejam próximos aos do sistema real, é usual que as simulações sejamprogramadas e resolvidas por computador.

Vale notar, entretanto, que o número alto de execuções apenas garante a proximidadedos resultados probabilísticos do modelo com aqueles definidos pela teoria (ou que seesperaria na realidade); um grande número de execuções jamais corrigirá erros conceituais nomodelo.

Pesquisa Operacional II 8Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 176

Page 177: Pesquisa Operacional 1 - caetano.eng.br

Tabela 1: Números Aleatórios de 3 dígitos (fonte: http://www.random.org/integers/)041 256 229 284 562 531 669 300 520 654802 376 779 418 034 993 417 062 028 645712 264 379 872 740 194 544 157 331 535936 002 586 108 439 625 262 017 270 092849 244 047 366 777 436 081 926 009 774741 883 991 015 663 792 869 039 065 087339 769 559 108 777 791 771 242 066 620111 495 429 329 506 384 056 314 587 680474 675 607 890 001 264 125 194 442 897968 888 964 839 922 692 920 733 129 724620 576 818 734 897 114 087 296 430 087973 756 934 421 834 605 477 318 479 268598 156 321 522 219 137 470 565 484 127134 924 799 938 497 398 735 952 729 403734 657 774 149 921 578 976 908 037 682156 160 094 327 805 679 498 081 581 762766 289 025 624 226 388 940 754 270 931675 874 767 207 773 058 866 151 261 965566 136 773 798 790 646 473 149 362 584104 439 068 247 829 778 841 944 472 450772 567 592 260 102 836 764 594 139 337161 416 424 996 745 909 483 723 200 651229 650 668 680 432 040 957 482 750 432025 751 539 352 871 272 489 516 432 058091 870 925 741 324 527 772 692 407 756469 095 372 667 292 234 057 754 004 104813 187 518 701 126 763 835 074 587 074334 515 849 176 907 004 579 674 319 664683 176 231 552 712 597 440 604 640 615445 027 364 720 880 497 790 063 139 585123 498 003 081 151 476 939 626 116 520271 452 930 487 190 387 448 858 557 512864 143 598 593 988 907 753 238 475 511326 489 706 327 910 228 436 943 821 689469 775 274 126 886 20 708 933 089 888707 478 231 802 754 094 318 829 229 272774 174 531 665 511 196 748 861 503 544162 250 289 261 055 313 944 571 658 310437 350 072 279 446 866 290 745 494 942734 415 348 913 706 874 423 895 791 651812 962 660 893 692 215 723 771 657 924831 937 789 319 539 663 914 596 648 670073 245 604 589 527 886 029 318 878 113089 309 632 338 639 565 528 394 164 888532 981 847 211 624 560 603 607 458 065334 733 405 581 218 851 554 902 834 568404 787 216 340 405 513 753 148 376 151248 552 866 655 493 558 838 235 986 867137 368 298 201 919 300 668 565 572 872

296 426 275 918 389 246 377 881 741 299

4. UMA APLICAÇÃO DO MÉTODO MONTE CARLO

Uma distribuição muito importante na simulação de eventos é a distribuição dePoisson. A distribuição de Poisson é uma distribuição discreta, isto é, que associaprobabilidades a um dado número. Na teoria de filas ela é usada para determinar aprobabilidade 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ésde Monte Carlo, de forma que se possa simular as chegadas em uma fila, por exemplo.

Pesquisa Operacional II 9Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 177

Page 178: Pesquisa Operacional 1 - caetano.eng.br

Figura 3: Distribuição de probabilidade de Poisson para diferentes médias (l)

4.1. Exercício Exemplo (MOREIRA, 2007 - modificado)

A chegada de clientes à bilheteria de um teatro obedece a uma distribuição dePoisson, com taxa de 1,2 cliente por minuto. Executar 30 minutos de simulação, verificandoquantos clientes chegam a cada minuto.

Solução:

Considerando k o número de clientes que chegam por minuto, a distribuição dePoisson nos diz que:

P(k) = (lk * e-l) / k!

Se a taxa média de chegadas é 1,2, isso significa que l = 1,2 e, lembrando, que e éum número especial que vale 2,7183. Podemos reescrever esta expressão da seguinte forma:

P(k) = (1,2k * 2,7183-1,2) / k!

Que pode, ainda, ser simplificada da seguinte forma:

P(k) = (1,2k * 0,30) / k!

Com essas modificações, fica fácil calcular a probabilidade para cada valor de k, ouseja, para k=0, k=1, k=2, k=3 ... lembrando que P(k=0) é a probabilidade de nenhuma pessoachegar em um minuto; P(k=1) é 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 probabilidadede 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úmerosassociada:

Pesquisa Operacional II 10Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 178

Page 179: Pesquisa Operacional 1 - caetano.eng.br

97-991,000,03488-960,970,09366-870,880,22230-650,660,36100-290,300,300

Faixa NuméricaProb. Acum.P(k)k

Como é possível observar, a probabilidade cresce de 0 para 1, e depois decrescebastante rápido. Esse comportamento é esperado, já que a média de chegadas é 1,2: espera-seque a maior parte dos minutos chegue um número de pessoas próximo de 1.

Agora serão executados "30 minutos", ou seja, 30 "chutes" de quantas pessoaschegam por minuto, para determinar uma taxa de chegadas simulada. Os "chutes" vieram databela da aula anterior, da esquerda para a direita, da 13a. linha em diante (para baixo),pegando apenas os dois dígitos da esquerda de cada número:

26830149150329393143902827913497273921215726013113922501210014241489277231568165221477273210136140200215272191524395181323273170152139161591

Chegadas# AcasoMinutoChegadas# AcasoMinuto

Sabendo que a soma das chegadas dividida pelo total de minutos nos indica a médiade chegadas por hora, podemos calculá-la: 42 / 30 = 1,4, próximo da média teórica, de 1,2.

4.2. OPCIONAL: Exercício com Duas Variáveis (MOREIRA, 2007-modificado):

Um certo projeto, com duração de um ano meses e um investimento inicial de R$200.000,00, 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 defreqüência da relação benefício/custo (quociente do lucro final dividido pelo investimentoinicial), tomando como base 10 rodadas de simulação.

Pesquisa Operacional II 11Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 179

Page 180: Pesquisa Operacional 1 - caetano.eng.br

Distribuição de Freqüências da Receita:

85-991,000,15500.00060-840,850,25600.00020-590,600,40700.00000-190,200,20800.000Faixa NuméricaFreq. Acumul.Freq. EstimadaReceita

Distribuição de Freqüências da Despesa:

80-991,000,20700.00050-790,800,30600.00010-490,500,40500.00000-090,100,10400.000Faixa NuméricaFreq. Acumul.Freq. EstimadaDespesa

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 parreceita-despesa.

1,5300.000500.00020800.0001200500.00011500.00089

-0,5-100.000700.00088600.000721,5300.000500.00044800.00010

1200.000500.00042700.000510,5100.000500.00024600.00070

00500.00013500.0008800600.00065600.0006800600.00051600.00067

-0,5-100.000600.00072500.00099Ben/CustoLucroDespesa# AcasoReceita# Acaso

Observando a freqüência de cada resultado, é possível computar a distribuição deprobabilidade, sendo que o número de ocorrência de cada resultado dividido pelo total deocorrências nos fornece a probabilidade daquele resultado, como pode ser visto na tabelaabaixo:

1,0010Total0,2021,50,10110,1010,50,40400,202-5

Freqüência# OcorrênciasBenefício/Custo

Pesquisa Operacional II 12Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 180

Page 181: Pesquisa Operacional 1 - caetano.eng.br

5. ATIVIDADE

Em um determinado dia da semana, chegam a um guichê de pedágio, em média, 2,3carros por minuto. Admitindo que a chegada de carros ao guichê obedeça a uma distribuiçãode Poisson, realizar uma simulação abrangendo 20 minutos de operação do guichê,calculando, ao fim a média de chegadas. Analise o resultado, frente à media conhecidafornecida pelo problema. Dica: segundo Poisson, P(k) = (lk * e-l) / k!

6. BIBLIOGRAFIA

MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. ThomsonPioneira, 2007.

Pesquisa Operacional II 13Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 181

Page 182: Pesquisa Operacional 1 - caetano.eng.br

Unidade 7: Heurísticas e Meta-HeurísticasProf. Daniel Caetano

Objetivo: Apresentar os conceitos de emulação e simulação, e capacitar para aaplicaçã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 dealgum tipo de operação. Relembrando, otimizar significa encontrar a melhor solução possívelpara um dado problema, onde a "melhor solução" é definida de acordo com o critério dafunçã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 exatosque garantam a otimalidade da solução, ou seja, que a solução encontrada será a melhorpossível.

Entretanto, nem sempre é possível encontrar um método que garanta que a soluçãoencontrada é a solução ótima; nestes casos, o cientista da pesquisa operacional precisaráencontrar um outro caminho: o caminho das heurísticas.

1. MÉTODOS HEURÍSTICOS

Conceitos Chave:

- "chutar com propriedade e conhecimento"- Heurística: método matemático

* Conhecimentos sobre o problema => Solução

Pesquisa Operacional II 1Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 182

Page 183: Pesquisa Operacional 1 - caetano.eng.br

- 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 comosignificando 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étodomatemático que se utiliza de conhecimentos sobre o problema a ser resolvido para tentarencontrar a melhor solução. Assim, um método heurístico é muito similar a um algoritmo deotimização, com a diferença fundamental que o método heurístico não garante que oresultado final encontrado seja ótimo.

Como um exemplo concreto, é possível considerar que uma pessoa queira chegar aotopo de uma montanha, representada na figura 1. Entretanto, para representar a situação realde 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 parabaixo.

Figura 1: 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, enquantover 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ériono caso da figura acima?

Pesquisa Operacional II 2Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 183

Page 184: Pesquisa Operacional 1 - caetano.eng.br

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 seuredor o sujeito só verá descidas. Neste ponto, então, ele parará, acreditando ter chegado aotopo. 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 comumque existe até uma nomenclatura: às situações que parecem "ótimas" segundo os critérios daheurística, mas não são a melhor solução possível, dá-se o nome de ótimos locais. Ao ótimoreal, 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 sabemelhorar essa solução até um determinado ponto (sujeito no topo da montanha menor). Esteprocesso 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ísticaproposta não permite fugir deste ótimo local. Assim, é necessário possibilitar um mecanismopara isso, normalmente chamado de diversificação.

Normalmente as heurísticas proporcionam a diversificação através de um movimentoque independe de qualquer "indicador" do problema. Por exemplo, no caso da montanha, estecritério de diversificação poderia ser: "assim que você chegar a um possível topo, ande umnúmero de metros aleatório para a direita e recomece a intensificação". Se a distânciapercorrida 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.

Pesquisa Operacional II 3Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 184

Page 185: Pesquisa Operacional 1 - caetano.eng.br

Figura 3: Se o critério de diversificação não for suficiente, ela será ineficiente

Supondo, entretanto, que na vez seguinte a caminhada aleatória seja mais longa, épossível que talvez a intensificação seguinte leve ao pico mais alto, como pode ser visto nafigura 4.

Figura 4: Com uma diversificação bem sucedida, é possível fugir do ótimo local

Adicionalmente, é preciso definir quando o método heurístico terá seu fim, ou seja,quando ele deverá parar de procurar por soluções melhores. A esta regra é dado o nome decritério de parada. No caso do sujeito na montanha pode ser algo como: "Depois que vocêtentar diversificar a solução por um número X de vezes e não conseguir melhorar a solução,pare e recupere a melhor solução".

É claro que, dependendo dos métodos e critérios escolhidos, a solução ótima pode ounão ser alcançada, e isto pode ocorrer mais rapidamente ou mais lentamente. Entretanto, éimportante ressaltar que, para métodos heurísticos, não há como garantir otimalidade,embora seja visível que bons métodos encontrarão boas soluções.

Uma característica importante dos métodos heurísticos é que, usualmente, eles sãobastante ligados a um problema específico. Isto é: para cada problema a ser resolvido, écomum ter de desenvolver uma nova herística. Existem muitas heurísticas conhecidas econsagradas para problemas clássicos da pesquisa operacional, mas para problemas práticoselas dificilmente se aplicarão sem modificações.

Pesquisa Operacional II 4Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 185

Page 186: Pesquisa Operacional 1 - caetano.eng.br

2. META-HEURÍSTICAS

Conceitos Chave:

- Heurísticas => intimamente ligadas aos problemas- Heurísticas Genéricas? => Meta-Heurísticas

* Processos genéricos de intesificação e diversificação* Adaptadas aos problemas específicos

- Baseadas em fenômenos naturais => "evolução de soluções"* Algoritmo Genético* Têmpera Simulada* Colônia de Formigas

- Algoritmo Genético* Intensificação => Cruzamento* Diversificação => Mutação* Processo

a) Geração da População Inicialb) Cruzamento entre Cromossomosc) Cálculo de Fitnessd) Seleção de Cromossomose) Mutação de Cromossomosf) Voltar ao passo (b) até completar N gerações

* Gerações? Pais => Filhos* Solução "Ótima": melhor obtida em todo o processo

- Exemplo: bin-pack (mochila binária)

Como anteriormente apresentado, as heurísticas normalmente preicam ser adaptadas(ou mesmo construídas do zero) em cada problema prático. Isso ocorre porque as heurísticascomuns buscam usar características do domínio do problema para proporcionar intensificaçãoe diversificação mais eficiente.

Entretanto, nas últimas décadas, foram propostas algumas heurísticas genéricas que,aparentemente, resolvem uma vasta gama de problemas. Estas, que são chamadas demeta-heurísticas definem processos genéricos de intensificação e diversificação queproporcionam bons resultados em muitos casos.

É claro que, em todas elas, é possível adicionar característica específicas do problema,melhorando seu resultado, mas o fato é que o mecanismo geral que elas propõem para aintensificação e diversificação é, em grande parte, independente do problema sendo resolvido.

Estas meta-heurísticas são comumente oriundas de fenômenos naturais: usam oconceito de evolução da natureza para "evoluir soluções". Alguns exemplos são:

Pesquisa Operacional II 5Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 186

Page 187: Pesquisa Operacional 1 - caetano.eng.br

Algoritmo Genético, que usa os conceitos de evolução genética darwiniano paraencontrar soluções cada vez melhores a partir de soluções iniciais quaisquer.

Têmpera Simulada, que usa os conceitos de entropia (advindas do forjamento dearmas de aço) para encontrar soluções cada vez melhores.

Colônia de Formigas, que usa o os conceitos dos feromônios das formigas (usadospara marcar os melhores caminhos até a comida) para marcar possíveis melhores soluções.

Existe hoje uma grande quantidade destas meta-heurísticas, e estudá-las todas foge aoescopo deste curso. Será apresentada, entretanto, uma breve introdução ao AlgoritmoGenético.

2.1. Algoritmo Genético

Dentre as heurísticas e meta-heurísticas, uma que tem tido bastante destaque nostempos atuais é o chamado Algoritmo Genético, que se baseia nos critérios de evolução dasespécies para promover a evolução de soluções.

A idéia do algoritmo genético é representar as soluções como cromossomos e oprocesso de intensificação é obtido através do cruzamento entre soluções (ou seja: aformação de novas soluções com partes de soluções antigas) e a diversificação é obtidaatravés da mutação (ou seja, modificando intencionalmente o valor de algum gene de umcromossomo).

O processo do algoritmo genético é:

1) Geração da População Inicial, criando cromossomos que representam as soluções(muitas vezes, soluções aleatórias).

2) Cruzamento entre cromossomos diferentes, gerando outros cromossomos.3) Cálculo do Fitness, que é um valor que indica "o quão bom" cada cromossomo é

(em geral, o cálculo é oriundo da função objetivo).4) Seleção dos cromossomos melhor adaptados (eliminando os mais fracos, ou seja,

aqueles com pior valor de fitness)5) Mutação dos cromossomos, introduzindo mudanças aleatórias em alguns

cromossomos aleatórios.6) Volta ao passo 2.

Este processo deve ser repetido N vezes, sendo N chamado de número de gerações.Ao final da execução, adota-se a melhor solução obtida em todas as rodadas como sendo apossível "solução ótima".

Para compreender, nada melhor que um exemplo. Existe um caso muito estudado napesquisa operacional chamado de problema da mochila binária. É, tipicamente, o problemado ladrão que tem um saco muito fraco: ele quer maximizar o lucro de seu roubo, mas não

Pesquisa Operacional II 6Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 187

Page 188: Pesquisa Operacional 1 - caetano.eng.br

pode pegar tudo o que quiser, porque o saco é fraco e aguenta apenas 50kg. Assim, vem adúvida: o que ele deve "roubar" para ter mais lucro?

Imagine que na casa o ladrão tenha 6 objetos: Número Nome Peso (kg) Valor (R$)0 Piano 2000 40001 Faqueiro de prata 15 15002 TV de LCD 25 35003 DVD Player 3 2504 Home Theater 10 10005 Relógio Cuco 3 500

Para o algoritmo genético, como há 6 itens, serão usados cromossomos com 6 genes,sendo que o gene 0 indica se o piano será pego ou não; o gene 1 indica se o faqueiro serápego ou não... e assim por diante. Assim, considere o seguinte cromossomo:

Número do Gene: 0 1 2 3 4 5Valor do Gene: 0 1 1 1 0 0

Este cromossomo significaria que estariam sendo levados os itens 1, 2 e 3 (Faqueiro,TV e DVD).

1) O primeiro passo é gerar alguns cromossomos. Aqui serão gerados apenas 3:

Cromossomo 1: 1 0 0 1 1 0Cromossomo 2: 0 1 1 1 0 0Cromossomo 3: 0 1 0 0 1 1

2) O segundo passo é cruzar os cromossomos entre si. Cada cruzamento gera doisnovos cromossomos. Neste caso, os cruzamentos serão aleatórios: 1 com 3 e 2 com o 3.Primeiramente, 1 com 3:

|Cromossomo 1: 1 0 0 | 1 1 0Cromossomo 3: 0 1 0 | 0 1 1

| Ponto de Divisão

Cromossomo 4: 1 0 0 0 1 1 ( 1 | 3)Cromossomo 5: 0 1 0 1 1 0 ( 3 | 1)

Pesquisa Operacional II 7Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 188

Page 189: Pesquisa Operacional 1 - caetano.eng.br

Agora o 2 com o 3: |

Cromossomo 2: 0 1 1 | 1 0 0Cromossomo 3: 0 1 0 | 0 1 1

| Ponto de Divisão

Cromossomo 6: 0 1 1 0 1 1 ( 2 | 3)Cromossomo 7: 0 1 0 1 0 0 ( 3 | 2)

Como resultado, essa será população total:

Cromossomo 1: 1 0 0 1 1 0Cromossomo 2: 0 1 1 1 0 0Cromossomo 3: 0 1 0 0 1 1Cromossomo 4: 1 0 0 0 1 1Cromossomo 5: 0 1 0 1 1 0Cromossomo 6: 0 1 1 0 1 1Cromossomo 7: 0 1 0 1 0 0

3) O terceiro passo é o cálculo do fitness, ou seja, o quão boa é cada soluçãoencontrada. No caso, pode-se considerar que quanto maior o valor dentro da mochila, melhor:

Número Nome Peso (kg) Valor (R$)0 Piano 2000 40001 Faqueiro de prata 15 15002 TV de LCD 25 35003 DVD Player 3 2504 Home Theater 10 10005 Relógio Cuco 3 500

FitnessCromossomo 1: 1 0 0 1 1 0 5250Cromossomo 2: 0 1 1 1 0 0 5250Cromossomo 3: 0 1 0 0 1 1 3000Cromossomo 4: 1 0 0 0 1 1 5500Cromossomo 5: 0 1 0 1 1 0 2750Cromossomo 6: 0 1 1 0 1 1 6500Cromossomo 7: 0 1 0 1 0 0 1750

Em princípio, o melhor nesta geração é o cromossomo 6.

4) O quarto passo é a seleção, onde serão eliminados os cromossomos menos aptos.Serão eliminados 4 cromossomos, para voltar ao número original de 3 cromossomos. Umaforma de escolher os cromossomos para eliminar seria pegar os com menor valor de fitness.Entretanto, é comum iniciar eliminando primeiramente os cromossomos inviáveis que, nestecaso, são aqueles cujo peso não é suportado pelo saco:

Pesquisa Operacional II 8Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 189

Page 190: Pesquisa Operacional 1 - caetano.eng.br

Fitness PesoCromossomo 1: 1 0 0 1 1 0 5250 2013Cromossomo 2: 0 1 1 1 0 0 5250 43Cromossomo 3: 0 1 0 0 1 1 3000 28Cromossomo 4: 1 0 0 0 1 1 5500 2013Cromossomo 5: 0 1 0 1 1 0 2750 28Cromossomo 6: 0 1 1 0 1 1 6500 53Cromossomo 7: 0 1 0 1 0 0 1750 18

São 3 os cromossomos que estouram o peso máximo de 50kg: 1, 4 e 6 (que parecia sero melhor candidato!). Assim, serão eliminados estes 3 primeiramente, faltando um para sereliminado.

Fitness PesoCromossomo 2: 0 1 1 1 0 0 5250 43Cromossomo 3: 0 1 0 0 1 1 3000 28Cromossomo 5: 0 1 0 1 1 0 2750 28Cromossomo 7: 0 1 0 1 0 0 1750 18

Assim, a melhor solução, por enquanto, é representada pelo cromossomo 2. Énecessário eliminar mais um, entretanto. Será eliminado o mais inapto de todos, que é ocromossomo 7, ficando desta forma a população:

Cromossomo 2: 0 1 1 1 0 0 5250 43Cromossomo 3: 0 1 0 0 1 1 3000 28Cromossomo 5: 0 1 0 1 1 0 2750 28

5) O próximo passo é a mutação, que alterará aleatoriamente alguns valores 0 para 1 e1 para 0. O resultado da mutação será usado para novos cruzamentos e o processo se repetirá.Sempre que for encontrada uma solução viável melhor que as anteriores, ela deve serarmazenada e, ao final de N gerações, a resposta será o melhor cromossomo de todas asgerações.

Parando aqui na primeira geração, a melhor solução seria a do cromossomo 2, compeso de 43, lucro de 5250, carregando os seguintes bens: Faqueiro, TV e DVD Player. Issoestá próximo da solução ótima, que seria Faqueiro, TV e Home Theater, com um lucro totalde 6000 e um peso de exatamente 50.

Entretanto, com os parâmetros definidos, a solução ótima jamais seria possível sóatravés dos cruzamentos:Cromossomo Ótimo: 0 1 1 0 1 0 6000 50

A partir destes cromossomos:Cromossomo 2: 0 1 1 1 0 0 5250 43Cromossomo 3: 0 1 0 0 1 1 3000 28Cromossomo 5: 0 1 0 1 1 0 2750 28

Pesquisa Operacional II 9Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 190

Page 191: Pesquisa Operacional 1 - caetano.eng.br

A não ser através das mutações. Assim, pode-se dizer que a solução do cromossomo2 seria um ótimo local, sendo que a solução do cromossomo ótimo seria o ótimo global.Como dito anteriormente, a mutação é o que propicia o processo de diversificação,permitindo fugir dos ótimos locais, na tentativa de encontrar um ótimo global.

3. ATIVIDADE

Uma empresa de transporte precisa transportar alguns equipamentos para um cliente,mas nem todos os equipamentos podem ser colocados ao mesmo tempo no barco, o queobrigará duas viagens: uma inicia amanhã e a outra apenas na semana que vem, quando obarco voltar.

Ocorre que estes equipamentos serão vendidos e o cliente solicitou que o primeirotransporte contivesse o maior valor possível embarcado, de forma que ele possa vender erecuperar mais rapidamente a maior parte do valor investido.

Sabendo que o barco aguenta até 550kg de carga, quais equipamentos deverão serembarcados?

Nome Peso (kg) Valor (R$)Equipamento 0 400 4000Equipamento 1 30 700Equipamento 2 60 800Equipamento 3 200 2500Equipamento 4 150 1000Equipamento 5 120 500

Use algoritmo genético, usando três cromossomos iniciais, de 6 genes cada, e doiscruzamentos, com partição no meio do cromossomo, realizando uma iteração inteira.Explique o critério usado na seleção, já que ao final deve restar apenas 2 cromossomos.Indique, ao fim, a melhor solução encontrada.

Use a folha na próxima página.

Pesquisa Operacional II 10Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 191

Page 192: Pesquisa Operacional 1 - caetano.eng.br

Nome:Genes Iniciais

Cromossomo 1:

Cromossomo 2:

Cromossomo 3:

Resultado do Cruzamento:

Cromossomo ____ e ____: 4:

5:

Cromossomo ____ e ____: 6:

7:

População: Fitness Peso

Cromossomo 1: ______ ______

Cromossomo 2: ______ ______

Cromossomo 3: ______ ______

Cromossomo 4: ______ ______

Cromossomo 5: ______ ______

Cromossomo 6: ______ ______

Cromossomo 7: ______ ______

Seleção:

Critério: ______________________________________________________________________________________________________

Cromossomo 1:

Cromossomo 2:

Melhor Solução:

Cromossomo:

Que representa os seguintes equipamentos na primeira viagem: __________________

_______________________________________________________________________________________________________________.

Pesquisa Operacional II 11Atualização: 22/09/2008

2008_SI_-_PesquisaOperacional_II_-_o2007 192

Page 193: Pesquisa Operacional 1 - caetano.eng.br

Notas da Aula 9: Teoria de Filas - Uma IntroduçãoProf. Daniel Caetano

Objetivo: Apresentar os conceitos básicos da teoria de filas.

Bibliografia:

- MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed.Thomson Pioneira, 2007.

Introdução

Todas as pessoas estão acostumadas, de uma forma ou de outra, com as filas: nobanco, no pedágio, no restaurante self-service... entretanto, não são apenas pessoas que ficamnas filas: bagagens esperam por avisão, produtos esperam até serem vendidos etc. É claro queos produtos "não se importam" de esperar, mas esta espera de produtos - que em alguns casosse chama estoque - implica em custos adicionais.

Por esta razão, normalmente o desejo é controlar, reduzir ou até mesmo eliminar asfilas de um processo qualquer, sejam elas compostas por pessoas ou não. Entretanto, paraestudar o comportamento das filas e conseguir alcançar tais objetivos, é preciso conhecer ateoria das filas, algo que começará a ser apresentado nesta aula.

1. Comportamento Básico das Filas

Antes de mais nada, é preciso introduzir uma nomenclatura. Denominaremos declientes toda a entidade que pode ter de esperar para ser processada. Denominamos fila aoconjunto dos clientes que estão esperando para serem processados. Denominamos postos deatendimento ao número de unidades de processamento.

Por exemplo, numa fábrica de brinquedos, os componentes do brinquedo são osclientes e as máquinas são os postos de atendimento. Num banco, por outro lado, os clientessão as pessoas que pretendem usar o banco e os caixas são os postos de atendimento.

Em um sistema de filas, é possível sempre determinar uma taxa de chegada declientes (especificada pela letra grega lâmbda: k), ou seja, quantos clientes chegam em umdeterminado intervalo de tempo (ex.: 5 clientes por hora).

Pesquisa Operacional II 1Segundo Semestre de 2007

2008_SI_-_PesquisaOperacional_II_-_o2007 193

Page 194: Pesquisa Operacional 1 - caetano.eng.br

Da mesma forma, é possível determinar uma taxa de atendimento de clientes(especificada pela letra grega mi: l), ou seja, quantos clientes são atendidos em umdeterminado intervalo de tempo (ex.: 6 clientes por hora).

Se as taxas de chegada e atendimento forem fixas, ou seja, não variarem de formaalguma, é possível prever o comportamento do sistema diretamente. Por exemplo: se a taxade chegada for menor que a taxa de atendimento, não haverá formação de fila e, se ela exisitirinicialmente, ela será dissipada. Essa e outras situações são simples de perceber quandoobservamos exemplos numéricos.

a) Taxa de Chegadas < Taxa de Atendimento (k < l)

Consideremos um serviço que funciona por 8 horas em um dia, em que a taxa dechegadas é fixa, de 5 pessoas por hora, e a taxa de atendimento, também fixa, é de 6pessoas por hora. Imaginemos que há, inicialmente, 6 pessoas na fila. Ao fim do dia, oque terá acontecido com a fila?

Bem, ao fim das 8 horas, terão chegado ao sistema as 6 pessoas da fila inicial, MAIS5 * 8 pessoas = 46 pessoas no total. Ao fim de 8 horas, o sistema teve uma capacidadede atendimento de 6 * 8 = 48 pessoas. Ora, se as chegadas são fixas e o atendimentotambém e o número de pessoas que o sistema consegue atender em um dia é de 48pessoas e chegaram apenas 46, é claro que todas foram atendidas e a fila foidiminuindo ao longo do dia, até chegar em nenhuma fila ao final do dia.

b) Taxa de Chegadas = Taxa de Atendimento (k = l)

Consideremos agora o mesmo serviço, que funciona por 8 horas em um dia, em que ataxa de atendimento, fixa, é de 6 pessoas por hora. Porém, hoje, é um dia especial (diade vencimento de contas, por exemplo) e a taxa de chegadas, ainda fixa, será de 6pessoas por hora. Imaginemos que há, inicialmente, 6 pessoas na fila. Ao fim do dia, oque terá acontecido com a fila?

Bem, ao fim das 8 horas, terão chegado ao sistema as 6 pessoas da fila inicial, MAIS6 * 8 pessoas = 54 pessoas no total. Ao fim de 8 horas, o sistema teve uma capacidadede atendimento de 6 * 8 = 48 pessoas. Ora, se as chegadas são fixas e o atendimentotambém e o número de pessoas que o sistema consegue atender em um dia é de 48pessoas e chegaram 54, é claro que sobraram, ao fim do dia, 54 - 48 = 6 pessoas nafila. Ou seja, a fila permaneceu a mesma.

c) Taxa de Chegadas > Taxa de Atendimento (k > l)

Consideremos agora o mesmo serviço, que funciona por 8 horas em um dia, em que ataxa de atendimento, fixa, é de 6 pessoas por hora. Porém, hoje, é um dia especial (diade pagamento, por exemplo) e a taxa de chegadas, ainda fixa, será de 7 pessoas porhora. Imaginemos que há, inicialmente, 6 pessoas na fila. Ao fim do dia, o que teráacontecido com a fila?

Pesquisa Operacional II 2Segundo Semestre de 2007

2008_SI_-_PesquisaOperacional_II_-_o2007 194

Page 195: Pesquisa Operacional 1 - caetano.eng.br

Bem, ao fim das 8 horas, terão chegado ao sistema as 6 pessoas da fila inicial, MAIS7 * 8 pessoas = 62 pessoas no total. Ao fim de 8 horas, o sistema teve uma capacidadede atendimento de 6 * 8 = 48 pessoas. Ora, se as chegadas são fixas e o atendimentotambém e o número de pessoas que o sistema consegue atender em um dia é de 48pessoas e chegaram 62, é claro que sobraram, ao fim do dia, 62 - 48 = 14 pessoas nafila. Ou seja, ao fim do dia, a fila cresceu!

Esta relação entre taxa de chegadas k e taxa de atendimento l, como pode ser visto, ébastante importante. Por esta razão, é definido o valor chamado de taxa de ocupação dosistema (representado pela letra grega rô: q), definido da seguinte forma:

q = k / l

E, resumidamente:

Se q < 1, a fila tende a diminuir.Se q = 1, a fila tende a se manter.Se q > 1, a fila tende a aumentar.

2. Aleatoriedade nas Filas

Pela informação apresentada anteriormente, fica a impressão que se não houver umafila inicial e uma taxa de ocupação q < 1, ou seja, a taxa de chegadas é inferior à taxa deatendimento, nunca haverá a formação de uma fila. Entretanto, isso na prática não é verdade!Mas por quê?

No exemplo da seção anterior, onde foram apresentadas as comparações e o índice q,foram definidas taxas de chegada e atendimento fixas, ou seja, sem variação alguma. Issosignifica que, em cada hora, chegariam 5 clientes, ou seja, chegaria exatamente 1 cliente acada 60/5 = 12 minutos. Da mesma forma, a cada hora seriam atendidos 6 clientes, ou seja,seria atendido 1 cliente exatamente a cada 60/6 = 10 minutos. Nesta situação, fica claro quese um cliente chegou no momento 0 minutos, o segundo cliente chegará apenas no momento12 minutos. Considerando que o primeiro cliente foi atendido imediatamente, quando osegundo cliente chegar, o atendimento do primeiro já terá acabado por 2 minutos!

Ou seja, se a taxa de atendimento é maior que a taxa de chegadas, há momentos deociosidade dos atendentes (decorrência de a taxa de ocupação ser menor que 1)! E aindaassim pode ocorrer a formação de filas?! A resposta é SIM!

E a resposta é sim porque, na prática, as chegadas (quase) nunca são fixas; tambémnão o são os atendimentos. Normalmente dizemos que a taxa de chegada média e a taxa deatendimento média são conhecidas. Isso significa que se dissermos que a taxa de chegadasmédia é de 5 clientes por hora, isso significa que os clientes chegam em média a cada 12

Pesquisa Operacional II 3Segundo Semestre de 2007

2008_SI_-_PesquisaOperacional_II_-_o2007 195

Page 196: Pesquisa Operacional 1 - caetano.eng.br

minutos. Se eles chegam em média neste intervalo de tempo, isso significa que o intervaloentre dois clientes pode ser 10 minutos, 9 minutos, 13 minutos ou 15 minutos. Em outraspalavras, o intervalo entre chegadas não é fixo.

Vejamos numericamente. Suponhamos que o tempo de atendimento é fixo, de 10minutos por cliente (taxa de atendimento de 6 por hora). Imaginemos que o primeiro clientechegue no momento 0 minutos, o segundo no momento 9 minutos, o terceiro no momento 19minutos e o quarto no momento 36 minutos. Observe na tabela abaixo o comportamento dosistema (simulação).

Fim Atendimento46

Chegada /Início Atendimento

36

Fim Atendimento30

Início AtendimentoFim Atendimento20

Chegada / FilaSendo Atendido19

Início AtendimentoFim Atendimento10

Chegada / FilaSendo atendido9

Chegada /Início Atendimento

0Cliente 4Cliente 3Cliente 2Cliente 1Momento

Observe que o tempo de atendimento foi sempre de 10 minutos (fixo, como indicado).O intervalo entre chegadas não foi fixo. Da primeira chegada para a segunda foi de 9 minutos.Da segunda para a terceira foi de 10 minutos e da terceira para a quarta foi de 17 minutos. Ointervalo de chegadas médio foi de (9+10+17)/3 = 12 minutos. Ou seja, q = 10/12 < 1,indicando que a fila teria tendência a diminuir.

No entanto, do momento 9 ao 10 e do momento 19 ao 20 ocorreu a formação de fila.Essa é uma característica importante de ser compreendida, principalmente porque também ataxa de atendimento é variável (e não fixa, como foi considerada nesta simulação),aumentando ainda mais a chance de formação de filas, ainda que momentâneas.

Mas então, o valor de q não tem significado? Mas é claro que tem! O valor de qsignifica a tendência da fila ao longo do tempo; Observe que quando q < 1, como noexemplo da tabela, até ocorrem filas eventuais (podendo até ser filas "grandes"), mas atendência ao longo do tempo é que as filas diminuam, já que, em média, o sistema é capaz deatender mais pessoas do que chegam.

3. Custos Envolvidos em Filas

Como dito anteriormente, as filas precisam ser gerenciadas ou controladas, pois elasimplicam em custos. Em essência, os gerentes têm alguns problemas que precisam desoluções. Antes de analisar os custos, veremos estes problemas.

Pesquisa Operacional II 4Segundo Semestre de 2007

2008_SI_-_PesquisaOperacional_II_-_o2007 196

Page 197: Pesquisa Operacional 1 - caetano.eng.br

O primeiro deles é referente à área destinada a fila. Estas áreas são adequadas? Otamanho é suficiente? Sua localização atrapalha o serviço prestado?

O segundo é referente às prioridades. Devem ser criadas filas com prioridade parausos especiais, como office-boys ou idosos?

O terceiro é referente ao número de postos de atendimento. Quantos postos devem seradotados?

Finalmente, o quarto problema, é se vale a pena investir para reduzir o tempo deatendimento, com adoção de medidas tecnológicas e melhor treinamento do pessoal.

Como é possível observar, é claro que uma área maior para a fila, com um enormenúmero de postos de atendimento e atendimento preferencial, com tempo de atendimentobaixo oriundo de um excelente treinamento de pessoal e alta tecnlogia são características quetodo cliente iria preferir. Dizemos que, quanto mais suas características se aproximam doideal do cliente, maior é o seu nível de serviço. Deve-se buscar, portanto, o aumento do nívelde serviço, ou seja, uma melhora do atendimento.

Entretanto, a melhoria destas características - que levam ao aumento do nível deserviço - quase sempre implica em um aumento no custo do atendimento (ou custo deatender). Quanto maior o nível de serviço, maior o custo de atendimento.

Por outro lado, um maior nível de serviço, ou seja, um melhor atendimento, diminuias chances de perda de receita porque um cliente foi embora (devido à fila, por exemplo).Além disso, um serviço melhor faz com que a imagem da empresa perante o cliente sejatambém melhor (um banco sem filas é considerado um banco melhor pelo cliente, porexemplo). A existência de fila, então, tem um custo também, chamado de custo da fila (oucusto de não antender), que diminui com o aumento do nível de serviço.

O custo total, dado pela soma do custo do atendimento com o custo da fila, deve ter,portanto, um pondo de equilíbrio, onde o nível de serviço seja tal que o aumento de custo deatendimento seja compensado pelo benefício da redução do custo de fila. Isso é representadona figura 1 (MOREIRA, 2007).

Figura 1: Equilíbrio entre custo de atender e não atender

Pesquisa Operacional II 5Segundo Semestre de 2007

2008_SI_-_PesquisaOperacional_II_-_o2007 197

Page 198: Pesquisa Operacional 1 - caetano.eng.br

Nem sempre é simples chegar a este nível de serviço ótimo, seja pela dificuldade emdefinir claramente os custos de atendimento e de fila, seja pela dificuldade em definir qual é,na prática, este nível de serviço ótimo.

Ma prática, busca-se aumentar o nível de serviço até um ponto em que os custos desteaumento não sejam exagerados. De qualquer forma, sempre se busca uma taxa de ocupaçãoinferior a 1, garantindo que as filas tendam a se dissipar ao longo do tempo.

Nas próximas aulas veremos um pouco mais sobre o funcionamento das filas e comotirar algumas conclusões a partir das características do sistema e das taxas de chegada eatendimento.

4. Bibliografia

MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. ThomsonPioneira, 2007.

Pesquisa Operacional II 6Segundo Semestre de 2007

2008_SI_-_PesquisaOperacional_II_-_o2007 198

Page 199: Pesquisa Operacional 1 - caetano.eng.br

Notas da Aula 10: Teoria de Filas II - Obtendo InformaçõesProf. Daniel Caetano

Objetivo: Apresentar os cálculos mais básicos sobre filas.

Bibliografia:

- MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed.Thomson Pioneira, 2007.

Introdução

A Teoria de Filas é um ramo amplo da Pesquisa operacional e existe um grandenúmero de autores trabalhando nesta área. Entretanto, nesta aula estaremos preocupados emconceituar um modelo bastante simples de fila, deixando para outros cursos um maioraprofundamento nos diferentes tipos de fila.

1. Um Modelo para uma Fila Simples

O modelo mais simples de fila é o representado na figura abaixo:

Figura 1: Modelo de uma fila simples

Os clientes "surgem" da fonte de clientes, e chegam apresentam um certocomportamento de chegada. Como nem sempre podem ser atendidos de imediato, há umcritério de seleção para o atendimento (normalmente é a ordem de chegada). Os clientesserão atendidos no posto de atendimento, que terá um determinado comportamento deatendimento. Finalmente, os clientes deixam o local. É um estudo destes elementos quepermite identificar os fundamentos da teoria de filas.

Fonte de Clientes: a fonte de clientes é a população de clientes potenciais da fila. Afonte pode ser finita ou infinita. A fonte é considerada infinita quando o tamanho da fila nãoinfluencia na probabilidade de chegada de mais um cliente à fila, o que ocorre quando onúmero de clientes na fila é uma fração muito pequena da população total da fonte. Isso

Pesquisa Operacional II 1Segundo Semestre de 2007

2008_SI_-_PesquisaOperacional_II_-_o2007 199

Page 200: Pesquisa Operacional 1 - caetano.eng.br

ocorre, normalmente, em sistemas abertos ao público em geral, como cinemas, postos degasolina etc. Por outro lado, a fonte pode ser finita, quando o tamanho da fila influencia naprobabilidade de chegada de outro cliente à fila, situação que ocorre quando o número declientes na fila é uma parcela importante da população na fonte. Por exemplo, se um técnico éresponsável por 3 máquinas que operam sempre em pares (uma está sempre "descansando"),se uma quebrar e estiver na fila para reparo (ou em atendimento), as outras duas terão detrabalhar sem parar, aumentando a chance de outra delas quebrar.

Comportamento de Chegada: o primeiro aspecto do comportamento de chegada aser observado é se as chegadas são em grupo (como quando um ônibus de viagem chega a umrestaurante) ou isoladas/mistas (como na fila do cinema). A consideração destes dois casos édistinto, mas as filas de chegadas mistas podem ser vistas como as de chegadas isoladas.Entretanto, há mais fatores a serem considerados. Por exemplo, se o cliente é paciente (depoisque chegou à fila, não sai mais dela até ser atendido) ou impaciente (pode ir embora antes deser atendido). Nesta aula consideraremos que as chegadas são isoladas (ou mistas), que osclientes são pacientes.

Vale aqui lembrar que nas chegadas deve ser considerada a distribuição deprobabilidades das chegadas. Em geral, quando consideramos que as chegadas sãoindependentes (população infinita), consideramos as chegadas como um processopoissoniano, ou seja, respeitando a distribuição de poisson, que dá a probabilidade de umdeterminado número de clientes chegar num dado intervalo de tempo. Chamando de k onúmero médio de clientes que chegam em um dado intervalo, ou seja, a taxa média dechegadas, a fórmula abaixo (de Poisson) fornece a probabilidade de qualquer número x declientes chegarem naquele mesmo intervalo:

P(x) = (kx * e-k) / x!

Em alguns casos queremos determinar a probabilidade de o intervalo entre duaschegadas ser menor que um determinado tempo. Neste caso, o tempo entre chegadas obedeceà distribuição exponencial, e a probabilidade pode ser calculada pela fórmula:

P(t ü T) = 1 - e-kT

Processo de Seleção: Em qualquer fila, sempre precisa existir um criério de seleção,ou seja, qual é a regra para que se saiba quem será o próximo cliente a ser atendido. No casomais usual, considera-se as filas do tipo FIFO (First In Fist Out, ou seja, Primeiro a EntrarPrimeiro a Sair). Esta não é a única forma, entretanto. É comum haver preferência paraidosos, por exemplo. Adicionalmente, há locais (como pronto-socorros) onde a adoção de umsistema FIFO é inadequado. Nesta aula consideraremos as filas do tipo FIFO.

Postos de Atendimento: posto de atendimento é o local onde será feito o atendimentodos clientes da fila. É chamado de canal único quando houver apenas um posto deantedimento. Por outro lado, é chamado de canal múltiplo quando houver dois ou mais postosde atendimento paralelo. Adicionalmente, dá se o nome de atendimento único quando todo o

Pesquisa Operacional II 2Segundo Semestre de 2007

2008_SI_-_PesquisaOperacional_II_-_o2007 200

Page 201: Pesquisa Operacional 1 - caetano.eng.br

atendimento for feito em apenas um posto, e atendimento múltiplo quando for necessáriopassar por vários postos para o atendimento ser completo. Em todos estes casos,consideramos, entretanto, filas únicas, sendo o caso de filas múltiplas (como as dossupermercados) um outro caso distinto. Nesta aula estudaremos apenas o caso de fila única,canal único, atendimento único.

Este posto de atendimento tem, entretanto, um comportamento, que pode ser definidopela taxa de atendimento l, ou seja, quantos clientes este posto consegue atender em umdado intervalo de tempo. Em muitos casos também é considerado que o atendimento tambémé um processo de poisson, e a fórmula para determinar a probabilidade de y clientes serematendidos num dado intervalo de tempo é:

P(y) = (ly * e-l) / y!

Em alguns casos queremos determinar a probabilidade de o tempo de atendimento sermenor que um determinado tempo. Neste caso, o tempo de atendimento obedece àdistribuição exponencial, e a probabilidade pode ser calculada pela fórmula:

P(t ü T) = 1 - e-lT

2. Características de Análise em uma Fila

Ainda que tenhamos definido um modelo, em filas não é possível "otimizar" a fila,como seria feito em um problema de programação linear. Mas para que serve o "modelo",então? Nas filas, o modelo serve para fornecer indicadores de desempenho para quepossamos avaliar o comportamento da fila, buscando que ela tenha melhores característicasoperacionais, ou seja, um melhor comportamento, dentro de uma determinada faixa de custo.

Através do modelo temos as relações entre as diferentes características do sistema defila e sabemos como a mudança de uma característica afetará as outras. As característicasmais importantes, mas não únicas, de uma fila de canal único são:

a) Utilização do sistema: q, indica a porcentagem de uso do sistema, a probabilidadedo sistema estar sendo usado e a probabilidade de que um cliente que chega seja atendido.

q = k / l

b) A probabilidade de que o sistema esteja ocioso: P(0).P(0) = 1 - q

c) Probabilidade de que o sistema esteja com N clientes: P(n), sendo que o número declientes no sistema é o número de clientes em fila mais o número de clientes sendo atendidos.

P(n) = (k / l)n*P(0)

Pesquisa Operacional II 3Segundo Semestre de 2007

2008_SI_-_PesquisaOperacional_II_-_o2007 201

Page 202: Pesquisa Operacional 1 - caetano.eng.br

d) Probabilidade de que a fila não tenha mais que k clientes: P(n=k).P(n=k) = 1-(k / l)k+1

e) Número médio de clientes na fila (tamanho médio da fila): Lf.Lf = k2 / ( l * (l-k) )

f) Número médio de clientes no sistema (da fila e atendidos): L.L = Lf + k/l

g) Tempo médio de espera na fila: Wf.Wf = Lf / k

h) Tempo médio de espera no sistema (da chegada ao fim do atendimento): W.W = L / k

3. Exercício Exemplo (Livro)

Trampolândia, a capital da Conchinchina, mantém um serviço de ponte aérea comalgumas das maiores cidades do país. O principal aeroporto da cidade é o Pouso Seguro, queconcentra todo o serviço de ponte aérea. Isso faz com que o tráfego aéreo fique um poucocongestionado.

A intensidade do tráfego aéreo é função da hora do dia, mas o momento mais críticoestá entre as 17 e 18 horas dos dias úteis, exatamente durante o retorno das pessoas quedeixaram a capital pela ponte aérea para trabalhar fora. Os aviões que chegam ficam em uma"fila", aguardando a vez de aterrissar. Eles ficam sobrevoando em grandes círculos nasproximidades do aeroporto Pouso Seguro, até que a torre de controle libere alguma pista parapouso.

Para esse horário (entre 17 e 18 horas), a taxa média de chegada dos aviões é de um acada 3 minutos. A torre de controle, por sua vez, consegue aterrissar, em média, um avião porminuto. Supondo que tanto a taxa de chegada quanto a taxa de pouso obedeçam à distribuiçãode Poisson, determinar:

a) A taxa de utilização do sistema de aterrisagem no aeroporto;b) A probabilidade de que não haja nenhum avião pousando ou esperando para pouso.c) A probabilidade de que haja apenas 1 avião aterrissando ou aguardando para pouso.d) A probabilidade de que não haja mais que 3 aviões aguardando ordem de pouso.e) O número médio de aviões aguardando ordem de pouso.f) O número médio de aviões pousando ou aguardando ordem de pouso.g) O tempo médio que o avião precisa ficar esperando para poder pousar.h) O tempo médio decorrido entre a chegada do avião e o término de seu pouso.

Pesquisa Operacional II 4Segundo Semestre de 2007

2008_SI_-_PesquisaOperacional_II_-_o2007 202

Page 203: Pesquisa Operacional 1 - caetano.eng.br

Solução:

a) A taxa de chegadas k é de 1 avião a cada 3 minutos e a taxa de pouso(atendimento) l é de 1 pouso por minuto. Para calcular a taxa de utilização, precisamos queos intervalos temporais sejam os mesmos, ou seja, precisamos determinar a taxa média depousos em 3 minutos. Ora, se a taxa de pouso média é de um pouso por minuto, podemosdizer que a taxa média de pousos l é de 3 pousos a cada 3 minutos.

q = k/l = 1/3 (utilização de 33,3%)

b) A probabilidade de não haver nenhum avião no sistema é:P(0) = 1 - q = 1-1/3 = 2/3 (probabilidade de 66,7%)

c) A probabilidade de que haja apenas um avião pousando ou esperando é:P(n) = (k / l)n*P(0) = (1/3)1*2/3 = 1/3 * 2/3 = 2/9 (probabilidade de 22,2%)

d) A probabilidade de que não haja mais que 3 aviões "em fila", ou seja, aguardando:P(n=k) = 1-(k / l)k+1 = P(n=3) = 1-(1/3)3+1 = 1 - (1/3)4 = 1 - 1/81 = 80/81 (98,8%)

e) Número médio de aviões "em fila", ou seja, aguardando pouso:Lf = k2 / ( l * (l-k) ) = 12 / ( 3 * (3-1) ) = 1/6 (0.17 aviões)

f) Número médio de aviões no sistema, ou seja, aguardando ou aterrissando:L = Lf + k/l = 1/6 + 1/3 = 3/6 = 1/2 (0.5 aviões)

g) Tempo médio "em fila", ou seja, de espera para pouso:Wf = Lf / k = (1/6) / 1 = 1/6 (como o intervalo é de 3 minutos, 3 * 1/6 = 0.5 minuto)

h) Tempo médio no sistema, ou seja, da chegada ao término do pouso:W = L / k = (1/2)/1 = 1/2 (como o intervalo é de 3 minutos, 3*1/2 = 1.5 minutos)

4. Bibliografia

MOREIRA, D.A. Pesquisa Operacional: Curso Introdutório. [S.I.]: Ed. ThomsonPioneira, 2007.

Pesquisa Operacional II 5Segundo Semestre de 2007

2008_SI_-_PesquisaOperacional_II_-_o2007 203