Pesquisa Operacional II 6. Programação Inteira Faculdade de Engenharia Eng. Celso Daniel Engenharia de Produção Programação Inteira São problemas de programação matemática em que a função objetivo, bem como as restrições, são lineares, porém uma ou mais variáveis de decisão podem apenas assumir valores inteiros. Esse problema pode apresentar dois tipos básicos: Programação Inteira Total - onde todas as variáveis de decisão são do tipo inteiro. Programação Inteira Mista - onde apenas uma parte das variáveis são do tipo inteiro, enquanto outras são do tipo real.
Programação Inteira A primeira idéia que pode vir à mente é resolver o problema como se fosse um problema de programação linear e arredondar os valores ótimos encontrados para cada uma das variáveis de decisão inteiras. Para problemas de grande porte, isto geralmente gerará uma solução aceitável (próxima do ótimo real) sem a violação de nenhuma das restrições. Para problemas menores, esse tipo de procedimento poderá nos levar a soluções inviáveis ou não ótimas. onde: Programação Inteira (,,..., n ) (,,..., n ) ( n ) Otimizar: z = f x, x,..., x sujeito a: g x x x b g x x x b 2 2 = M M g ( x, x,..., x m n) bm x, x,..., x são inteiros (,,..., ) = + +... + n 2 n n (,,..., ) = + +... + ( =,..., n i i2 2 in n ) f x x x cx cx cx g x x x a x a x a x i n n 2
Programação Inteira Problema Relaxado A todo problema de programação inteira está associado um problema com a mesma função-objetivo e as mesmas restrições, com exceção da condição de variáveis inteiras. A esse problema se dá o nome de Problema Relaxado. Programação Inteira Solução Gráfica Ma8x + 6x s.a. x + x 5 42.8x + 00x 800 20x + 6x 42 30x + 0x 35 x 3x 0 x, x 0 e inteiros () (2) (3) (4) (5) (2) () (4) (3) (5) 3
Programação Inteira Solução Gráfica Ma8x + 6x s.a. x + x 5 42.8x + 00x 800 20x + 6x 42 30x + 0x 35 x 3x 0 x, x 0 e inteiros Solução Ótima para PL Relaxado (5,28 ; 5,74) Programação Inteira Solução Gráfica Solução Aproximada do PL Relaxado Ótimo (5 ; 5) (5,28 ; 5,74) Solução Ótima para PL Relaxado (5,28 ; 5,74) Solução Ótima para Problema Inteiro (6 ; 3) 4
Programação Inteira PL Relaxado Em um problema de MAXIMIZAÇÃO, o valor ótimo da função-objetivo, do Problema Relaxado, sempre representa um limite superior ao respectivo Problema Inteiro. Em um problema de MINIMIZAÇÃO, o valor ótimo da função-objetivo, do Problema Relaxado, sempre representa um limite inferior ao respectivo Problema Inteiro. Programação Inteira PL Relaxado Nenhum ponto inteiro vizinho ao ponto ótimo do problema relaxado é necessariamente viável. Mesmo que um dos vizinhos seja viável. Não é necessariamente o ponto ótimo inteiro. Não é obrigatoriamente uma solução aceitável. Solução Ótima para PL Relaxado Solução Ótima para Prog.Inteira 5
Programação Inteira Solução por Enumeração Uma idéia que pode resultar em uma solução para um problema de programação inteira é a de se enumerar todas as possíveis soluções. De forma exaustiva, o valor da função-objetivo é calculado para todas as soluções viáveis e é escolhido aquele que apresente o maior valor (no caso de maximização) ou o menor valor (no caso de minimização). Programação Inteira Solução por Enumeração O problema com essa tática de solução está no fato de que ela só consegue ser aplicada a problemas pequenos. O número de combinações possíveis de soluções cresce de forma exponencial, isto é, de forma muito rápida: Ex.: Um PLI com 00 variáveis de decisão do tipo binárias (assumem 0 ou ) terá até 2 00 soluções viáveis, isto é,,27 0 30 soluções possíveis. 6
Programação Inteira é mais utilizado atualmente para resolução de problemas do tipo PLI ou PLI misto. É uma metodologia geral para solução de PLI e PLI misto, e existem diversas variantes para tratar diversos tipos de problemas específicos. A idéia geral é a de se dividir o conjunto de soluções viáveis em subconjuntos sem interseções entre si, calculando-se os limites superior e inferior para cada subconjunto, e então eliminando certos subconjuntos de acordo com regras pré-estabelecidas. Programação Inteira Algoritmo de Branch-and-Bound Comparativamente ao PL correspondente, o PI levará muito mais tempo para obter um valor ótimo. Isso está ligado ao fato que diversos problemas de PL são resolvidos sucessivamente para se obter a solução de um PI. Se o problema for interrompido no meio do processo uma solução aproximada do problema inteiro pode ser gerada. 7
A divisão do problema é interrompida quando uma das condições a seguir é satisfeita. Essas condições são chamadas de testes de sondagem (TS): (TS ) (TS 2) Programação Inteira Algoritmo de Branch-and-Bound O problema relaxado é infactível. A solução ótima do problema relaxado é inteira. (TS 3) O valor de qualquer solução factível do problema relaxado é pior que o valor da melhor solução factível atual (solução incumbente). Quando uma dessas três condições ocorre, o subproblema pode ser descartado (sondado), pois todas as suas soluções factíveis estão implicitamente enumeradas. Exemplo Max + x sa.. 7x + 4x 3 x, x 0 x, x inteiros Na Figura (a) têm-se os pontos que representam as soluções factíveis do problema (todos os pontos inteiros que satisfazem as restrições). O problema de programação linear (PPL) obtido ao desconsiderarmos as restrições de integralidade das variáveis inteiras é conhecido como a relaxação linear do PPI (ver Figura (b)). PPI Ótimo = 39 PPL (a) Ótimo = 33 (b) 8
Exemplo Resolvendo o problema relaxado tem-se que: Valor ótimo da solução: 39 Valores das variáveis =.86 e =0 Z=39 =.86 =0 Logo o valor de não é inteiro, então dividimos o problema em dois subproblemas: um onde consideramos o valor de 2, que vamos chamar de subproblema A; outro consideramos, chamado de subproblema B. Exemplo Suproblema A Max + x sa.. 7x + 4x 3 x 2 x, x 0 Subproblema B Max + x sa.. 7x + 4x 3 x x, x 0 Infactível A Ótimo = 37.5 B 9
Exemplo Não encontramos solução factível ao resolver o problema A, então aplicando o TS podemos eliminá-lo. Resolvendo o subproblema B temos Z = 37.5, = e =.5: Agora não é inteiro, logo particionamos o problema em dois considerando o subproblema C com a variável e o subproblema D com 2. Z=39 =.86 =0 2 A TS Z=37.5 = =.5 B Exemplo Suproblema C Max + x 2 sa.. 7x + 4x 3 x x x, x 0 Subproblema D Max + x 2 sa.. 7x + 4x 3 x x 2 x, x 0 Ótimo = 32 C D Ótimo = 37 0
Exemplo Z=39 =.86 =0 2 A TS Z=37.5 = =.5 B C TS2 Z=32 = = Z=37 =0.7 =2 D 2 Exemplo A solução do subproblema C é igual a 32, = e =, as duas variáveis são inteiras, logo considerando o TS2 este problema pode ser sondado. Resolvendo o subproblema D temos Z=37, =0.7 e =2: note que a variável novamente não é inteira, então particionamos o subproblema gerando dois novos subproblemas como mostramos a seguir.
Exemplo Suproblema E Max + x 2 sa.. 7x + 4x 3 x x 2 x 0 x, x 0 Subproblema F Max + x 2 sa.. 7x + 4x 3 x x 2 x x, x 0 F Infactível E Ótimo =35.75 Exemplo Z=39 =.86 =0 2 A TS Z=37.5 = =.5 B C TS2 Z=32 = = Z=37 =0.7 =2 D 2 0 E Z=35.75 =0 =3.25 F TS 2
Exemplo O problema F é infactível, logo podemos usar TS e eliminá-lo. O subproblema E tem solução igual a 35.75 e =0 e =3.25. Suproblema G Max + x 2 2 sa.. 7x + 4x 3 x x 2 x 0 x 3 x, x 0 Subproblema H Max + x 2 2 sa.. 7x + 4x 3 x x 2 x 0 x 4 x, x 0 Exemplo Z=39 =.86 =0 2 A TS Z=37.5 = =.5 B C TS2 Z=32 = = Z=37 =0.7 =2 D 2 0 E Z=35.75 =0 =3.25 F TS 3 G Z=33 =0 TS2 =3 H TS 4 3
Exemplo Resolvendo o subproblema G obtemos Z=33, =0 e =3, logo a solução é inteira, portanto aplicando o TS2 este problema pode ser sondado. O subproblema H não tem solução factível e também pode ser sondado por TS. Temos que nenhum nó pode ser ramificado, logo, a melhor solução inteira encontrada é dada pelo problema G e éa solução ótima do problema. Na resolução do exemplo através do método B&B podemos observar que muitas soluções não precisaram ser avaliadas explicitamente. Isso fica mais claro quando se resolve problemas maiores. Programação Inteira Algoritmo de Branch-and-Bound A solução obtida num problema PLI ou PLI misto contém menos informações que o PL correspondente. Algumas diferenças são: Inexistência de análise de sensibilidade. Esta análise deve ser efetuada alterando-se o problema e obtendo-se nova solução. Não provê informação similar ao preço de sombra. Muitos softwares que realizam programação inteira são parte integrante de pacotes de PL e produzem análise de sensibilidade, independente desta não ter valor no âmbito de programação inteira. Nestes casos devemos desconsiderar estas análises. 4
Usando Solver do Excel Definindo Variáveis Inteiras e Binárias Lindo Variáveis Inteiras e Binárias Os comandos adicionais abaixo são colocados após o comando END ao final das restrições: FREE <Variável> - Remove os limites de não negatividade imposta a todas as variáveis por default. GIN <Variável> inteira geral. INT <Variável> inteira binária. - Faz a <Variável> uma variável - Faz a <Variável> uma variável 5
Problema de Orçamento de Capital Caso LCL Tecnologia S/A A LCL Tecnologia S/A tem que planejar seus gastos em P&D. A empresa pré-selecionou 4 projetos e deve escolher dentre esses quais deve priorizar em função de restrições orçamentárias. Os dados relevantes encontram-se na tabela abaixo. Proj. 2 3 4 NPV(8%) (mil R$) $05.99 $28.90 $36.4 $7.38 Capital Disponível Ano 70 80 90 50 200 Capital Requerido em mil R$ Ano 2 Ano 3 Ano 4 Ano 5 5 0 20 20 20 25 5 0 20 0 30 20 30 40 0 20 70 70 70 70 Variáveis de Decisão Caso LCL Tecnologia S/A, se o projeto i for selecionado x = i =,2,3, 4. i 0, se o projeto i não for selecionado Função Objetivo = Maximizar o somatório NPV. Ma05.99x + 28.90x + 36.4x + 7.38x 3 4 6
Caso LCL Tecnologia S/A Restrições Orçamentárias: 70x + 80x + 90x + 50x 200 - Ano 3 4 5x + 20x + 20x + 30x 70 - Ano 2 3 4 25x + 40x 70 - Ano 3 2 4 20x + 5x + 30x 70 - Ano 4 3 20x + 0x + 20x + 20x 70 - Ano 5 3 4 Caso LCL Tecnologia S/A O Modelo Ma05.99x + 28.90x + 36.4x + 7.38x 3 4 s.a. 70x + 80x + 90x + 50x 200 3 4 5x + 20x + 20x + 30x 70 3 4 25x + 40x 70 2 4 20x + 5x + 30x 70 3 20x + 0x + 20x + 20x 70 3 4 x 0,, i =,2,3, 4 i { } 7
Caso LCL Tecnologia S/A Solver do Excel Caso LCL Tecnologia S/A Solver do Excel 8
Caso LCL Tecnologia S/A Solver do Excel Variáveis Binárias e Condições Lógicas As variáveis binárias também se prestam a selecionar alternativas que sejam condicionais. No exemplo anterior imagine que não mais de um dos projetos, 3 e 4 pudesse ser selecionado. Deveríamos então adicionar:. x x x + 3 + 4 Se apenas um dos projetos e apenas um dos projetos, 2 e 4 tivesse que ser escolhido obrigatoriamente, deveríamos incluir:. x x x + 2 + 4 = 9
Variáveis Binárias e Condições Lógicas Imagine agora que o projeto dependa de uma tecnologia que deve ser desenvolvida pelo projeto 2, isto é, o projeto só pode ser aprovado se e somente se o projeto 2 for aceito. Deveríamos então incluir: x = 0, x2 = 0 nenhum dos projetos aceitos x =, x2 = ambos os projetos aceitos x x2 0 x = 0, x2 = apenas o projeto 2 foi aceito x =, x2 = 0 inviável Caso LCL Equipamentos S.A. A LCL Equipamentos S.A. produz três tipos de furadeiras que necessitam de tempos diferentes na linha de montagem. Para que cada tipo de furadeira seja fabricada, um custo de preparação da fabrica é incorrido. Suponha que todas as furadeiras do mesmo tipo serão produzidas de uma só vez (apenas uma preparação por tipo). Abaixo os dados relevantes à análise do problema. Tipo Tipo 2 Tipo 3 Total Disponível Montagem Pintura Lucro Unitário Preparação 2h/unid 3h/unid R$50 R$5.000 3h/unid 2h/unid R$60 R$4.000 2,5h/unid 2,5h/unid R$65 R$3.000 600h 500h 20
Caso LCL Equipamentos S.A. Variáveis Binárias Variáveis de Decisão x = Quantidade a ser produzida do produto i ( i =,2,3) i, se x > 0 i y = i =,2,3 i 0, se x = 0 i Função Objetivo Max 50x + 60x + 65x 5000y 4000y 3000y 3 3 Caso LCL Equipamentos S.A. Variáveis Binárias Restrições de Produção 2x + 3x2 + 2,5x3 600 3x + 2x + 2,5x 500 3 Restrições de ligação de Variáveis x 600y x 600y 2 2 x 600y 3 3 Obs : 600 é um nº que é grande o suficiente. 2
Caso LCL Equipamentos S.A. { } O Modelo Max 50x + 60x + 65x 5000y 4000y 3000y sujeito a: 2x + 3x + 2,5x 600 3x + 2x + 2,5x 500 x 600y x 600y x 600y x 0, i =,2,3 y 0, i =,2,3 3 3 3 3 2 2 3 3 i i Caso LCL Equipamentos S.A. Variáveis Binárias =B7*B0 22
Caso LCL Equipamentos S.A. Variáveis Binárias Caso LCL Equipamentos S.A. Variáveis Binárias 23
Exercício Resolver o problema abaixo utilizando o algoritmo Branch-and-Bound: Max 3x + 3x s.a. x + 4x 2 6x + 4x 24 x, x 0 e inteiros Referências Bibliográficas LACHTERMACHER, G., Pesquisa operacional na tomada de decisão (modelagem em Excel). 2ª edição, revista e atualizada, Editora Campus, 2004. HILLIER, F. S. Introdução à pesquisa operacional. Rio de Janeiro, Editora Campus, 988. GOLDBARG, M. C. e LUNA, H. P., Otimização combinatória e programação linear: modelos e algoritmos. 2ª edição, Editora Campus, Rio de Janeiro, 2005. 24