Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz...

26
Matemática Industrial - RC/UFG Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26

Transcript of Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz...

Page 1: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Matemática Industrial - RC/UFG

Programação Linear - Parte 3

Prof. Thiago Alves de Queiroz

1/2016

Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26

Page 2: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

O Método Simplex

Encontre o vértice ótimo pesquisando um subconjunto dos Kvértices de S;A partir de uma solução básica factível, devemos responder:(i) Essa solução é ótima?(ii) Não sendo ótima, como determinar outra solução básicafactível melhor?Vejamos como responder estas duas perguntas adiante.

Thiago Queiroz (IMTec) Parte 3 1/2016 2 / 26

Page 3: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Pergunta (i)

Considere a solução básica factível:

x =[

xBxN

]com xB = B−1b ≥ 0 e xN = 0;

Seja a solução geral:

x =[

xBxN

]em que: xB = B−1b − B−1NxN ;

A função objetivo f(x) pode ser expressa considerando a partiçãobásica:

f(x) = cT x = [cTB cT

N ]

[xBxN

]= cT

B xB + cTNxN .

cTB : coeficientes das variáveis básicas na função objetivo;

cTN : coeficientes das variáveis não-básicas na função objetivo.

Essa solução básica factível é ótima?

Thiago Queiroz (IMTec) Parte 3 1/2016 3 / 26

Page 4: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Pergunta (i)

Restringindo x ao sistema Ax = b, temos:f(x) = cT

B (B−1b − B−1NxN) + cT

NxN =cT

B B−1b − cTB B−1NxN + cT

NxN ;O primeiro termo corresponde ao valor da função objetivo em x :f(x) = cT

B xB + cTN xN = cT

B (B−1b) + cT

N (0) = cTB (B

−1b);Definição 6. O vetor λ de ordem m × 1, dado por: λT = cT

B B−1 échamado de vetor multiplicador simplex;Também é referenciado como vetor de variáveis duais;Pode ser obtido pela resolução do sistema: BTλ = cB.

Thiago Queiroz (IMTec) Parte 3 1/2016 4 / 26

Page 5: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Pergunta (i)

Utilizando o vetor multiplicador simplex em f(x), segue:f(x) = f(x) - cT

B B−1NxN + cTNxN =

f(x) - λT NxN + cTNxN = f(x) + (cT

N − λT N)xN ;Observe que:cT

N − λT N = (cN1 , cN2 , . . . , cNn−m)− λT (aN1 ,aN2 , . . . ,aNn−m)= (cN1 − λT aN1 , cN2 − λT aN2 , . . . , cNn−m − λT aNn−m);Além disso: xN = (xN1 , xN2 , . . . , xNn−m);Resulta em:f(x) = f(x) + (cN1 − λT aN1)xN1 + (cN2 − λT aN2)xN2+. . .+ (cNn−m − λT aNn−m)xNn−m .

Thiago Queiroz (IMTec) Parte 3 1/2016 5 / 26

Page 6: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Pergunta (i)

Definição 7. Os coeficientes cNj = (cNj − λT aNj ) das variáveisnão-básicas na função objetivo são chamados de custos relativosou custos reduzidos.Então, podemos escrever:f(x) = f(x) + cN1xN1 + cN2xN2+ . . .+ cNn−mxNn−m ;Sabemos que xNj ≥ 0 (as variáveis são não-negativas). Se(cNj − λT aNj ) ≥ 0 para todo j, então f(x) ≥ f (x) para todo xN ≥ 0;Propriedade 3. (condição de otimalidade) Dada uma partiçãobásica A = [B N] em que a solução básica associada éxB = B−1b ≥ 0 e seja λT = cT

B B−1 o vetor multiplicador simplex.Se (cNj − λT aNj ) ≥ 0 para todo j, então a solução básica xB éótima;Ou seja, satisfeita a condição de otimalidade, então a soluçãobásica factível é ótima.

Thiago Queiroz (IMTec) Parte 3 1/2016 6 / 26

Page 7: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Pergunta (ii)

Como determinar uma solução básica factível melhor?Considere uma solução básica factível e suponha que a condiçãode otimalidade não foi satisfeita;Ou seja, existe um k tal que o custo relativo é negativo:(cNk − λT aNk ) < 0;Definição 8. Chamamos de estratégia simplex a perturbação deuma solução básica factível que consiste alterar as variáveisnão-básicas por:xNk = ε ≥ 0, (variável com custo relativo negativo)xNj = 0, para todo j, exceto j = k ;Ou seja, apenas a variável não-básica xNk deixa de ser nula.

Thiago Queiroz (IMTec) Parte 3 1/2016 7 / 26

Page 8: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Pergunta (ii)Nestas condições, a função objetivo passa a ser:f(x) = f(x) + cN10 + . . .+ cNk ε+ . . .+ cNn−m0 =f(x) + cNk ε < f(x);Note que a função objetivo decresce quando ε cresce, com a taxanegativa cNk .

Figura: Aplicando a estratégia simplex.

Thiago Queiroz (IMTec) Parte 3 1/2016 8 / 26

Page 9: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Pergunta (ii)

Note que quanto menor o valor de cNk , mais rápido a funçãoobjetivo decresce;Com isso, a escolha da variável não-básica a ser perturbada éaquela de menor custo relativo (regra de Dantzig);Além disso, seria interessante determinar o maior valor possívelpara ε que mantém a solução perturbada ainda factível;Note que ao mudar o valor das variáveis não-básicas pelaestratégia simplex, as variáveis básicas devem ser alteradas paraque o sistema Ax = b seja satisfeito;

Thiago Queiroz (IMTec) Parte 3 1/2016 9 / 26

Page 10: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Pergunta (ii)

A estratégia simplex é equivalente a alterar as variáveisnão-básicas para:

xN =

xN1

...xNk

...xNn−m

=

0...ε...0

Portanto, as variáveis básicas são modificadas por:xB = B−1b − B−1NxN = xB − B−1aNk ε = xB − yε;Em que: y = B−1aNk ;Note que: Nxn = N(0 . . . ε . . . 0)T =[aN1 . . . aNk . . . aNn−m ](0 . . . ε . . . 0)T = aNk ε.

Thiago Queiroz (IMTec) Parte 3 1/2016 10 / 26

Page 11: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Pergunta (ii)

Definição 9. Chamamos de direção simplex o vetor y = B−1aNk ,o qual fornece os coeficientes de como as variáveis básicas sãoalteradas pela estratégia simplex;A direção simplex é a solução do sistema By = aNk ;Voltando a expressão xB = xB − yε e escrevendo-a em cada umade suas coordenadas, temos:xBi = xBi − yiε ≥ 0, para i = 1,2, . . . ,m;Se yi ≤ 0, então xBi ≥ 0, para qualquer ε ≥ 0;

Se yi > 0, como xBi − yiε ≥ 0, então, ε ≤ xBiyi

;Logo, o maior valor de ε é dado por:ε =

xBlyl

= mínimo { xBiyi

tal que yi > 0}.

Thiago Queiroz (IMTec) Parte 3 1/2016 11 / 26

Page 12: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Solução ótima ilimitada

Se yi ≤ 0 para i = 1,2, . . . ,m, então não há limitante superiorpara ε;Isto significa que a solução perturbada será sempre factível paraqualquer valor de ε ≥ 0;Note que a função objetivo decresce com o crescimento de ε, ouseja, f(x)→ −∞, com ε→∞;Portanto, o problema não tem solução ótima ou a solução ótima éilimitada;

Thiago Queiroz (IMTec) Parte 3 1/2016 12 / 26

Page 13: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Pergunta (ii)

Com o valor de ε =xBlyl

a variável básica xBl se anula e a variávelnão-básica xNk torna-se positiva:

l-ésima variável básica: xBl = xBl − yl ε = xBl − ylxBlyl

= 0;k -ésima variável não-básica: xNk = ε;A nova solução tem a seguinte característica:(xB1 . . . xBl . . . xBm |0 . . . xNk . . . 0) = (xB1 . . . 0 . . . xBm |0 . . . ε . . .0);Ou seja, n −m variáveis são nulas, as quais podem serconsideradas não-básicas;Isto resulta em uma nova partição básica:B = (aB1 , . . . ,aBl , . . . ,aBm)→ B’ = (aB1 , . . . ,aNk , . . . ,aBm)N = (aN1 , . . . ,aNk , . . . ,aNn−m)→ N’ = (aN1 , . . . ,aBl , . . . ,aNn−m)

Dizemos que xNk entra na base e xBl sai da base.

Thiago Queiroz (IMTec) Parte 3 1/2016 13 / 26

Page 14: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Pergunta (ii)

Propriedade 4. A matriz B’ é invertível de modo que A = [B’ N’] éuma partição básica;A solução associada à nova partição básica é obtida da estratégiasimplex:xNk = ε, xBi = xBi − yiε, para i = 1, . . . ,m, com i 6= l ;Com isso, a estratégia simplex produz uma nova solução básicafactível para a qual a função objetivo tem um valor menor:f(x) = f(x) + cNk ε < f (x);Este procedimento pode ser repetido até encontrar outra soluçãobásica melhor ou satisfazer a condição de otimalidade;Estas etapas consistem no método simplex.

Thiago Queiroz (IMTec) Parte 3 1/2016 14 / 26

Page 15: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Considerações sobre o método simplex

Uma implementação computacional simples do método simplexpode trabalhar explicitamente com a matriz básica B−1;Isto resulta em atualizar a matriz básica em cada iteração. Estemétodo é chamado de método simplex revisado;O método simplex revisado não é eficiente, pois:

I Ao recalcular a inversa a cada iteração, erros de arredondamentosão inseridos;

I Matrizes com uma ordem grande, porém esparsa (poucoselementos não-nulos).

Outra representação é o método simplex em tabelas. Porém, trataapenas de problemas com dezenas de restrições e variáveis;O método simplex pode ser aplicado quando há limitantesuperiores para as variáveis, isto é, 0 ≤ xj ≤ uj :

I Chamado de método simplex para variáveis canalizadas.

Thiago Queiroz (IMTec) Parte 3 1/2016 15 / 26

Page 16: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Método Simplex em Tabelas

As operações do método simplex podem ser organizadas emtabelas, chamadas tabelas simplex;Interessante para manipular exemplos pequenos e compreendero funcionamento do método mais rapidamente;Considere um problema de otimização linear na forma padrão:

Minimizar z = f (x) = cTx

sujeito a :

{Ax = bx ≥ 0.

(1)

Os coeficientes presentes no modelo são suficientes paradescrever o problema;Podem ser organizados da seguinte maneira:

Thiago Queiroz (IMTec) Parte 3 1/2016 16 / 26

Page 17: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Método Simplex em Tabelas

Tabela: Coeficientes de um problema de otimização linear.

x1 x2 . . . xn ← variáveisc1 c2 . . . cn z ← coeficientes da função objetivoa1 a2 . . . an b ← coeficientes das restrições

Para o exemplo abaixo:

Minimizar z = −x1 − 2x2

sujeito a :

x1 + x2 ≤ 6x1 − x2 ≤ 4−x1 + x2 ≤ 4x1 ≥ 0, x2 ≥ 0.

(2)

O primeiro passo é colocá-lo na forma padrão, adicionando asvariáveis de folga;

Thiago Queiroz (IMTec) Parte 3 1/2016 17 / 26

Page 18: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Método Simplex em Tabelas

Tabela: Tabela simplex inicial - Dados do problema.

x1 x2 x3 x4 x5 b1 -2 0 0 0 z1 1 1 0 0 61 -1 0 1 0 4-1 1 0 0 1 4

Resulta na seguinte tabela simplex inicial, com as VariáveisBásica (VB):

Tabela: Tabela simplex inicial.

x1 x2 x3 x4 x5 bVB 1 -2 0 0 0 0x3 1 1 1 0 0 6x4 1 -1 0 1 0 4x5 -1 1 0 0 1 4

Thiago Queiroz (IMTec) Parte 3 1/2016 18 / 26

Page 19: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

O algoritmo simplex em Tabelas

Considere um problema de otimização linear na forma padrão.Fase I: Determine uma tabela simplex inicial:

I A matriz dos coeficientes contém uma matriz identidade m×m, e ovetor independente b ≥ 0;

I A função objetivo é escrita em termos das variáveis não-básicas,isto é, os coeficientes das variáveis básicas são nulos;

I Faça iteração = 0.

Fase II:I 1. Determine o menor dos custos relativos:

ck = mínimo {cj , para toda variável não-básica };I 2. Se ck ≥ 0, então pare: solução ótima encontrada;

F 2.1. Senão, a variável xk entra na base;

Thiago Queiroz (IMTec) Parte 3 1/2016 19 / 26

Page 20: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

O algoritmo simplex em Tabelas

Fase II: continuação...I 3. Se aik ≤ 0, para i = 1, . . . ,m, então pare: solução ilimitada;

F 3.1. Senão, determine:blalk

= mínimo { biaik

tal que aik > 0, i = 1, . . . ,m};F 3.2. A variável básica da linha l , digamos xl , sai da base;

I 4. Atualize a tabela simplex, considerando o elemento pivô alk efazendo o pivoteamento no restante da coluna;

F 4.1. A variável xk passa a ser a variável básica na linha l ;F 4.2. Faça iteração = iteração + 1;F 4.3. Retorne ao passo 1.

Thiago Queiroz (IMTec) Parte 3 1/2016 20 / 26

Page 21: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Exemplo

Aplique o algoritmo simplex em tabelas no seguinte problema deotimização linear:

Minimizar z = −x1 − 2x2

sujeito a :

x1 + x2 ≤ 6x1 − x2 ≤ 4−x1 + x2 ≤ 4x1 ≥ 0, x2 ≥ 0.

(3)

Thiago Queiroz (IMTec) Parte 3 1/2016 21 / 26

Page 22: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Resolução

Pela Fase I, monta-se a tabela simplex inicial, explicitando asvariáveis básicas;Fazemos iteração = 0.

Tabela: Tabela simplex inicial.

x1 x2 x3 x4 x5 bVB 1 -2 0 0 0 0x3 1 1 1 0 0 6x4 1 -1 0 1 0 4x5 -1 1 0 0 1 4

Aplicando a Fase II, segue que:1. O menor custo relativo é: c2 = −2;2. c2 < 0, de forma que a variável x2 entra na base.

Thiago Queiroz (IMTec) Parte 3 1/2016 22 / 26

Page 23: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Resolução

3. Existe aik > 0. Observe: para i=3 temos 1, e para i=5 temos 1;3.1. O mínimo ocorre para {6

1 ;41}, isto é, para l=i=5;

3.2. A variável básica x5 sai da base;

Tabela: Tabela simplex inicial.

x1 x2 x3 x4 x5 bVB -1 -2 ↓ 0 0 0 0x3 1 1 1 0 0 6x4 1 -1 0 1 0 4← x5 -1 1 0 0 1 4

4. O elemento pivô é o aik = a52 = 1. Realizamos o pivoteamentona coluna ak = a2;4.1. A variável x2 entra no lugar da variável x5;

Thiago Queiroz (IMTec) Parte 3 1/2016 23 / 26

Page 24: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Resolução

Tabela: Tabela simplex iteração 1.

x1 x2 x3 x4 x5 bVB -3 0 0 0 2 0 + 8x3 2 0 1 0 -1 2x4 0 0 0 1 1 8x2 -1 1 0 0 1 4

4.2. Faça: iteração = iteração + 1, resultando em iteração = 1;4.3. Retorne ao passo 1.O processo de resolução continua ... até chegarmos na tabelasimplex final:

Thiago Queiroz (IMTec) Parte 3 1/2016 24 / 26

Page 25: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Resolução

Tabela: Tabela simplex final.

x1 x2 x3 x4 x5 bVB 0 0 3

2 0 12 0 + 8 + 2 = 11

x1 1 0 12 0 - 1

2 1x4 0 0 0 1 1 8x2 0 1 1

2 0 12 5

Thiago Queiroz (IMTec) Parte 3 1/2016 25 / 26

Page 26: Programação Linear - Parte 3 · Programação Linear - Parte 3 Prof. Thiago Alves de Queiroz 1/2016 Thiago Queiroz (IMTec) Parte 3 1/2016 1 / 26. O Método Simplex Encontre o vértice

Exemplos

Para uma boa alimentação, o corpo necessita de vitaminas eproteínas. A necessidade mínima de vitaminas é de 32 unidadespor dia e a de proteínas de 36 unidades por dia. Uma pessoa temdisponível carne e ovos para se alimentar. Cada unidade decarne contém 4 unidades de vitaminas e 6 unidades de proteínas.Cada unidade de ovo contém 8 unidades de vitaminas e 6unidades de proteínas. Qual a quantidade diária de carne e ovosque deve ser consumida para suprir as necessidades devitaminas e proteínas com o menor custo possível? Cada unidadede carne custa 3 unidades monetárias e cada unidade de ovocusta 2,5 unidades monetárias.a) Obtenha o modelo de otimização linear para o problema acima;b) Obtenha todas as soluções básicas factíveis para o problemaacima;c) Determine a solução ótima, caso exista, do problema acimausando o método simplex em tabelas;

Thiago Queiroz (IMTec) Parte 3 1/2016 26 / 26