Programação Matemática Licenciatura em Matemática Marília Pires Universidade do Algarve Departamento de Matemática 2005/06
Conteúdo 1 Modelos de Optimização 3 1.1 Programação Linear........................... 4 1.2 Tópicos sobre convexidade........................ 9 1.3 Programação Linear........................... 18 1.4 O Método Simplex............................ 19 1.5 Algoritmo Simplex............................ 20 1.5.1 O método simplex em forma de quadro............. 21 1.5.2 Exemplo de aplicação do método simplex............ 23 1.6 Dualidade em Programação Linear................... 26 1.7 Análise de sensibilidade e análise post-optimal............. 31 2 O Problema de Transportes 34 2.1 Formalização do problema:........................ 36 2.1.1 Exemplo concreto......................... 36 2.2 Propriedades das matrizes dos problemas de transportes....... 38 2.3 Obtenção da solução básica admissível inicial.............. 41 2.4 Forma especial do método simplex para o problema de transportes.. 43 2.5 Soluções degeneradas........................... 45 2.6 Desequilíbrio entre oferta e procura................... 46 3 Programação Linear Inteira 48 3.1 Algoritmo Branch-and-Bound...................... 48 3.1.1 Resolução de um problema concreto............... 49 4 Optimização sem restrições 57 4.1 Funções reais de variável real...................... 57 4.2 Funções reais de variável vectorial.................... 57 4.3 Gradiente, Hessiana e Jacobiano..................... 58 1
4.4 Gradiente e Hessiana de uma função quadrática............ 59 4.5 Derivada de um produto de funções................... 60 4.6 Derivação de função composta (regra da cadeia)............ 60 5 Programação não Linear 62 5.1 (alguns) Tipos de Problemas não Lineares............... 62 5.2 As condições de Karush-Kuhn-Tucher (KKT) para optimização com restrições.................................. 64 5.2.1 Programação Quadrática..................... 65 2
Capítulo 1 Modelos de Optimização Os modelos de optimização tentam expressar, em termos matemáticos, o objectivo de resolver um problema da melhor maneira de acordo com certas limitações. Alguns exemplos: - Projectar uma ponte de modo a: maximizar a resistência e/ou minimizar os materiais - Gerir um negócio de modo a: maximizar os lucros e/ou minimizar os custos e/ou minimizar o pessoal... - Criar um motor de automóvel de modo a: maximizar a velocidade e/ou minimizar a poluição e/ou minimizar o consumo e/ou maximizar a segurança... 3
Os modelos podem ser determinísticos ou estocásticos. Nos modelos determinísticos conhecem-se, à partida, os valores de todos os parâmetros do problema. Nos modelos estocásticos, normalmente, o que se conhece são as funções distribuição de probabilidade dos valores dos parâmetros envolvidos. Iremos, neste curso, abordar só modelos determinísticos. Pode-se ainda considerar a divisão dos modelos em contínuos e discretos, conforme as variáveis envolvidas possam tomar valores reais ou inteiros. Na sua forma mais geral, um modelo de optimização determinístico contínuo pode ser representado do seguinte modo: Minimizar f(x) Sujeito a h i (x) = 0 i = 1; :::; m h g j (x) 0 j = 1; :::; m g x 2 R n em que f; h i e g j : R n! R são funções contínuas. Os modelos que vamos estudar são casos muito particulares desta formulação geral, em que se identi cam perfeitamente certas propriedades das funções envolvidas. 1.1 Programação Linear Um modelo de programação linear envolve a optimização de uma função linear sujeita a restrições lineares nas variáveis. Seja, por exemplo: Minimizar c 1 x 1 + c 2 x 2 + ::: + c n x n sujeito a a 11 x 1 + a 12 x 2 + ::: + a 1n x n b 1 a 21 x 1 + a 22 x 2 + ::: + a 2n x n b 2 a m1 x 1 + a m2 x 2 + ::: + a mn x n b m x 1 ; x 2 ; :::; x n 0 (1.1) A c 1 x 1 + c 2 x 2 + + c n x n chama-se função objectivo. É costume representar esta função por z. As valores c 1 ; c 2 ; :::; c n dá-se o nome de custos e x 1 ; x 2 ; ; x n são as variáveis de decisão. As desigualdades representam a restrições. Os coe cientes a ij ; i = 1; :::; m; j = 1; :::; n, são chamados coe cientes tecnológicos e formam 4
2 3 a 11 a 12 a 1n a 21 a 22 a 2n uma matriz A = 6 4..... 7 chamada matriz das restrições. O vector. 5 a m1 a m2 a 2 3 mn b 1 b 2 b = 6 7 4. 5 é chamado termo independente. As restrições x 1; x 2 ; :::; x n 0 são b m chamadas restrições de não negatividade. A um vector x = [x 1 ; x 2 ; :::; x n ] T que satisfaz todas as restrições chama-se solução admissível. Ao conjunto de soluções admissíveis chama-se região admissível. Usando notação matricial, o problema (1.1) pode ser escrito abreviadamente: Minimizar Sujeito a c T x Ax b x 0 Usa-se a seguinte de nição: x; y 2 R n ; x y () x i y i ; i = 1; :::; n Para que um problema de optimização possa ser representado como um programa linear é necessário que várias condições se veri quem, sendo as principais: I. Proporcionalidade: Dada uma variável x j a sua contribuição para o custo é c j x j e a sua contribuição para a restrição i é a ij x j. Isto é, se o valor de x j passa, por exemplo, para o dobro a sua contribuição também passará para o dobro. II. Aditividade: Isto é o custo total é a soma dos custos individuais e a contribuição total para a restrição i é a soma das contribuições individuais. III. Divisibilidade: As variáveis de decisão podem tomar qualquer valor real. IV. Determinismo: Os coe cientes c j, a ij, e b i factor probabilistico são conhecidos sem qualquer O problema seguinte é um exemplo clássico dum programa linear onde se podem constatar estas condições. 5
O Problema da Mistura Óptima Uma fábrica produz dois tipos de fertilizantes chamadosfosfatados e não-fosfatados. Para os produzir utiliza três tipos de matérias-primas do seguinte modo: ton de matéria prima para uma ton ton/mês matéria-prima fosfatado não-fosfatado disponíveis 1 2 1 1500 2 1 1 1200 3 1 0 500 preço/ton 15 10 Quanto deve ser produzido de cada tipo de fertilizante de modo a maximizar as vendas? Prepara-se uma lista das variáveis de decisão do problema. Esta lista deve ser tal que, a partir da solução óptima, seja possível de nir uma política que implemente essa solução. Neste caso temos: x 1 $ toneladas de fertilizante fosfatado a serem fabricadas x 2 $ toneladas de fertilizante não-fosfatado a serem fabricadas Associada a cada variável do problema está uma actividade que deve ser executada. Neste problema há duas actividades: Actividade 1: Fabricar uma tonelada de fertilizante fosfatado Actividade 2: Fabricar uma tonelada de fertilizante não-fosfatado O valor das variáveis do problema de nem o nível ao qual estas actividades devem ser executadas. A formulação do programa linear exige que determinados pressupostos se veri- quem: 6
I. Proporcionalidade São necessárias 2 toneladas de matéria-prima 1 para fabricar 1 tonelada de fertilizante fosfatado. A proporcionalidade implica que 2x 1 toneladas de matéria-prima 1 são necessárias para fabricar x 1 toneladas de fertilizante fosfatado para qualquer x 1 0. De um modo geral a ij unidades de matéria-prima i são consumidas ao efectuar a actividade j a nível 1, ou seja, a ij x j unidades da matéria-prima i são consumidas ao efectuar a actividade j ao nível x j com x j 0. Também, pela proporcionalidade, como vender uma tonelada de fertilizante fosfatado rende 15 u.m., x 1 toneladas do mesmo rendem 15x 1 para qualquer x 1 0. II. Aditividade São necessárias duas toneladas de matéria-prima 1 para fabricar uma tonelada de fertillizante fosfatado e uma tonelada da mesma matéria prima para fabricar uma tonelada de fertilizante não-fosfatado. A aditividade implica que 2x 1 + x 2 toneladas de matéria prima 1 são necessárias para fabricar x 1 toneladas de fertilizante fosfatado e x 2 toneladas de fertilizante não-fosfatado para quaisquer x 1 0 e x 2 0. A aditividade garante que a função objectivo z(x) = z(x 1 ; x 2 ; :::; x n ) pode ser escrita como uma soma de n funções envolvendo cada qual só uma variável do modelo, isto é: z(x) = z 1 (x 1 ) + ::: + z n (x n ) em que z j (x j ) mede a contribuição da variável x j para a função objectivo. III. Divisibilidade Presume-se que cada variável pode tomar qualquer valor real no seu intervalo de variação. IV. Determinismo Todos os valores dos parâmetros são conhecidos sem ambiguidade. Para formular o problema escrevem-se todas as restrições e a função objectivo. Restrições de não negatividade: as variáveis x 1 e x 2 não devem ser negativas pois não faria qualquer sentido: x 1 0; x 2 0 7
As disponibilidades de matéria prima também vão conduzir a restrições: 2x 1 + x 2 1500 (matéria-prima 1) x 1 + x 2 1200 (matéria-prima 2) x 1 500 (matéria-prima 3) A função objectivo deve representar o objectivo a alcançar: maximizar as vendas. Ou seja tem-se z 1 (x 1 ) = 15x 1 (total das vendas de fertilizante fosfatado) e z 2 (x 2 ) = 10x 2 (total das vendas de fertilizante não fosfatado) sendo o total das vendas dado por: z(x) = 15x 1 + 10x 2. Temos assim o programa linear (LP) formulado na forma usual: Minimizar z(x) = 15x 1 + 10x 2 sujeito a 2x 1 + x 2 1500 x 1 + x 2 1200 x 1 500 x 1 0; x 2 0 Como temos um problema com apenas duas variáveis de decisão, a região admissível pode ser representada gra camente no plano. Trata-se de uma região convexa situada no primeiro quadrante. 8
Cada ponto desta região corresponde a uma solução admissível. A solução do problema corresponde ao(s) ponto(s) desta região que torna(m) máxima a função z. Note-se que z é uma função linear de domínio R 2. Os conjuntos de nível desta função representam-se geometricamente por rectas paralelas de declive 1:5. As rectas desta família têm equações da forma 15x 1 + 10x 2 = k, com k 2 R. No grá co seguinte apresentam-se alguns elementos dessa família de rectas, correspondentes a k = 10000, k = 12000 e k = 13500. Vê-se que para valores de k superiores a 13500 as rectas desta família deixarão de intersectar a região admissível. É este o valor óptimo para a função z e o ponto 2x1 + x óptimo encontra-se resolvendo o sistema 2 = 1500 x 1 + x 2 = 1200 É claro que este processo geométrico de resolução só é possível se o problema não tiver mais do que 2 variáveis de decisão. Como se viu, a região admissível é uma região convexa e a função objectivo também é uma função convexa (ver à frente as de nições exactas). Então para estarmos aptos a encontrar um processo de resolver o problema temos que saber mais qualquer coisa sobre regiões e funções convexas. 1.2 Tópicos sobre convexidade Todos os resultados que se seguem são válidos num espaço euclidiano de dimensão n De nição 1.2.1 (Conjunto convexo): Um conjunto S diz-se convexo se o segmento de recta que une dois pontos distintos de S está contido em S. Ou seja: 8x 1 ; x 2 2 S; 8 2 [0; 1]; z = x 1 + (1 )x 2 2 S 9
Exemplo de uma região convexa Exemplo de uma região não convexa De nição 1.2.2 (Combinação linear convexa): Considere-se o conjunto de P pontos fx 1 ; x 2 ; :::; x k g En e seja, z = k P i x i tal que k i = 1 e i 0; i = 1; :::; k: A z chama-se combinação linear convexa de fx 1 ; x 2 ; :::; x k g. i=1 De nição 1.2.3 (Combinação a m): Considere-se o conjunto de pontos P S = fx 1 ; x 2 ; :::; x k g e seja z = k P i x i tal que k i = 1. A z chama-se combinação a m de fx 1 ; x 2 ; :::; x k g. i=1 Exemplos de conjuntos convexos: 1. S = f(x 1 ; x 2 ; x 3 ) 2 E 3 : x 1 + 2x 2 x 3 = 4g (geometricamente, S é um plano). De um modo geral, S = fx 2 E n : p T x = ag, com p 2 E n, p 6= 0, 2 R é um hiperplano em E n e é convexo 2. S = f(x 1 ; x 2 ; x 3 ) 2 E 3 : x 1 + 2x 2 x 3 4g (geometricamente, S é um semiespaço). De um modo geral, S = fx 2 E n : p T x ()g, com p 2 E n, p 6= 0, 2 R é um semi-espaço em E n e é convexo. 3. S = f(x 1 ; x 2 ; x 3 ) 2 E 3 : x 1 +2x 2 x 3 4^2x 1 x 2 +x 3 6g (geometricamente, S é a intersecção de dois semi-espaços) 10 i=1 i=1
De um modo geral, S = fx 2 E n : Ax ()bg, com A uma matriz m n e b um vector de m componentes, é um conjunto convexo, intersecção de semi-espaços em E n. Lema 1.2.1 Sejam S 1 e S 2 conjuntos convexos. Então 1. S 1 \ S 2 é convexo 1. S 1 S 2 = fx 1 + x 2 : x 1 2 S 1 ^ x 2 2 S 2 g é convexo 2. S 1 S 2 = fx 1 x 2 : x 1 2 S 1 ^ x 2 2 S 2 g é convexo De nição 1.2.4 (Envólucro Convexo): Chama-se envólucro convexo de S, H(S), ao conjunto de todas as combinações lineares convexas de elementos de S. Lema 1.2.2 H(S) é o menor conjunto convexo que contém S e é a intersecção de todos os conjuntos convexos que contêm S. De nição 1.2.5 (Envólucro A m): Chama-se envólucro a m de S ao conjunto de todas as combinações a ns de elementos de S. Exemplo 1.2.1 Envólucro a m de dois pontos distintos: a recta que os contém. Exemplo 1.2.2 Envólucro convexo de dois pontos distintos: o segmento que os une. De nição 1.2.6 (Politopo): Chama-se politopo ao envólucro convexo de um número nito de pontos. De nição 1.2.7 (Simplex): Se fx 1 ; x 2 ; :::; x k+1 g são pontos independentes do ponto de vista a m, isto é, se fx k+1 x 1 ; x k+1 x 2 ; :::; x k+1 x k g são linearmente independentes, então H(fx 1 ; x 2 ; :::; x k+1 g) é chamado simplex, com vértices x 1 ; x 2 ; :::; x k+1. Da de nição resulta óbvio que em E n não há qualquer simplex com mais de n+1 vértices. De nição 1.2.8 (Poliedro): S é um poliedro se é a intersecção de um número nito de semi-espaços fechados. 11
De nição 1.2.9 (Ponto extremo): Seja S 6= um convexo fechado. Chama-se ponto extremo a um ponto x de S tal que x = (x 1 + (1 )x 2 ) 2 S ^ 2]0; 1[=) x = x 1 = x 2 De nição 1.2.10 (Direcção): Seja S 6= um convexo fechado. Chama-se direcção de S a d 6= 0, tal que 8x 2 S; 8 0; x + d 2 S: Se d 1 e d 2 são direcções, d 1 6= d 2, 8 > 0; d 1 6= d 2 De nição 1.2.11 (Direcção extrema): Seja S 6= um convexo fechado. Chamase direcção extrema a uma direcção d de S se Seja d = 1 d 1 + 2 d 2 2 S ^ 1 ; 2 > 0 =) d = d 1 = d 2 T = fx 2 R p : Dx b; x 0g; com D 2 R mp e b2 R m, sendo D uma matriz de característica completa. E seja S = f(x; s) 2 R p+m : Dx Is = b; x 0; s 0g: É possível construir uma bijecção entre S e T, pelo que se pode passar a trabalhar com conjuntos da forma S = fx 2 R n : Ax = b; x 0g; (1.2) sendo este último tipo de conjuntos de muito mais fácil tratamento. Teorema 1.2.3 (Caracterização dos pontos extremos de regiões da forma 1.2) Seja S = fx : Ax = b; x 0g, em que A é uma matriz m n (m < n) de característica completa.x é um ponto extremo de S se e só se pode ser encontrada uma partição de A = [B N] tal que e B 1 b 0. (diz-se que x é uma solução básica admissível) Demonstração. (é preciso demonstrar uma equivalência, demonstra-se uma implicação de cada vez) 1 a implicação: 12
Supor A = [B N] e x = xb x N = B 1 b 0 com B 1 b 0. Como Ax = b e x 0, então x é um elemento de S. Supor x = x 1 + (1 )x 2, com x 1 e x 2 elementos de S e 2]0; 1[. Considere-se parax 1 e x 2 a mesma partição que se x1b x2b considerou para x: x 1 = x 2 = : x 1N B x = x 1 + (1 )x 2, 1 b 0 x 2N x1b = x 1N x2b + (1 ) x 2N,, 0 = x 1N + (1 )x 2N ^ B 1 b = x 1B + (1 )x 2B Como é > 0, (1 ) > 0, x 1N 0 e x 2N 0, então teráque ser x 1N = x 2N = 0 x1b x 1 é elemento de S, por isso Ax 1 = b. Ou seja, [B N] = b. O que é o 0 mesmo que dizer que x 1B = B 1 b. Do mesmo modo se conclui que x 2B = B 1 b. Ou seja que x = x 1 = x 2. Conclui-se assim que x é um ponto extremo. 2 a implicação Seja x um ponto extremo de S. Sem perda de generalidade escreva-se x = (x 1 ; x 2 ; :::; x k ; 0; 0; :::; 0) T ; com x 1 ; x 2 ; :::; x k > 0: Começa-se por demonstrar que as k colunas da matriz A; a 1 ; a 2 ; :::; a k, correspondentes, são linearmente independentes. Por absurdo, supor a existência de 1 ; 2 ; :::; k, P não todos nulos, tais que k i a i = 0. Considere-se o vector e os vectores i=0 = ( 1 ; 2 ; :::; k ; 0; 0; :::; 0) T x 1 = x + e x 2 = x sendo um real positivo convenientemente escolhido de modo a que ambos os vectores sejam não negativos. Ax 1 = Ax + A = b + e ; kx i a i = b i=0 13
Ax 2 = Ax A = b kx i a i = b: Então x 1 e x 2 são elementos de S. Além disso, x 1 6= x 2, pois > 0 e 6= 0.Mas x = 1x 2 1 + 1x 2 2. Então x não seria ponto extremo. Conclui-se assim que as colunas da matriz A a 1 ; a 2 ; :::; a k são linearmente independentes. Como A á uma matriz de característica completa, é possível juntar m k colunas às k primeiras de modo a xb obter uma matriz B, de dimensão m, não singular e A = [B N] e x = = x N B 1 b com B 0 1 b 0 Corolário 1.2.4 O número de pontos extremos de S é nito. O número de pontos extremos é limitado pelo número máximo de maneiras de n! escolher m colunas das n da matriz, ou seja m!(n m)! Teorema 1.2.5 (existência de pontos extremos nas regiões da forma 1.2): Seja S = fx : Ax = b; x 0g, em que A é uma matriz m n (m < n) de característica completa e S 6=, então S tem pelo menos um ponto extremo. Demonstração. Escolha-se um ponto x de S. Sem perda de generalidade suponha-se x = (x 1 ; x 2 ; :::; x k ; 0; 0; :::; 0) T, com x 1 ; x 2 ; :::; x k > 0. Se a 1 ; a 2 ; :::; a k são linearmente independentes, então k < m e x é um ponto extremo. Caso contrário, P há escalares 1 ; 2 ; :::; k não todos nulos tais que k i a i = 0. Determine-se i=0 xj = min : j > 0 1jk j i=0 = x r r : E de na-se x0 do seguinte modo: xj x j 0 = j ; j = 1; ; k 0; j = k + 1; ; n Do modo como se de niu é óbvio que x0 0 e que a componente de ordem r k é nula. Isto é, x0 tem, no máximo, k 1 componentes positivas.além disso Ax0 = b Então x0 é um elemento de S que tem, no máximo, k 1 componentes positivas. O 14
processo pode-se repetir até que as componentes positivas correspondam a colunas linearmente independentes, obtendo-se assim um ponto extremo. Considere-se novamente S = fx : Ax = b; x 0g, em que A é uma matriz m n(m < n) de característica completa e S 6=. Se d é uma direcção de S, pela de nição, 8x 2 S; 8 0; x + d 2 S. Então A(x + d) = b. Mas, A(x + d) = Ax + Ad = b + Ad = b e, portanto, Ad = 0. Sabemos assim que, para este conjunto S, d 6= 0 é uma direcção se d 0 e Ad = 0. Teorema 1.2.6 (Caracterização das direcções extremas de conjuntos da forma 1.2): Seja S = fx : Ax = b; x 0g, em que A é uma matriz m n (m < n) de característica completa e S 6=. é uma direcção extrema de S se e só se A puder ser decomposto em A = [B N] tal que B 1 aj B d é um múltiplo positivo de d = 1 a j e j 0 para alguma coluna a j 2 N e, em que e j é um vector de dimensão (n m) cujas componentes são nulas, excepto a de ordem j que é igual a 1. Demonstração. Se B 1 a j 0 então d 0 e d 6= 0 (pois tem pelo menos uma componente não nula). Além disso Ad = B N B 1 a j = a e j + a j = 0: j Então d é uma direcção. Para mostrar que d é uma direcção extrema, supor d = 1 d 1 + 2 d 2 com 1 ; 2 > 0 e d 1 e d 2 direcções de S. Note-se que d tem (n m 1) componentes nulas, por isso d1 e d2 também as devem ter. Seja d1b d2b d 1 = 1 e d e 2 = 2 : j e j Como tem que ser Ad 1 = 0 e Ad 2 = 0, então d 1B = d 2B = B 1 aj.então d 1 e d 2 não são distintos e, por isso, d é uma direcção extrema. Como d é múltiplo de d também o é. Inversamente: Supor d uma direcção extrema de S. Sem perda de generalidade suponha-se d = (d 1 ; :::; d k ; 0; :::; d j ; :::; 0) T, com d i > 0, i = 1; :::; k e i = j. Tal como no teorema anterior, pode-se mostrar que a 1 ; :::; a k são linearmente independentes, pois, caso 15
P não o fossem, existiriam escalares 1 ; 2 ; :::; k não todos nulos tais que k i a i = 0. Seja = ( 1 ; 2 ; :::; k ; 0; 0; :::; 0) T e de na-se d 1 = d + e d 2 = d, sendo um real positivo convenientemente escolhido de modo a que d 1 e d 2 sejam positivos. É claro que Ad 1 = Ad 2 = 0, logo d 1 e d 2 são direcções e, além disso, d = 1d 2 1 + 1d 2 2 e então não seria uma direcção extrema.é claro que k m. Então existem m k colunas em A que se podem juntar a estas k de modo a formar um conjunto de m colunas linearmente independente. Sem perda de generalidade suponha-se que se junta a k+1 ; :::; a m. Seja B = [a 1 ; :::; a m ]. B é invertível. 0 = Ad = Bd b + a j d j, em que d b é o vector das primeiras m componentes de d. Então d b = d j B 1 a j. Isto B é, o vector d é da forma d = d 1 a j j. Note-se que d 0 e d e j > 0, então j B 1 a j 0: Teorema 1.2.7 (da Representação): Seja S = fx : Ax = b; x 0g 6=, em que A é uma matriz m n(m < n) de característica completa. Seja fx 1 ; x 2 ; :::; x k g o conjunto de todos os pontos extremos de S e fd 1 ; d 2 ; :::; d p g o conjunto de todas as direcções extremas de S. Então x 2 S se e só se x pode ser escrito do seguinte modo P x = k P j x j + p kp j d j, com, j = 1; j 0; j = 1; :::; k e j 0; j = 1; :::; p. Demonstração. Começa-se por construir o conjunto T do seguinte modo: i=0 T = fx 2 E n : x = kx px kx j x j + j d j ; j = 1; j 0; j = 1; :::; k e j 0; j = 1; :::; pg: T é um conjunto convexo e fechado.então tem pelo menos um ponto extremo. Logo T 6=. É óbvio que T S. Para mostrar que T = S é então necessário mostrar que S T. Por absurdo, suponha-se que existe z 2 S, tal que z =2 T. Seja q T x =, o plano que separa T e z (existe, porque T é convexo e fechado e z =2 T ). Suponhamos que este plano é tal que q T z > e q T y, para todo o y de T. Ou seja kx px q T ( j x j + j d j ) a: Fazendo, nesta expressão, j = 0, para todo o j e j = 0 para j 6= i e i = 1, vem q T x j, para j = 1; :::; k. Além disso, como j pode ser feito crescer 16
P arbitrariamente, para que a condição q T ( k P j x j + p j d j ) se veri que, terá que ser q T dj 0: De ne-se x tal que q T x = max 1jk qt x j. Então x é um ponto extremo de T e q T x a. Então pode-se encontrar uma partição de A, A = [ B N ], tal B que x = 1 b e B 0 1 b 0. Como z 2 S, então Az = b e z 0. Considerando zb z = ; virá z B = B 1 b B 1 Nz N. Então z N Mas, sabe-se que ou seja, q T z q T z = q T B B 1 b B 1 Nz N + q T N z N : q T x > 0. Por outro lado: q T z > a q T y; 8y 2 T; q T z q T x = q T B B 1 b B 1 Nz N + q T N z N q T NB 1 b = (q T N q T BB 1 N)z N > 0: Como z N 0, então, há pelo menos um j m + 1, tal que q j qb T B 1 a j > 0. Seja y j = B 1 a j. y Supor y j 0. Considere-se o vector d j = j, em que e j é um vector de dimensão n m, com todas as componentes nulas, à excepção da de ordem j, que é igual a 1. Mas, então, d j é uma direcção extrema de S e, por isso, q T d j 0. Mas q T d j = q j qb T B 1 a j > 0. Então y j não é não positivo (isto é, tem pelo menos uma componente positiva). Construa-se o vector b y x = + j ; 0 e j sendo b = B 1 bi b e escolhido de acordo com = min : y ij > 0 = b r. Deste y ij y rj modo x 0 e x tem no máximo m componentes positivas. Por outro lado, Ax = Bb + B( y j ) + a j = BB 1 b BB 1 a j + a j = b: Logo, x 2 S e, como y rj 6= 0, os vectores a 1 ; :::; a r 1 ; a r+1 ; :::; a m ; a j são linearmente independentes (ver demonstração anterior). Logo x é um ponto extremo. q T x = qb T b y qt N + j = q T 0 Bb qby T j +qne T j = q T x+(q j qbb T 1 a j ); e j 17 e j
como > 0 e q j qb T B 1 a j < 0; então q T x > q T x. Isto é, x é um ponto extremo e q T x > q T x! Mas, tinha-se de nido x de modo a que q T x fosse o maior valor entre os pontos extremos. Então z 2 T e T = S. Corolário 1.2.8 S = fx : Ax = b; x 0g, em que A é uma matriz m n (m < n) de característica completa e S 6=. S tem pelo menos uma direcção extrema se e só se S é ilimitado. Demonstração. Qualquer x de S escreve-se na forma x = kx px j x j + j d j ; com, kx j = 1; j 0; j = 1; :::; k e j 0; j = 1; :::; p: Se não há direcções extremas: jjxjj k P j jjx j jj k P jjx j jj, então S é limitado. Reciprocamente, se houver direcções extremas jjxjj não será limitada pois j pode ser arbitrariamente grande e, então, S não seria limitado. 1.3 Programação Linear Um problema de programação linear é da forma: Min s:a c T x x 2 S (1.3) em que S é um poliedro em E n : Teorema 1.3.1 (existência de solução para um programa linear): Considere-se um problema da forma (1.3) em que S = fx2e n : Ax = b^x0g, sendo A uma matriz mn de característica completa. Seja fx 1 ; x 2 ; :::; x k g o conjunto de todos os pontos extremos de S e fd 1 ; d 2 ; :::; d p g o conjunto de todas as direcções extremas de S. Uma condição necessária e su ciente para existir uma solução óptima nita é que c T d j 0; j = 1; :::; p. Se esta condição se veri car, então há um ponto extremo x i que resolve o problema. P Demonstração. x2s () x = k P j x j + p j d j ; com, kp j = 1; j 0; j = 1; :::; k e j 0; j = 1; :::; p: 18
Como: c T x = c T kp P j x j + p j d j!, então a seguinte equivalência é válida: Min s.a c T x Ax = b x 0 ()! kp P Min c T j x j + p j d j s.a kp j = 1 j 0; j = 1; :::; k j 0; j = 1; :::; p Note-se que, se para algum j, c T d j < 0, então j pode crescer sem limite e a função objectivo não será limitada. Então, é óbvio que, para a solução ser nita tem que ser c T d j 0; j = 1; :::; p. Neste caso, para minimizar a função objectivo, é necessário escolher j = 0, para j = 1; :::; p: 1.4 O Método Simplex Foi o primeiro método a ser proposto para a resolução de problemas lineares e baseiase nas propriedades dos conjuntos convexos em geral e dos poliedros em particular. O seu funcionamento e convergência são óbvios tendo em atenção os resultados demonstrados nas páginas anteriores. Considere-se o problema Min s:a c T x Ax = b x 0 E seja x o ponto extremo correspondente à partição A = [ B N ], ou seja x B = B 1 b e x N = 0, correspondendo-lhe para a função objectivo o valor c T x = c T B B 1 b: Considere-se x que satisfaça Ax = b e x0 e considere-se para x a mesma partição do que para x: Bx B + Nx N = b=) x B = B 1 b B 1 Nx N : Calculando o valor da função objectivo em x, usando esta mesma partição para c, virá: c T x = c T B x B + c T N x N = c T B (B 1 b B 1 Nx N ) + c T N x N = c T B B 1 b + (c T N c T B B 1 N)x N = c T x B + (c T N c T B B 1 N)x N 19
Então, se (c T N c T B B 1 N)0, como x N 0, será c T xc T x e, por isso, x é um ponto extremo óptimo. Caso contrário, isto é, se para algum j > m for c j c T B B 1 a j < 0, x não é óptimo, pois é possível construir um outro elemento de S, onde o valor da função objectivo é menor do que em x, do seguinte modo: B x = x + d j, com d j = 1 a j e > 0: e j Calculemos o valor da função objectivo neste novo ponto x: c T x = c T x + (c j c T BB 1 a j ): Como c j c T B B 1 a j < 0 e > 0, então c T x c T x. Duas situações podem ocorrer: Caso 1 y j = B 1 a j 0 Neste caso é Ad j = 0 e d j > 0. Então x = x + d j 2S. Portanto, d j é uma direcção extrema e o problema é ilimitado. Caso 2 9i : y ij > 0 Seja b = B 1 b e de na-se do seguinte modo: = minf b i y ij : y ij > 0; i = 1; :::; mg: Seja r o indíce correspondente a esse mínimo. Então x = x + d j tem, no máximo, m componentes positivas (pois a componente de ordem r é nula e a de ordem j passa a ser positiva). Nestas condições é fácil demonstrar que as colunas de A correspondentes são linearmente independentes e x é um ponto extremo com um melhor valor para a função objectivo. 1.5 Algoritmo Simplex Passo inicial: Encontrar um ponto extremo x a que corresponde a base B. Passo principal: Calcular c T N c T B B 1 N. Se este vector for não negativo o processo termina pois x é um extremo óptimo. Caso contrário, toma-se j tal que c j c T B B 1 a j < 0. Se y j = B 1 a j 0, o processo termina pois encontrou-se uma aresta, x + d j, ao longo da qual a 20
função objectivo é ilimitada. Se alguma componente de y j for positiva de ne-se como o mínimo do conjunto f b i y ij : y ij > 0; i = 1; :::; mg = b r y rj 0 e forma-se a nova base trocando em B a coluna a r por a j. Repete-se até terminar. Como, em cada iteração, o valor da função objectivo decresce, há a garantia de não repetir extremos e, como há um número nito de extremos, o processo descrito termina num número nito de iterações. Se b r = 0 (solução degenerada), então = 0 e a função mantém o mesmo valor em iterações consecutivas, mantendo o mesmo extremo mas mudando de base. Neste caso há possibilidade de entrar em ciclo, mas essas situações são raras. 1.5.1 O método simplex em forma de quadro x T B x T N b B N z c T B c T N Se o traço jj for interpretado como um sinal de =, este quadro representa Ax = b e z = c T x. Multiplicando a segunda linha por B 1 e depois, multiplicando-a por -c T B e somando à terceira linha obtém-se o seguinte quadro: x T B x T N B 1 b I B 1 N z c T B B 1 b 0 c T N c T B B 1 N Deste modo lê-se directamente na primeira coluna os valores das variáveis básicas e na última linha os valores de z e de c j c T B B 1 a j necessários para avaliar se a solução é ou não óptima. De notar que a coluna do quadro correspondente à variável x j contém o vector y j = B 1 a j : Se, inicialmente, for B = I este quadro é exactamente igual ao anterior (com a possível excepção da última linha, que poderá ter que ser ajustada de modo a que os custos das variáveis básicas sejam todos nulos) e tudo se torna mais simples. Isto signi ca que na matriz A há m colunas que produzem a matriz identidade e, portanto, que há um ponto extremo a que corresponde como base a matriz identidade. 21
Muitas vezes não existem na matriz A colunas su cientes para fazer inicialmente B = I. Nesses casos, é costume recorrer ao método das duas fases que tem como objectivo encontrar um ponto extremo do conjunto admissível. Começa-se por introduzir no problema variáveis arti ciais (que têm que ser não negativas) em número su ciente para que nas colunas de A apareça uma matriz identidade. É claro que o problema obtido tem uma outra região admissível e só será equivalente ao problema proposto desde que as variáveis arti ciais sejam todas nulas. Tal consegue-se começando por resolver o problema que consiste em minimizar uma função W que é a soma das variáveis arti ciais nessa nova região. Quando se obtém o mínimo desse problema, dois casos podem acontecer: I) W > 0 II) W = 0 No primeiro caso, há variáveis arti ciais básicas com valor positivo. Isto quer dizer que não é possível escrever uma base admissível só com colunas de A e que, por isso, o problema não tem qualquer solução admissível (isto é, o conjunto S é vazio) No segundo caso ainda duas situações podem acontecer: a) não há variáveis arti ciais na base, isto é, obteve-se um ponto extremo da região admissível do problema inicial e pode-se começar a procurar o óptimo da função c T x b) ainda há variáveis arti ciais na base, que têm obviamente o valor nulo. Neste caso ainda há duas hipóteses diferentes: i) as linhas correspondentes às variáveis arti ciais são nulas (isto é, essas equações são combinação linear das outras) e podem ser retiradas passando a resolver-se um problema de dimensão inferior. Neste caso o problema inicial teria uma restrições redundantes. ii) as linhas não são completamente nulas e as variáveis arti ciais podem ser retiradas da base por troca com variáveis não arti ciais obtendo-se assim uma solução degenerada. O algoritmo que foi descrito aplica-se a programas lineares na chamada forma standard: 22
Min s.a c T x Ax = b x 0 Mas qualquer outro tipo de programa linear pode facilmente ser transformado neste, por exemplo: - restrições de ou de podem ser transformadas em igualdades acrescentando variáveis de afastamento com o sinal adequado; - variáveis sem restrição de sinal, x i 2 R, podem ser tratadas como a diferença de duas variáveis não negativas x i = x + i x i. Note-se que as colunas destas duas variáveis vão ser simétricas uma da outra e que, portanto, não podem ser as duas simultaneamente básicas. - variáveis com limite inferior 6= 0, neste caso, se for x i a, basta fazer a mudança de variável x 0 i = x i a0. 1.5.2 Exemplo de aplicação do método simplex Determinar Max x 1 2x 2 + x 3 s.a x 1 + 3x 2 + x 3 4 x 1 + 2x 2 x 3 6 x 1 + x 3 12 x 1 ; x 2 ; x 3 0 Comecemos por escrever o problema na forma standard: Min x 1 + 2x 2 x 3 s.a x 1 + 3x 2 + x 3 x 4 = 4 x 1 + 2x 2 x 3 x 5 = 6 x 1 + x 3 + x 6 = 12 x 1 ; x 2 ; x 3 0 ou seja: 2 A = 4 1 3 1 1 0 0 1 2 1 0 1 0 1 0 1 0 0 1 3 5 : 23
Como nas colunas da matriz A não se encontram todas as colunas necessárias para começar com B = I, é necessário acrescentar duas variáveis arti ciais, x 7 e x 8, a que correspondem as colunas a 7 = [ 1 0 0 ] T e a 8 = [ 0 1 0 ] T : A função objectivo da primeira fase escreve-se, então, w = x 7 + x 8 e o objectivo da primeira fase é minimizar w. Quadro inicial: B 1 b x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 7 4 1 3 1 1 0 0 1 0 x 8 6 1 2 1 0 1 0 0 1 x 9 12 1 0 1 0 0 1 0 0 w 0 0 0 0 0 0 1 1 Para começar é necessário ter a função objectivo escrita só à custa das variáveis não básicas, isto é, na linha dos custos devem aparecer zeros nas colunas correspondentes às variáveis básicas. Para esse efeito subtraem-se as duas primeiras linhas à última. B 1 b x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 b i =y ij x 7 4 1 3 1 1 0 0 1 0 4=3 x 8 6 1 2 1 0 1 0 0 1 6=2 x 6 12 1 0 1 0 0 1 0 0 w 10 2 5 0 1 1 0 0 0 " B 1 b x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 b i =y ij x 2 4=3 1=3 1 1=3 1=3 0 0 1=3 0 x 8 10=3 1=3 0 5=3 2=3 1 0 2=3 1 10=3=2=3 x 6 12 1 0 1 0 0 1 0 0 w 10=3 1=3 0 5=3 1=3 1 0 5=3 0 B 1 b x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 2 3 1=2 1 1=2 0 1=2 0 0 1=2 x 4 5 1=2 0 5=2 1 3=2 0 1 3=2 x 6 12 1 0 1 0 0 1 0 0 w 0 0 0 0 0 0 1 1 24 "
Chegou-se assim ao m da primeira fase com a indicação de óptimo para w e w = 0. Além disso, não há variáveis arti ciais na base pelo que se pode começar de imediato a segunda fase passando a trabalhar com a função objectivo do problema inicial. B 1 b x 1 x 2 x 3 x 4 x 5 x 6 x 2 3 1=2 1 1=2 0 1=2 0 x 4 5 1=2 0 5=2 1 3=2 0 x 6 12 1 0 1 0 0 1 z 1 2 1 0 0 0 Antes de começar é necessário anular os custos das variáveis básicas: B 1 b x 1 x 2 x 3 x 4 x 5 x 6 x 2 3 1=2 1 1=2 0 1=2 0 x 4 5 1=2 0 5=2 1 3=2 0 x 6 12 1 0 1 0 0 1 z 6 0 0 0 0 1 0 Temos assim também um óptimo para a função z. Pois c T N c T B B 1 N0. De notar ainda que, do facto de c 1 c T B B 1 a 1 = 0 pode-se concluir que a variável x 1 pode ser tornada básica sem que o valor de z seja alterado: B 1 b x 1 x 2 x 3 x 4 x 5 x 6 x 1 6 1 2 1=2 0 1=2 0 x 4 2 0 1 5=2 1 3=2 0 x 6 6 0 2 1 0 0 1 z 6 0 0 0 0 1 0 Então temos 2 pontos extremos que são óptimos, obviamente com o mesmo valor mínimo de z, que é 6: (x 1 ; x 2 ; x 3 ) = (0; 3; 0) e (x 1 ; x 2 ; x 3 ) = (6; 0; 0). O segmento que une estes dois vértices é uma aresta do poliedro admissível e em todos os seus pontos a função z tem o mesmo valor, isto é, todos os pontos sobre aresta correspondem ao óptimo. (x 1 ; x 2 ; x 3 ) = (0; 3; 0) + (1 )(6; 0; 0) = (6 6; 3; 0) (1; 2; 1) T (6 6; 3; 0) = 6 6 + 6 = 6 Como a função objectivo foi multiplicada por 1, para passar do máximo para o mínimo, então o valor óptimo de z é 6. 25
1.6 Dualidade em Programação Linear Considerem-se os problemas P: Min c T x s.a Ax = b x 0 D: Max b T y s.a A T y c y sem restrição Teorema 1.6.1 Para o par de problemas P e D são válidos os seguintes resultados: a) c T xb T y, para qualquer x solução admissível de P e qualquer y solução admissível de D. b) Se P é ilimitado então D não tem solução e se D é ilimitado então P não tem solução. c) Se P e D têm solução, então ambos têm soluções óptimas e o valor da função objectivo é igual para ambos. Demonstração. a) Seja x solução admissível de P, então Ax = b e x0. Seja y solução admissível de D, então A T yc. A T yc=)ca T y=)c T y T A e, além disso, c T y T A ^ x0 =)c T xy T Ax=) c T xy T b b) Decorre imediatamente de a): Se P é ilimitado, D não pode ter qualquer solução admissível, pois, caso contrário, haveria um limite para a função objectivo de P. E, do mesmo modo,se D é ilimitado, P não pode ter qualquer solução admissível, pois, caso contrário, haveria um limite para a função objectivo de D. c) Seja x solução óptima de P. Então x = [ x T B x T N ] e x B = B 1 b, x N = 0. Considere-se y T = c T B B 1. Então y T A = c T B B 1 A = c T B B 1 B N = c T B ct B B 1 N A T yc=)c T y T A=) c T B ct N c T B c T B B 1 N Como x é óptimo, então c T N c T B B 1 N0, ou seja c T B B 1 N c T N, donde se conclui que y é solução de D. Além disso y T b = c T B B 1 b = c T x Como, por a), 8y solução de D é b T yc T x, então 8y solução de D é b T yb T y e y é óptimo. Corolário 1.6.2 Se D não tem solução, então P é ilimitado ou não tem solução. Se P não tem solução então D ou é ilimitado ou não tem solução. 26
Demonstração. Se D não tem solução, não tem também uma solução óptima e P não poderá ter uma solução óptima, pois se a tivesse seria possível encontrar uma solução óptima de D a partir dela. Então P ou é ilimitado ou não tem solução. De modo análogo se pode argumentar a segunda parte. Corolário 1.6.3 Seja A uma matriz m n e c um vector com n componentes. Então exactamente um dos dois sistemas tem solução: Sistema 1: Ax0 e c T x > 0; x 2 R n Sistema 2: A T y = c e y0; y 2 R m Demonstração. P: Min 0 T x Considere-se s.a A T y = c y 0 o dual é D: Max c T y s.a Ax 0 Dizer que o sistema 2 não tem solução é o mesmo que dizer que o problema P não tem solução. Como o problema D tem pelo menos uma solução (x = 0 é solução) então D é ilimitado, isto é, o sistema 1 tem solução. Se o sistema 1 tem solução, então o valor óptimo da função objectivo do problema D é positivo. Mas, o valor da função objectivo do problema P é sempre zero o que não é compatível com o facto de o valor óptimo de D ser positivo. Então P não pode ter solução e D tendo solução, será ilimitado. Corolário 1.6.4 (condição de complementaridade e caracterização do óptimo) Considerem-se os problemas P : Min c T x s.a Ax = b x 0 e D : Max b T y s.a A T y c y sem restrição Seja x uma solução admissível de P e y uma solução admissível de D. Então x e y são óptimos para P e D, respectivamente, se e só se v = c A T y é tal que v i x i = 0 para i = 1; :::; n: Demonstração. x e y são admissíveis =) Ax = b; x0 e v = c A T y 0 v = c A T y =) c = v + A T y c T x = v + A T y T x = v T x + y T Ax = v T x + y T b =) v T x = c T x b T y Ora se as soluções são óptimas então os valores das funções objectivo são iguais e, por isso, é v T x = 0. Mas, como x0 e v0, então tem que ser v i x i = 0 para 27
i = 1; :::; n: Reciprocamente, se v i x i = 0 para i = 1; :::; n:, então v T x = 0 e c T x = b T y, o que implica que as soluções são óptimas. Foram estudadas as relações entre os problemas P e D na forma P : Min c T x D : Max b T y s.a Ax = b s.a A T y c x 0 y sem restrição Estas relações podem ser generalizadas a outro tipo de problemas que se podem converter nestes. Seja P : Min c T x s.a Ax b x 0 qual será o problema D que lhe corresponde? Este problema pode ser reduzido à forma standard fazendo: P : Min c T x + 0 T s s.a Ax Is = b x 0; s 0 e então temos o problema D dado por: ou seja D : Max b T y s.a A T y c y 0 D : Max b T y s.a A T y c Is 0 28
De modo análogo se podem estabelecer outras relações entre problemas P e D. Seguem-se alguns exemplos: P : Min c T x s.a Ax = b x 0 D : Max b T y s.a A T y c y sem restrição P : Min c T x s.a Ax b x 0 D : Max b T y s.a A T y c y 0 P : Max c T x s.a Ax b x 0 D : Min b T y s.a A T y c y 0 P : Max c T x s.a Ax b x sem restrição D : Min b T y s.a A T y = c y 0 Para todos os pares de problemas, que se dizem duais, são válidos todos os resultados que foram estabelecidos para a forma standard. Um problema pode não aparecer em nenhuma destas formas, podendo, num mesmo problema, coexistirem restrições em forma de igualdade e desigualdade, umas com e outras com, variáveis com e sem restrição de sinal e funções cujo objectivo seja maximizar ou minimizar. Para escrever o dual de um problema deste tipo há que começar por escrevê-lo numa das formas estudadas e depois escrever o dual seguindo as regras. Da observação de problemas duais pode-se concluir que: Primal restrição de igualdade variável sem restrição Dual variável sem restrição restrição de igualdade 29
As relações de complementaridade (Corolário 1.6.4) podem ser generalizadas no caso em que haja variáveis de afastamento nos dois problemas. Exemplo 1.6.1 P : Max c T x s.a Ax b x 0 D : Min b T y s.a A T y c y 0 De nindo u = b Ax e v = A T y c, pode-se concluir, a partir do Corolário 1.6.4, que, se x é uma solução admissível para o primal e y é uma solução admissível para o dual, então: x e y são óptimos ()x T v = u T y = 0 Seja P : Min c T x s.a Ax = b. Se x é solução óptima de P, então existe uma x 0 xb B partição para a matriz A = [ B N ], tal que: x = = 1 b 0 e, além x N 0 disso, c T N = c T N c T B B 1 N 0. Por outro lado, considerando o problema dual deste, D : Max b T y s.a A T y c e de nindo y T = c T B B 1 já sabemos que se obém também uma solução óptima para o problema D. A T y c, c T B B 1 [ B N ] c T B ct N, c T B c T N c T B B 1 N c T B ct N e, desta última inequação, facilmente se conclui que os valores das variáveis de afastamento do dual correspondentes às variáveis básicas do primal são nulos, enquanto que os valores das variáveis de afastamento do dual correspondentes às variáveis não básicas do primal podem ser obtidos a partir dos custos actualizados dessas variáveis e reciprocamente. Tendo este resultado em conta é possível desenvolver um algoritmo que resolva um problema primal, usando o quadro do primal, mas garantindo a convergência do algoritmo em termos de resolução do problema dual. Se um determinado quadro corresponder a uma base que não é admissível para o primal mas sim para o dual (alguns termos independentes negativos mas todos os custos não negativos), é possível, mesmo assim, trabalhar com esta base, pois ela corresponde a uma solução admissível, mas não óptima para o dual. Com base neste resultado desenvolve-se o Algoritmo Simplex-Dual que se descreve seguidamente: xb B Seja B uma base para o primal tal que = 1 b 0 mas 0 30 x N
c T N = c T N c T B B 1 N 0 e seja b = B 1 b: Passo 1: Escolher r tal que b r = minfb i g. Se b r 0, a solução é óptima e termina c s cj Passo 2: Escolher y rs < 0 tal que = min : y y rs y rj < 0 : Caso todos os rj y rj 0 o problema não tem solução. Passo 3: Trocar a r com a s em B Repetir até parar. Este método é de extrema utilidade, principalmente quando, depois de se ter resolvido um problema se chega à conclusão de que é necessário alterar algum ou alguns parâmetros e que essa alteração vá fazer com que alguma ou algumas componentes do termo independente se tornem negativas. 1.7 Análise de sensibilidade e análise post-optimal Considere-se o problema 8 < : min z = c T x Ax = b x 0 e, suponha-se que por aplicação do método simplex, se obteve a base B, correspondente à solução básica admissível óptima. Sabe-se que os valores do vector x correspondente ao óptimo, da função z e dos custos actualizados são dados por: xb B x = = 1 b 0; z = c x N 0 T B x B; c T N = c T N c T B B 1 N 0 Depois de resolvido o problema pode-se constatar que, por erro de recolha de dados ou por erro de formalização ou por alteração das condições, é necessário alterar algum ou alguns dos parâmetros. Vejamos como resolver o problema sem ter que voltar ao princípio. As alterações que se podem fazer inserem-se num dos seguintes casos: (i) (ii) (iii) (iv) mudança no vector c mudança no termo independente mudança na matriz A adição de uma variável 31
(v) (i) adição de uma restrição Altera-se o valor de uma das componentes de c: c k passa a ser c 0 k. Duas coisas podem acontecer: ou a variável x k é básica ou não é básica. 1 o caso x k não é básica Só é necessário recalcular o valor de c k : c 0 k = c0 k c T B B 1 a k = c k + c 0 k c k Se c 0 k 0 a solução continua óptima. Caso contrário há que continuar com o algoritmo simplex. 2 o caso x k é básica: Seja x k = x Bi É necessário recalcular todos os valores de c j, para j 2 N. c 0 j = c j c 0T B B 1 a j = c 0 j c 0 B i c Bi yij ; j 2 N Se c 0 j 0 a solução continua óptima e só é necessário recalcular o valor de z, visto que se alterou o custo de uma variável básica. Caso contrário há que continuar com o algoritmo simplex. (i) mudança no termo independente Substituindo b por b 0 então x 0 B = B 1 b 0 : Se x 0 B 0, o extremo continua a ser óptimo e só é necessário recalcular o valor de z. Caso contrário usa-se o simplex-dual, pois a solução deixou de ser admissível para o primal, mas continua admissível para o dual. (iii) mudança na matriz A: altera-se a coluna a j para a 0 j 1 o caso a j não é básico, recalcula-se y 0 j = B 1 a 0 j e c 0 j = c j c T B y0 j Se c 0 j 0, a solução continua óptima. Caso contrário, deve-se continuar com o método simplex. 2 o caso a j é básico Neste caso altera-se a matriz B e todo o quadro tem que ser recalculado. Pode mesmo acontecer que a nova matriz B seja singular. Nesse caso terá que se juntar variáveis arti ciais. Pode também acontecer que no novo quadro se obtenha uma solução que não é admissível nem para o 32
primal nem para o dual. Neste caso, não se pode aplicar nem o simpex, nem o simplex-dual. Pode-se tentar, retirar primeiro a j da base, mesmo piorando a solução, alterar a j e continuar a resolução a partir daí. Outra hipótese a encarar é voltar ao início. A decisão deve ser tomada em cada caso, conforme o trabalho que cada alternativa representar. (iv) Acrescentar uma restrição Se se acrescentar uma restrição a região admissível passa de S para S 0 e S 0 S. Se o vértice óptimo for um elemento de S 0 (isto é, se o vector correspondente ao vértice óptimo satis zer a nova restrição), ele continuará a ser óptimo, caso contrário há que acrescentar uma linha e uma coluna ao quadro e continuar a resolução através do simplex-dual, tendo o cuidado de obter a inversa da nova matriz B (que tem mais uma linha e uma coluna que a anterior). Na prática isso corresponde a obter a matriz identidade nas colunas correspondentes às variáveis básicas. (v) Acrescentar uma variável Acrescentar a variável x n+1, com coluna a n+1 e custo c n+1 : Calcula-se y n+1 = B 1 a n+1 e calcula-se. Se c n+1 = c n+1 c T B y n+1. Se c n+1 0 a solução continua óptima. Caso contrário a variável x n+1 entra na base e continua-se com o método simplex. 33
Capítulo 2 O Problema de Transportes Considerem-se m origens e n destinos. Na origem i há a i unidades de uma mercadoria e no destino j são necessárias b j unidades dessa mercadoria. Supõe-se que de cada origem é possível chegar a cada um dos destinos através de uma aresta (i; j). Associado a essa aresta existe um custo c ij correspondente a transportar uma unidade da mercadoria da origem i para o destino j. 34
A resolução do problema consiste em determinar o plano de distribuição que minimize os custos de transporte. Para simpli car a resolução do problema pressupõese que o total da mercadoria que existe nas origens é igual ao total da mercadoria P necessária nos destinos, isto é que m P a i = n b j. Isto é, que no nal todas as origens i=1 carão sem mercadoria e os destinos terão toda a sua procura satisfeita. 35
2.1 Formalização do problema: min s.a np i=1 mp c ij x ij np x ij = a i mp x ij = b j i=1 x ij 0 i = 1; ; m j = 1; ; n i = 1; ; m; j = 1; ; n em que x ij representa a quantidade de mercadoria a transportar da origem i para o destino j. Fazendo x T = [x 11 ; x 12 ; :::; x 1n ; x 21 ; :::; x 2n ; :::; x m1 ; :::; x mn ] b T = [a 1 ; a 2 ; :::; a m ; b 1 ; :::; b n ] e ordenando A e c do mesmo modo, pode-se escrever este problema com a forma: Min s.a c T x Ax = b x 0 A matriz A tem dimensão (m + n) (mn) e tem uma forma muito especial que permite simpli car bastante a resolução do problema. 2.1.1 Exemplo concreto Vejamos um exemplo concreto: Pretende-se transportar uma determinada mercadoria de 2 armazéns (armazém 1 e armazém 2) para 3 destinos (1, 2 e 3). No armazém 1 existem 30 unidades da mercadoria, enquanto que no armazém 2 existem 20 unidades da mercadoria. Por sua vez o destino 1 precisa de 15 unidades da mercadoria, o destino 2 de 10 unidades e o destino 3 de 25 unidades. Os preços unitários de transporte de cada origem para cada destino são dados no seguinte quadro: destinos 1 2 3 a i origens 1 c 11 = 4 c 12 = 7 c 13 = 5 30 2 c 21 = 2 c 22 = 4 c 23 = 3 20 b j 15 10 25 36
A formalização do problema na forma de um problema de programação linear é a seguinte: Min z = 4x 11 + 7x 12 + 5x 13 + 2x 21 + 4x 22 + 3x 23 s.a x 11 + x 12 + x 13 = 30 x 21 + x 22 + x 23 = 20 x 11 + x 21 = 15 x 12 + x 22 = 10 x 13 + x 23 = 25 x 11 ; x 12 ; x 13 ; x 21 ; x 22 ; x 23 0 A matriz deste problema é: 2 A = 6 4 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 Repare-se que é uma matriz cujos elementos ou são 0 ou são 1 e que há exactamente dois elementos iguais a 1 em cada coluna. Não é di cil generalizar e concluir que a matriz de qualquer problema de transportes tem estas duas propriedades seja qual for a sua dimensão. P Teorema 2.1.1 O problema de transportes tem solução desde que m P a i = n b j = d Demonstração. (por construção) Basta fazer x ij = a ib j d, para i = 1; :::; m e j = 1; :::; n. É óbvio que x ij 0, para mp P i = 1; :::; m e j = 1; :::; n. Por outro lado, x ij = m a i b j d = b j mp a i = b j d d d = b j, P para j = 1; :::; n e n P x ij = n a i b j d = a i d i=1 np 3 7 5 i=1 i=1 i=1 a i = a i d d = a i para i = 1; :::; m. 37
Propriedades da matriz A Característica de A: Somando as m primeiras linhas obtém-se m P mp a i. Somando as n linhas seguintes obtém-se i=1 n P i=1 i=1 np x ij = mp P x ij = n b j. Como se está a P considerar que m P a i = n b j, então as duas somas são iguais. Conclui-se assim que i=1 as linhas da matriz A são linearmente dependentes. A dimensão da matriz A é (m + n) (mn). Desde que m 2 e n 2, é claro que mn m + n. Então car(a) m + n 1. Retirando a última linha à matriz A, obtém-se uma matriz A 0 que pode ser posta na forma triangular superior mediante uma troca de colunas. No exemplo dado antes, as colunas de A devem ser ordenadas do seguinte modo: 2 3 A 0 = 1 0 1 1 0 1 0 0 6 4 0 0 1 0 0 0 0 1 {z } B 0 0 1 1 1 0 7 5 0 1 {z } N o que corresponde à ordenação x 13 ; x 23 ; x 11 ; x 12 ; x 21 ; x 22. Note-se que det B = 1 6= 0, sendo portanto car(a) = 2 + 3 1 = 4 2.2 Propriedades das matrizes dos problemas de transportes De nição 2.2.1 Diz-se que uma matriz é totalmente unimodular se e só se qualquer uma das suas submatrizes quadradas tem determinante nulo ou 1. Teorema 2.2.1 A matriz do problema de transportes é totalmente unimodular. Demonstração. (por indução) Como todos os elementos da matriz do problema de transportes são iguais a 0 ou 1, então o determinante de qualquer submatriz 1 1 ou é nulo ou é igual a 1. Por outro lado, como car(a) = m + n 1, qualquer submatriz de dimensão 38
(m+n)(m+n) tem determinante nulo. Seja A k uma submatriz de A de dimensão k com 1 < k < m + n. Já se viu que determinante de A 1 é igual a 0 ou a 1. Suponha-se, como hipótese de indução, que qualquer submatriz de dimensão k 1 tem determinante nulo ou 1. A matriz A k tem que obedecer a uma das seguintes condições: i) Existe pelo menos uma coluna de zeros; ii) Existe pelo menos uma coluna com um único elemento igual a 1 e os outros todos nulos iii) Todas as colunas têm 2 elementos iguais a 1 e os outros todos nulos. No primeiro caso o determinante da matriz é, obviamente, nulo. No segundo caso, o determinante pode ser calculado por aplicação do desenvolvimento de Laplace a essa coluna, obtendo-se det A k 1, que, por hipótese de indução, ou é nulo ou é 1. No terceiro caso, em cada coluna, um dos elementos iguais a 1 corresponde a uma origem e o outro a um destino. Como todas as colunas têm exactamente 2 elementos iguais a 1, somando todas as linhas correspondentes às origens e somando todas as linhas correspondentes aos destinos vai-se obter exactamente a mesma coisa, o que mostra que as linhas são dependentes e, portanto, o determinante da matriz é nulo. Teorema 2.2.2 Qualquer base B do espaço das colunas da matriz A pode ser transformada numa matriz triangular por reordenação de linhas e colunas. Demonstração. Seja B uma matriz (m+n 1)(m+n 1), tal que det B 6= 0. Como foi visto na demonstração do teorema anterior, em B tem que existir pelo menos uma coluna com um único elemento igual a 1 e os outros todos nulos. Reordenando as linhas e as colunas de B de modo a que esse 1 ocupe a primeira linha e 1 primeira coluna obtém-se: q T 0 : A matriz B B m+n 2 também tem que ser m+n 2 não singular e, portanto, tem que ter pelo menos uma coluna com um único elemento igual a 1 e os outros iguais a zero. Reordena-se agora as linhas e colunas de modo a que esse 1 vá 2 ocupar a posição da3 primeira linha e primeira coluna da matriz B m+n 2, 1 q 1 q2 T obtendo-se4 0 1 p 5 com B m+n 3 não singular. Repetindo o processo 0 0 B m+n 3 acaba-se por obter uma matriz triangular superior com os elementos diagonais todos iguais a 1. Quer isto dizer que para resolver o sistema Bx B = b (equivalente a calcular x B = B 1 b) basta proceder por substituição para trás. 39
No exemplo anterior: 2 3 2 1 0 1 1 0 1 0 0 6 6 4 0 0 1 0 7 4 5 0 0 0 1 {z } x 13 x 23 x 11 x 12 3 7 5 = 2 6 4 30 20 15 10 3 7 5 =) 8 >< >: x 12 = 10 x 11 = 15 x 23 = 20 x 13 = 30 15 10 = 5 É fácil concluir, devido ao facto da matriz B só ter elementos iguais a 0 ou 1 e poder ser posta na forma triangular, que, desde que os valores de a i e b j sejam todos inteiros, então as soluções básicas são todas inteiras. Vejamos qual o aspecto das colunas do quadro do simplex em cada iteração. y ij = B 1 a ij ou By ij = a ij Se se resolver este sistema pela regra de Cramer teremos (designamos por y ijk a componente k do vector y ij ): y ijk = det B k det B, em que B k é a matriz que se obtém de B substituindo a coluna k pela coluna a ij. Como det B = 1 e det B k = 0 ou 1, então y ijk = 0 ou 1. Vê-se assim que qualquer quadro do simplex só tem elementos iguais a 0 ou a 1: Se pensarmos que o vector y ij fornece as coordenadas do vector a ij na base B, pode-se concluir que qualquer vector a ij pode ser obtido somando e subtraindo os vectores coluna de B. Comecemos por constatar que a ij = e i + e m+j, em que e i representa um vector da base canónica que tem a componente de ordem i igual a 1. Então, para que todos os vectores não básicos possam ser escritos somando e subtraindo vectores da base, é necessário que o conjunto de vectores que estão na base tenham certas características. Repare-se que, por exemplo: a ij = a ik a lk + a ls a us + a uj = (e i + e m+k ) (e l + e m+k ) + (e l + e m+s ) (e u + e m+s ) + (e u + e m+j ) = e i + e m+j Se representarmos as origens e destinos num quadro, em que cada linha representa uma origem e cada coluna um destino, a sucessão de vectores descrita corresponde a um circuito fechado nas células do quadro, em que representa um coe ciente igual a 1 e um coe ciente igual a 1: 40
j k s u a uj a us. l a lk a ls. i a ij a ik É fácil concluir que as colunas básicas não podem corresponder a um circuito fechado de células visto que, se assim fosse, seria possível escrever uma delas como combinação linear das outras e não seria uma base. Por outro lado, também se conclui facilmente que é necessário que as colunas da base correspondam a pelo menos uma célula em cada linha e em cada coluna pois só assim há garantia de se poder escrever qualquer célula não básica como combinação linear das células básicas. Com base nestas observações, aparece naturalmente um método que permite encontrar uma solução básica admissível inicial sem ter que recorrer ao método das duas fases. 2.3 Obtenção da solução básica admissível inicial Vamos descrever esse processo com recurso a um exemplo: Uma empresa siderúrgica produz, anualmente, 4 200 000 toneladas de aço, em três localidades (A 1 ; A 2 ; A 3 ) que deve ser entregue em quatro outras localidades (B 1 ; B 2 ; B 3 ; B 4 ). As quantidades produzidas e requeridas são indicadas a seguir. 1 800 000 ton em A1 600 000 ton em B1 900 000 ton em A2 1 500 000 ton em B2 1 500 000 ton em A3 1 200 000 ton em B3 900 000 ton em B4 Os custos de transporte, por tonelada, da origem i para o destino j, são dados no quadro que se segue. B 1 B 2 B 3 B 4 A 1 20 14 26 30 A 2 22 24 40 42 A 3 32 36 52 56 A este quadro costuma dar-se o nome de matriz de custos. 41
Os dados do problema podem ser organizados no seguinte quadro: B 1 B 2 B 3 B 4 A 1 20 14 26 30 1 800 000 A 2 22 24 40 42 900 000 A 3 32 36 52 56 1 500 000 600 000 1 500 000 1 200 000 900 000 Comecemos por observar que 1 800 000+900 000+1 500 000 = 600 000+1 500 000+ 1 200 000 + 900 000 = 4 200 000. Além disso, como todas estas quantidades são múltiplas de 10 5, é possível simpli car os cálculos dividindo tudo por esse valor. Para obter uma solução básica inicial pode-se começar por atribuir o máximo valor possível à variável x 11 (canto superior esquerdo ou canto noroeste). Com este procedimento há uma origem que ca vazia ou um destino que ca cheio. Retira-se a linha ou a coluna correspondente do quadro e repete-se o procedimento. Repare-se que, como de cada vez se retira uma linha ou coluna, no nal teremos m + n 1 variáveis com valor positivo, o que corresponde ao número necessário para ter uma solução básica. Teremos, também, pelo menos uma variável básica em cada linha e em cada coluna. B 1 B 2 B 3 B 4 A 1 6 20 12 14 26 30 18 A 2 22 3 24 6 40 42 9 A 3 32 36 6 52 9 56 15 6 15 12 9 Obteve-se assim uma solução inicial com 4 + 3 1 = 6 variáveis básicas, à qual corresponde o valor 141610 5 = (206+1412+243+406+526+569)10 5 para a função objectivo. É agora necessário encontrar um processo de saber se a solução é óptima ou não e, caso não seja, qual a variável a sair da base e qual a variável a entrar na base. 42
2.4 Forma especial do método simplex para o problema de transportes Sendo o problema de transportes da forma Min s.a c T x Ax = b x 0 o seu dual é da forma Max s.a b T y A T y c Como na matriz A só há 2 elementos não nulos em cada coluna, então na matriz A T só há dois elementos não nulos em cada linha. Assim, a restrição do dual correspondente à variável x ij do primal é: y i + y m+j c ij Para simpli car a notação, considere-se o vector y com o seguinte aspecto: u y = ; v em que as variáveis u correspondem às restrições nas origens e as variáveis v às restrições nos destinos. O dual pode então escrever-se: Max s.a P w = m P a i u i + n b j v j i=1 u i + v j c ij i = 1; ; m; j = 1; ; n Da teoria da dualidade, sabe-se que as restrições respeitantes às variáveis básicas do primal devem ser satisfeitas em forma de igualdade (pois as variáveis de afastamento têm que ser nulas). Escrevendo essas igualdades obtém-se um sistema de m + n 1 equações com m + n incógnitas. O sistema é indeterminado, consequência do facto de o problema primal ter uma equação redundante, e a solução pode ser escrita à custa de uma das variáveis. Pode-se decidir atribuir a essa variável o valor nulo e assim obter uma solução para o sistema, conseguindo-se, assim, a solução 43
do dual correspondente. Se esta solução for admissível, será óptima. Deve-se então, seguidamente calcular os valores das variáveis de afastamento do dual, ou seja c ij = c ij (u i + v j ). Estes valores são, também, os custos actualizados do primal. Assim, se estes custos forem não negativos as soluções serão óptimas para o primal e para o dual. Vejamos o que se passa neste exemplo. O sistema de igualdades do dual correspondente às variáveis básicas do primal é: 8 u 1 + v 1 = 20 u 1 + v 2 = 14 >< u 2 + v 2 = 24 u 2 + v 3 = 40 u >: 3 + v 3 = 52 u 3 + v 4 = 56 Fazendo v 4 = 0, virá u 3 = 56 e por substituição para trás obtém-se, sucessivamente, v 3 = 4; u 2 = 44; v 2 = 20; u 1 = 34 e v 1 = 14. Agora, calculam-se no dual os valores das variáveis de afastamento das restrições correspondentes às variáveis não básicas do primal: c 13 = c 13 u 1 v 3 = 26 34 ( 4) = 4 c 14 = c 14 u 1 v 4 = 30 34 0 = 4 c 21 = c 21 u 2 v 1 = 22 44 ( 14) = 8 c 24 = c 24 u 2 v 4 = 42 44 0 = 2 c 31 = c 31 u 3 v 1 = 32 56 ( 14) = 10 c 32 = c 32 u 3 v 2 = 36 56 ( 20) = 0 Observa-se assim que a variável x 31, à qual corresponde um custo mais negativo, deve ser tornada básica. Para encontrar a variável que vai sair da base, segue-se um processo semelhante ao usado no método simplex, isto é, será a primeira a anular-se quando x 31 é incrementado. Para simpli car, atribui-se a x 31 o valor, adicionando e subtraindo às restantes variáveis básicas de modo que a soma em cada linha e coluna não se altere. Assim virá: v 1 = 14 v 2 = 20 v 3 = 4 v 4 = 0 u 1 = 34 6 20 12 + 14 26 4 30 4 18 u 2 = 44 22 8 3 24 6 + 40 42 2 9 u 3 = 56 32 10 36 0 6 52 9 56 15 6 15 12 9 44
Conclui-se, assim, que o maior valor que pode tomar é 3, isto é a variável x 31 vai-se tornar básica com o valor 3 por troca com a variável x 22 que se anula. Obtém-se assim a nova solução admissível: 3 20 15 14 26 30 22 24 9 40 42 3 32 36 3 52 9 56 à qual corresponde o valor 1386 10 5 para a função objectivo. Todo o processo se repetirá até que a solução óptima seja encontrada, o que acontece quando todos os custos actualizados forem positivos, ou seja, quando o dual também for admissível. 2.5 Soluções degeneradas Um aspecto a referir é a possibilidade de ocorrência de soluções degeneradas, nas quais o número de variáveis não nulas é inferior a m + n 1. Considere-se o seguinte exemplo: B 1 B 2 B 3 A 1 2 1 0:5 2 A 2 1 0:5 2 2.5 1 1 2.5 Usando a regra do canto noroeste para obter a solução inicial vem: B 1 B 2 B 3 A 1 1 2 1 1 0:5 2 A 2 1 0:5 2.5 2 2.5 1 1 2.5 Ora, deveriamos ter 2 + 3 1 variáveis básicas e só obtivemos 3, isto signi ca que a solução é degenerada, isto é, há uma variável básica que é nula. Utiliza-se aqui o chamado método das perturbações que consiste em acrescentar à disponibilidade de uma ou mais origens um valor in nitesimal e usar essa perturbação para criar variáveis adicionais com valor igual a até perfazer m + n 1 variáveis básicas. No exemplo referido virá: B 1 B 2 B 3 A 1 1 2 1 1 0:5 2+ A 2 1 0:5 2.5 2 2.5 1 1 2.5+ 45
Agora já temos 4 variáveis básicas e o algoritmo de transportes pode ser usado normalmente. Assim que obtivermos uma solução com 4 variáveis básicas positivas pode-se fazer = 0. Vejamos o que acontece neste exemplo: v 1 = 2 v 2 = 1 v 3 = 0:5 u 1 = 0 1-2 1 1 + 0:5 2+ u 2 = 1:5 1 2:5 0:5 2 2.5-2 2.5 1 1 2.5+ Vemos que deve ser = 1 e virá o novo quadro: 2 1 1 1 + 0:5 2+ 1 1 0:5 1.5 2 2.5 1 1 2.5+ Como obtivemos uma solução não degenerada, pode-se neste momento fazer = 0 e continuar o processo normalmente: 2 1 1 1 0:5 2 1 1 0:5 1.5 2 2.5 1 1 2.5 Em tudo o que foi feito partiu-se do princípio de que todas as rotas são possíveis, mas pode acontecer que haja trajectos impossíveis entre alguma ou algumas das origens e algum ou alguns dos destinos. Para resolver esse problema deve-se considerar os custos correspondentes aos trajectos impossíveis iguais a +1. 2.6 Desequilíbrio entre oferta e procura É também importante resolver o problema quando a oferta não é igual à procura. 1 o caso oferta superior à procura: Nesta caso cria-se um destino arti cial n + 1, de ne-se b n+1 = m P a i i=1 np b j c in+1 = 0, i = 1; :::; m. Quando se obtiver a solução do novo problema as variáveis x in+1 que tiverem valor positivo corresponderão a quantidades de mercadoria que não chegam a sair da origem i. 46 e
2 o caso procura superior à oferta: Nesta caso cria-se uma origem arti cial m + 1, de ne-se a m+1 = n P b j mp a i i=1 e c m+1j = 0, j = 1; :::; n Quando se obtiver a solução do novo problema as variáveis x m+1j que tiverem valor positivo corresponderão a quantidades de mercadoria que não são entregues no destino j, que assim não verá as suas necessidades totalmente satisfeitas. De notar que os custos correspondentes às origens e destinos arti ciais podem não ser todos nulos, dependendo de haver custos de armazenagem ou multas associadas ao não cumprimento de todas as entregas envolvidos no processo. 47
Capítulo 3 Programação Linear Inteira Considere-se o seguinte programa linear inteiro (PLI): Max s.a P z = n c j x j P aij x j = b i ; i = 1; ; m x j 0 x j inteiro j = 1; ; n Para resolver este problema começa-se por considerar o problema linear que se obtém ignorando a última restrição. A este novo problema chama-se programa relaxado (PR). A resolução do PLI passa pela resolução de vários programas lineares relaxados. O método mais conhecido é o Branch-and-Bound também designado nalguns livros como método de pesquisa em árvore. 3.1 Algoritmo Branch-and-Bound Passo 1 Resolver o Programa Relaxado (PR) associado. Um dos 3 casos seguintes acontece: 1. O PR é impossível =) O PLI é impossível 2. A solução óptima do PR é inteira =) A solução óptima do PLI é a do PR 3. A solução óptima do PR não é inteira. Faz z = z pr e z = 1 A solução óptima do PLI, z, é um valor do intervalo ]z; z[. Vai para o passo 2 48
Passo 2 Seja x k uma qualquer variável cujo valor é não inteiro. Seja x k o seu valor. Procede-se à rami cação em dois novos problemas. Num deles às restrições anteriores acrescenta-se a restrição x k [x k ] e no outro acrescenta-se a restrição xk [x k ] + 1. Acrescentam-se estes problemas à lista com todos os problemas a analisar e passa-se ao passo 3. Passo 3 Retirar o último problema que se acrescentou à lista e resolver o PR associado. Um dos 3 casos acontece: 1. O PR é impossível. Corta-se esse ramo e recomeça o passo 3. 2. O PR tem solução inteira. Actualiza-se os valores de z e z e repete-se o passo 3. 3. O PR tem solução não inteira. Se z pr < z volta-se ao ínicio do passo 3. Se z pr z volta-se ao passo 2. Quando não houver mais problemas para analisar a solução do PLI é a melhor solução inteira encontrada cujo valor da função objectivo é z. Como se vê, o que o método faz é pesquisar a região admissível por subregiões, eliminando, em cada passo, zonas onde é garantido que ou não há pontos com coordenadas inteiras ou é garantido que a função objectivo não vai ter um valor melhor do que alguma solução inteira já conhecida. 3.1.1 Resolução de um problema concreto Exemplo 3.1.1 Encontrar a(s) solução(ões) óptima(s) inteira(s) de Max z = 5x 1 + 8x 2 s.a x 1 + x 2 6 5x 1 + 9x 2 45 x 1 ; x 2 0 Começa-se por resolver o PR associado usando o método simplex. A sua solução é x 1 = 9 4 e x 2 = 15 4 obtendo-se para z pr o valor 165. Neste momento sabe-se que o 4 valor óptimo está compreendido entre 1 e 165 4 : Como são ambas as variáveis não inteiras escolhe-se uma delas para rami car. Seja por exemplo x 2. Obtêm-se assim dois novos problemas num deles acrescentando 49
a restrição x 2 3 e no outro a restrição x 2 4. Resolvendo o primeiro obtém-se uma solução inteira: x 1 = x 2 = 3 e z = 39. Este será o novo limite inferior para a função objectivo: z 2 [39; 165 4 [. Resolvendo o segundo problema obtém-se x 1 = 9 5 ; x 2 = 4 e z = 41. Como este valor de z é maior que o limite inferior deve-se continuar a rami car. Obtêm-se dois novos problemas juntando às restrições anteriores, para um deles a restrição x 1 1 e para o outro a restrição x 1 2. Resolvendo o primeiro obtém-se a solução x 1 = 1, x 2 = 40 9 e z = 365. O segundo problema é impossível. 9 Como o valor de z, 365, é maior que o actual limite inferior deve-se continuar a 9 rami car. Obtêm-se dois novos problemas adicionando a um a restrição x 2 4 e ao outro a restrição x 2 5. Obtem-se para o primeiro a solução x 1 = 1, x 2 = 4 e z = 37. Como 37 < 39 este ramo é abandonado. Para o segundo problema obtém-se a solução x 1 = 0, x 2 = 5 e z = 40. O valor mínimo de z passa a ser 40. Como não há mais ramos para analisar esta é a solução do PLI. Apresenta-se seguidamente a árvore binária representativa do algoritmo executado: 50
No caso de haver variáveis inteiras e variáveis reais, o algoritmo continua a ser aplicável, desde que só se considerem para rami cação da árvore as variáveis que só podem assumir valores inteiros. Para uma melhor visualização do funcionamento do algoritmo, apresentam-se em seguida as regiões admissíveis de cada um dos problemas resolvidos em cada vértice da árvore. 51
S 0 = f(x 1 ; x 2 ) 2 R 2 : x 1 + x 2 6^5x 1 + 9x 2 45^x 1 0^x 2 0g S 11 = f(x 1 ; x 2 ) 2 R 2 : x 1 + x 2 6^5x 1 + 9x 2 45^x 1 0^x 2 0^x 2 3g 52
S 12 = f(x 1 ; x 2 ) 2 R 2 : x 1 + x 2 6^5x 1 + 9x 2 45^x 1 0^x 2 0^x 2 4g S 21 = f(x 1 ; x 2 ) 2 R 2 : x 1 + x 2 6^5x 1 + 9x 2 45^x 1 0^x 2 0^x 2 4^x 1 1g 53
S 22 = f(x 1 ; x 2 ) 2 R 2 : x 1 + x 2 6^5x 1 + 9x 2 45^x 1 0^x 2 0^x 2 4^x 1 2g S 22 = S 31 = f(x 1 ; x 2 ) 2 R 2 : x 1 + x 2 6^5x 1 + 9x 2 45^ ^x 1 0^x 2 0^x 2 4^x 1 1^x 2 4g 54
S 32 = f(x 1 ; x 2 ) 2 R 2 : x 1 + x 2 6^5x 1 + 9x 2 45^ ^x 1 0^x 2 0^x 2 4^x 1 1^x 2 5g Na resolução numérica de problemas, utilizando o algoritmo de branch-andbound, a solução de cada subproblema pode ser feita partindo do quadro obtido na solução do anterior acrescentando uma linha e coluna ao quadro do simplex e aplicando seguidamente o algoritmo simplex dual. No exemplo anterior, a solução do problema no nó inicial conduz ao quadro: x 1 x 2 x 3 x 4 x 1 9=4 1 0 9=4 1=4 x 2 15=4 0 1 5=4 1=4 z + 165=4 0 0 5=4 3=4 Acrescentar a restrição x 2 3 é equivalente a acrescentar a equação x 2 + x 5 = 3, com x 5 0. Ou seja deve-se acrescentar uma linha e uma coluna ao quadro: x 1 x 2 x 3 x 4 x 5 x 1 9=4 1 0 9=4 1=4 0 x 2 15=4 0 1 5=4 1=4 0 x 5 3 0 1 0 0 1 z + 165=4 0 0 5=4 3=4 0 Mas, deste modo, deixamos de ter a matriz identidade nas colunas da base. Para a repor basta fazer as operações adequadas com as linhas do quadro: x 1 x 2 x 3 x 4 x 5 x 1 9=4 1 0 9=4 1=4 0 x 2 15=4 0 1 5=4 1=4 0 x 5 3=4 0 0 5=4 1=4 1 z + 165=4 0 0 5=4 3=4 0 55
Pode-se agora aplicar o método simplex dual para acabar a resolução: x 1 x 2 x 3 x 4 x 5 x 1 3 1 0 1 0 1 x 2 3 0 1 0 0 1 x 4 3 0 0 5 1 4 z + 39 0 0 5 0 3 E do mesmo modo se procederia para os outros subproblemas. 56
Capítulo 4 Optimização sem restrições 4.1 Funções reais de variável real Teorema 4.1.1 Seja a um ponto estacionário da função f : I R! R, interior a I, e m > 1 a mais baixa ordem das derivadas de f que não se anula em a. Então: 1. Se m é par e f (m) (a) > 0, f(a) é um mínimo local. 2. Se m é par e f (m) (a) < 0, f(a) é um máximo local. 3. Se m é impar e f (m) (a) > 0, f é crescente em a. 4. Se m é impar e f (m) (a) < 0, f é decrescente em a. 4.2 Funções reais de variável vectorial Teorema 4.2.1 Seja a um ponto estacionário da função f : D R n! R, interior a D, e m > 1 a mais baixa ordem das derivadas de f que não se anula em a. Isto é, para k < m todas as derivadas parciais de ordem k são nulas. Então: Se m é par e f (m) (a) é de nida positiva, f(a) é um mínimo local. Se m é par e f (m) (a) é de nida negativa, f(a) é um máximo local. Se m é impar não há extremo. Se m é par e f (m) (a) é inde nida não há extremo. De nição 4.2.1 Seja M 2 R nn. M é de nida positiva sse x T Mx > 0, 8x 6= 0. M é de nida negativa sse x T Mx < 0, 8x 6= 0: 57
De nição 4.2.2 Seja M 2 R nn. M é semi-de nida positiva sse x T Mx 0, 8x 2 R n. M é semi-de nida negativa sse x T Mx 0, 8x 2 R n : De nição 4.2.3 Seja M 2 R nn. M é inde nida se não for nem semi-de nida positiva nem semi-de nida negativa. 4.3 Gradiente, Hessiana e Jacobiano Seja f : R n! R, f(x) = f(x 1 ; x 2 ; ; x n ) Ao vector das derivadas parciais de primeira ordem de f chama-se gradiente. @f(x) rf(x) = @x 1 @f(x) @x 2 @f(x) @x n T À matriz das segundas derivadas de f chama-se matriz Hessiana. 2 3 @ 2 f(x) @ 2 f(x) @ 2 f(x) @x 2 1 @x 1 @x 2 @x 1 @x n @ 2 f(x) @ 2 f(x) @ 2 f(x) r 2 f(x) = @x 2 @x 1 @x 2 2 @x 2 @x n 6.... 7 4 @ 2 f(x) @ 2 f(x) @ 2 f(x) 5 @x n @x 1 @x n @x 2 @x 2 n Se as primeiras e segundas derivadas da função forem contínuas esta matriz é simétrica. (Este é um conhecido teorema de Análise) 2 3 f 1 (x 1 ; x 2 ; ; x n ) Seja f : R n! R m, f(x 1 ; x 2 ; ; x n ) = 6 f 2 (x 1 ; x 2 ; ; x n ) 7 4 5 f m (x 1 ; x 2 ; ; x n ) O Jacobiano de f é uma função matricial em que a coluna j é o gradiente da função f j. Exemplo 4.3.1 Seja f(x 1 ; x 2 ) = 2x 4 1 + 3x 2 1x 2 + 2x 1 x 3 2 + 4x 2 2 8x 3 O gradiente desta função é rf(x) = 1 + 6x 1 x 2 + 2x 3 2 3x 2 1 + 6x 1 x 2 2 + 8x 2 24x A matriz Hessiana é r 2 2 f(x) = 1 + 6x 2 6x 1 + 6x 2 2 6x 1 + 6x 2 2 12x 1 x 2 + 8 58
2 No ponto x 0 = o vector gradiente e a matriz Hessiana são 3 46 114 42 rf(x 0 ) = e r 2 f(x 72 0 ) = 42 64 Se a matriz Hessiana de uma função é de nida positiva então a função é convexa e se é de nida negativa é côncava. Exemplo 4.3.2 Seja f(x 1 ; x 2 ) = 4 2 J f (x) = 4 cos x 1 sin x 2 3e 3x 1+x 2 2 2x 2 e 3x 1+x 2 2 12x 2 1 + 7x 2 2 14x 1 x 2 No ponto x 0 = 1 2 2 3 5 sin x 1 + cos x 2 e 3x 1+x 2 2 4x 3 1 + 7x 1 x 2 2 T a matriz Jacobiana é J f (x 0 ) = 3 5. O Jacobiano desta função é cos 1 3e 7 40 sin 2 4e 7 28 4.4 Gradiente e Hessiana de uma função quadrática Uma função f diz-se quadrática se é da forma f(x) = 1 2 xt Qx + b T x, com x = x 1 x 2 x n T, com Q uma matriz quadrada de dimensão n e b um vector com n componentes. Sem perda de generalidade pode-se supor que a matriz Q é simétrica. Com efeito, como x T Qx = x T Qx T = x T Q T x então, de nindo a matriz M = 1 2 Q + QT, teremos 1 2 xt Mx = 1 4 xt Q + Q T x = 1 4 xt Qx + x T Q T x = 1 2 xt Qx e, então f(x) = 1 2 xt Mx + b T x e M é uma matriz simétrica. Neste caso as fórmulas para o gradiente e a Hessiana são particularmente simples. A função f pode ser escrita na forma: f(x) = 1 2 nx nx nx Q jk x j x k + b j x j k=1 Para determinar @f @x i é necessário isolar as parcelas desta expressão que contêm a 59
variável x i e que são 1 2 Q iix 2 i + 1 2 @f @x i = Q ii x i + 1 2 np Q ji x j + 1 2 j6=i np Q ji x j x i + 1 2 j6=i np Q ik x i x k + b i x i. Temos então k=1 k6=i np Q ki x k + b i. Como a matriz é simétrica Q ki = Q ik, k=1 k6=i @f P vindo, nalmente, = n Q ji x j + b i = (Qx + b) @x i. Então o gradiente da função i quadrática com matriz simétrica é rf(x) = Qx + b. De um modo análogo se pode mostrar que a hessiana é constante e igual a Q. 4.5 Derivada de um produto de funções Sejam f : R n! R, f(x) = f(x 1 ; x 2 ; :::; x n ) e g : R n! R, g(x) = g(x 1 ; x 2 ; :::; x n ). Pode-se de nir uma função h : R n! R, h(x) = f(x)g(x). O gradiente de h pode-se obter facilmente de rh(x) = rf(x)g(x) + rg(x)f(x) e a Hessiana de r 2 h(x) = r 2 f(x)g(x) + r 2 g(x)f(x) + rg(x)rf(x) T + rg(x)rf(x) T Exemplo 4.5.1 h(x) = (a T x)(b T x), com a, b e x vectores com n componentes. rh(x) = a((b T x) + b(a T x) r 2 h(x) = ab T + ba T 4.6 Derivação de função composta (regra da cadeia) Seja f : R n! R, f(x) = f(x 1 ; x 2 ; :::; x n ) e cada x i é uma função de m variáveis t 1 ; :::; t m. Pode-se então de nir a função h : R m! R, h(t) = f(x1(t); x2(t); :::; xn(t)), sendo o seu gradiente dado por rh(t) = rx(t)rf(x(t)): Exemplo 4.6.1 f(x) = (x 2 1 x 1 x 2 ; x 4 1 + 2x 2 2), com x 1 = t 1 + 2t 2 3t 3 e x 2 = t 2 1 + t 2. 2 Então rx(t) = 4 1 2t 1 2 1 3 0 3 5 e 60
2x1 4x rf(x(t)) = 3 1 x 1 4x 2 e, nalmente: rh(t) = 4 2 (t1 + 2t = 2 3t 3 ) 4 (t 1 + 2t 2 3t 3 ) 3 3 (t 1 + 2t 2 3t 3 ) 4 (t 2 1 + t 2 ) 1 2t 1 2 1 5 2 (t1 + 2t 2 3t 3 ) 4 (t 1 + 2t 2 3t 3 ) 3 (t 3 0 1 + 2t 2 3t 3 ) 4 (t 2 1 + t 2 ). A regra da cadeia pode também ser utilizada para calcular segundas derivadas. 61
Capítulo 5 Programação não Linear Na sua forma mais geral um problema de programação não linear pode ser descrito como: Determinar x = (x 1; x 2; :::; x n) tal que Maximize f(x) sujeito a g i (x) b i ; i = 1; :::; m x 0 em que f e g i são funções de nidas em R n. Para simpli cação, vamos supor que estas funções são diferenciáveis em todo o seu domínio. Não há qualquer algoritmo geral que resolva este tipo de problemas. Contudo, há algumas subclasses de problemas deste tipo que podem ser resolvidos de forma mais ou menos e ciente por algoritmos surgidos recentemente. 5.1 (alguns) Tipos de Problemas não Lineares 1. Optimização sem restrições São problemas do tipo Maximize sujeito a f(x) x 2 R n Neste caso, é condição necessária de existência de óptimo em x que rf(x ) = 0. Se a função for côncava esta condição é também su ciente. Nesse caso o problema reduz-se à resolução de um sistema de n equações não lineares. Este problema também não é de fácil resolução: na maior parte das vezes o que se consegue encontrar é uma sucessão eventualmente convergente para x. 62
Quando uma variável x j tem 8 uma restrição de sinal, a condição necessária @f >< 0, se x j = 0 @x anterior transforma-se em j @f. >: = 0, se x j > 0 @x j 2. Optimização com restrições lineares As funções g i são lineares mas a função f é não linear. Este problema é relativamente simples de resolver. Existem inúmeros algoritmos, baseados no método simplex, para o resolver. Um dos casos particulares deste tipo de problemas é aquele em que a função f é quadrática. 3. Programação quadrática É um problema em que as restrições são lineares e a função f é da forma f(x) = x T Qx + c T x em que Q é uma matriz n n e b é um vector com n componentes. Muitos algoritmos foram desenvolvidos para este caso, que funcionam muito bem se a função f for côncava. Alguns deles são extensões directas do método simplex. 4. Programação com variáveis separáveis É um caso particular em que a função f é côncava, as funções g i são convexas e todas as funções envolvidas são de variáveis separáveis. Diz-se que uma função é de variáveis separáveis se for possível escrevê-la como a soma de várias parcelas tais que cada uma dessas parcelas apenas contém uma única variável. 5. Programação Fraccionária A função objectivo é da forma f(x) = f 1(x) :O caso mais simples é o da f 2 (x) programação linear fraccionária, quando f é da forma f(x) = ct x + c 0 e em d T x + d 0 que as restrições são lineares da forma Ax b e x 0. Este problema pode x ser transformado num problema de programação linear fazendo: y = d T x + d 0 1 e t =. Deste modo é x = y. Fazendo as substituições adequadas d T x + d 0 t 63
obtéms-e o programa linear Maximizar c T y + c 0 t sujeito a Ay bt 0 d T y + d 0 t = 1 y 0; t 0 (Note-se que (d T x + do)t = 1 e x = y t, donde resulta dt y + d 0 t = 1) 5.2 As condições de Karush-Kuhn-Tucher (KKT) para optimização com restrições Como reconhecer se uma solução é óptima num problema não linear? A seguinte tabela apresenta um resumo das principais condições necessárias para a optimalidade: Problema sem restrições uma variável sem restrições n variáveis Restrições de não negatividade Problema com restrições gerais Condições necessárias de optimalidade f 0 (x) = 0 @f (x) = 0; j = 1; ; n @x j @f (x) 0; j = 1; ; n @x j @f x j (x) = 0; j = 1; ; n @x j KKT também su cientes quando f é côncava f é côncava f é côncava f é côncava g i é convexa, i = 1; ; n Teorema 5.2.1 Sejam f e g i ; i = 1; :::; m funções contínuas e diferenciáveis. O ponto x = (x 1; x 2; ; x n) pode ser uma solução óptima para o problema de optimização não linear Maximizar f(x), com x 2 K e K = fx 2 R n : g i (x) b i e x 0g, se existirem m números reais 1 ; 2 ; :::; m que satisfaçam as seguintes 64
condições: x j @f mp (x @g i ) @x i (x ) 0; j = 1; ; n j i=1 @x j @f mp (x @g i ) @x i (x ) = 0; j = 1; ; n j i=1 @x j g i (x ) b i 0; i = 1; ; m i (g i (x ) b i ) = 0; i = 1; ; m x j 0; j = 1; ; n i 0; i = 1; ; m Exemplo 5.2.1 Maximizar f(x) = ln(x 1 + 1) + x 2 sujeito a 2x 1 + x 2 3 x 1 0; x 2 0 Aplicando o teorema a este exemplo, teremos o seguinte sistema: 8 1 2 x 1 + 1 1 0 1 1 0 1 >< x 1 2 x 1 + 1 1 = 0 x 2 (1 1 ) = 0 2x 1 + x 2 3 1 (2x 1 + x 2 3) = 0 >: x 1 0; x 2 0 1 0 É fácil constatar que a função f é côncava e que a função g é convexa, pelo que as soluções deste sistema são pontos óptimos. O problema agora é encontrar essas soluções. Após uma análise cuidadosa constata-se que x = (0; 3) é a única solução. 5.2.1 Programação Quadrática A aplicação das condições KKT ao problema Maximizar sujeito a f(x) = x T Qx + c T x Ax b x 0 65
conduz ao seguinte sistema de equações: Qx + A T u y = c Ax + v = b x 0; y 0; u 0; v 0 x T y + u T v = 0 66