Programação Linear - Parte 3
Prof. Thiago Alves de Queiroz
Encontre o vértice ótimo pesquisando um subconjunto dos K vé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ásica factível melhor?
Considere a solução básica factível: ˆ x = ˆxˆB xN com ˆxB=B−1b ≥ 0 e ˆxN =0;
Seja a solução geral:
x =xB
xN
em que: xB =B−1b − B−1NxN;
A função objetivo f(x) pode ser expressa considerando a partição
básica:
f(x) = cTx = [cBTcNT]xB xN
= cBTxB+cNTxN.
cBT: coeficientes das variáveis básicas na função objetivo;
cT
N: coeficientes das variáveis não-básicas na função objetivo.
Restringindox ao sistema Ax = b, temos:
f(x) = cBT(B−1b − B−1NxN) +cNTxN =
cBTB−1b − cBTB−1NxN+cNTxN;
O primeiro termo corresponde ao valor da função objetivo em ˆx :
f(ˆx ) = cBTˆxB+cNTxˆN = cBT(B−1b) + cNT(0) = cBT(B−1b);
Definição 6. O vetor λ de ordem m × 1, dado por: λT =cT BB−1é
chamado de vetor multiplicador simplex;
Também é referenciado como vetor de variáveis duais;
Pode ser obtido pela resolução do sistema: BTλ =c
Utilizando o vetor multiplicador simplex em f(x), segue: f(x) = f(ˆx ) - cBTB−1NxN+cNTxN = f(ˆx ) - λTNx N+cTNxN = f(ˆx ) + (cNT − λTN)xN; Observe que: cT N− λTN = (cN1,cN2, . . . ,cNn−m) − λ T(a N1,aN2, . . . ,aNn−m) = (cN1− λ Ta N1,cN2 − λ Ta N2, . . . ,cNn−m− λ Ta Nn−m); Além disso: xN = (xN1,xN2, . . . ,xNn−m); Resulta em: f(x) = f(ˆx ) + (cN1− λ Ta N1)xN1 + (cN2− λ Ta N2)xN2+ . . . + (cNn−m − λ Ta Nn−m)xNn−m.
Definição 7. Os coeficientes ˆcNj = (cNj − λ
Ta
Nj)das variáveis não-básicas na função objetivo são chamados de custos relativos ou 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 − λ
Ta
Nj) ≥0 para todo j, então f(x) ≥ f (ˆx ) para todo xN ≥ 0;
Propriedade 3. (condição de otimalidade) Dada uma partição
básicaA = [B N] em que a solução básica associada é
ˆ
xB =B−1b ≥ 0 e seja λT =cBTB−1o vetor multiplicador simplex.
Se (cNj − λ
Ta
Nj) ≥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ção básica factível é ótima.
Como determinar uma solução básica factível melhor?
Considere uma solução básica factível e suponha que a condição de otimalidade não foi satisfeita;
Ou seja, existe um k tal que o custo relativo é negativo: (cNk − λ
Ta
Nk) <0;
Definição 8. Chamamos de estratégia simplex a perturbação de
uma solução básica factível que consiste alterar as variáveis não-básicas por:
xNk = ≥0, (variável com custo relativo negativo)
xNj =0, para todo j, exceto j = k ;
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 taxa negativa ˆcNk.
Note que quanto menor o valor de ˆcNk, mais rápido a função objetivo 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ível para que mantém a solução perturbada ainda factível;
Note que ao mudar o valor das variáveis não-básicas pela
estratégia simplex, as variáveis básicas devem ser alteradas para
A estratégia simplex é equivalente a alterar as variáveis nã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 =a Nk.
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ão alteradas 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 uma
de 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, ≤
ˆ xBi
yi ; Logo, o maior valor de é dado por:
ˆ = xˆyBl l =mínimo { ˆ xBi yi tal que yi >0}.
Se yi ≤ 0 para i = 1, 2, . . . , m, então não há limitante superior
para ;
Isto significa que a solução perturbada será sempre factível para qualquer valor de ≥ 0;
Note que a função objetivo decresce com o crescimento de , ou
seja, f(x) → −∞, com → ∞;
Portanto, o problema não tem solução ótima ou a solução ótima é ilimitada;
Com o valor de ˆ = xˆyBl
l a variável básica xBl se anula e a variável
não-básica xNk torna-se positiva:
l-ésima variável básica: xBl = ˆxBl − ylˆ = ˆxBl − yl
ˆ xBl
yl =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 ser consideradas 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)
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égia simplex:
xNk = ˆ, xBi = ˆxBi − yi, para i = 1, . . . , m, com i 6= l;
Com isso, a estratégia simplex produz uma nova solução básica factí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ção básica melhor ou satisfazer a condição de otimalidade;
Uma implementação computacional simples do método simplex
pode trabalhar explicitamente com a matriz básica B−1;
Isto resulta em atualizar a matriz básica em cada iteração. Este mé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 arredondamento
são inseridos;
I Matrizes com uma ordem grande, porém esparsa (poucos
elementos não-nulos).
Outra representação é o método simplex em tabelas. Porém, trata apenas de problemas com dezenas de restrições e variáveis; O método simplex pode ser aplicado quando há limitante superiores para as variáveis, isto é, 0 ≤ xj ≤ uj:
As operações do método simplex podem ser organizadas em tabelas, chamadas tabelas simplex;
Interessante para manipular exemplos pequenos e compreender o 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 = b x ≥ 0. (1)
Os coeficientes presentes no modelo são suficientes para descrever o problema;
Tabela: Coeficientes de um problema de otimização linear.
x1 x2 . . . xn ← variáveis
c1 c2 . . . cn z ← coeficientes da função objetivo
a1 a2 . . . an b ← coeficientes das restrições
Para o exemplo abaixo:
Minimizar z = −x1− 2x2 sujeito a : x1+x2≤ 6 x1− x2≤ 4 −x1+x2≤ 4 x1≥ 0, x2≥ 0. (2)
Tabela: Tabela simplex inicial - Dados do problema. x1 x2 x3 x4 x5 b 1 -2 0 0 0 z 1 1 1 0 0 6 1 -1 0 1 0 4 -1 1 0 0 1 4
Resulta na seguinte tabela simplex inicial, com as Variáveis Básica (VB):
Tabela: Tabela simplex inicial. x1 x2 x3 x4 x5 b
VB 1 -2 0 0 0 0
x3 1 1 1 0 0 6
x4 1 -1 0 1 0 4
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 o
vetor 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;
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:
bl
alk =mínimo {
bi
aik 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 e
fazendo 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;
Aplique o algoritmo simplex em tabelas no seguinte problema de otimização linear: Minimizar z = −x1− 2x2 sujeito a : x1+x2≤ 6 x1− x2≤ 4 −x1+x2≤ 4 x1≥ 0, x2≥ 0. (3)
Pela Fase I, monta-se a tabela simplex inicial, explicitando as variáveis básicas;
Fazemos iteração = 0.
Tabela: Tabela simplex inicial. x1 x2 x3 x4 x5 b
VB 1 -2 0 0 0 0
x3 1 1 1 0 0 6
x4 1 -1 0 1 0 4
x5 -1 1 0 0 1 4
Aplicando a Fase II, segue que:
1. O menor custo relativo é: c2= −2;
3. Existe aik >0. Observe: para i=3 temos 1, e para i=5 temos 1;
3.1. O mínimo ocorre para {61;41}, isto é, para l=i=5;
3.2. A variável básica x5sai da base;
Tabela: Tabela simplex inicial. x1 x2 x3 x4 x5 b
VB -1 -2 ↓ 0 0 0 0
x3 1 1 1 0 0 6
x4 1 -1 0 1 0 4
← x5 -1 1 0 0 1 4
4. O elemento pivô é o aik =a52 =1. Realizamos o pivoteamento
na coluna ak =a2;
Tabela: Tabela simplex iteração 1. x1 x2 x3 x4 x5 b VB -3 0 0 0 2 0 + 8 x3 2 0 1 0 -1 2 x4 0 0 0 1 1 8 x2 -1 1 0 0 1 4
4.2. Faça: iteração = iteração + 1, resultando em iteração = 1;
4.3. Retorne ao passo1.
O processo de resolução continua ... até chegarmos na tabela simplex final:
Tabela: Tabela simplex final. x1 x2 x3 x4 x5 b VB 0 0 32 0 12 0 + 8 + 2 = 11 x1 1 0 12 0 -12 1 x4 0 0 0 1 1 8 x2 0 1 12 0 12 5
Para uma boa alimentação, o corpo necessita de vitaminas e proteínas. A necessidade mínima de vitaminas é de 32 unidades por dia e a de proteínas de 36 unidades por dia. Uma pessoa tem disponível carne e ovos para se alimentar. Cada unidade de carne contém 4 unidades de vitaminas e 6 unidades de proteínas. Cada unidade de ovo contém 8 unidades de vitaminas e 6
unidades de proteínas. Qual a quantidade diária de carne e ovos que deve ser consumida para suprir as necessidades de
vitaminas e proteínas com o menor custo possível? Cada unidade de carne custa 3 unidades monetárias e cada unidade de ovo custa 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 problema acima;
c) Determine a solução ótima, caso exista, do problema acima usando o método simplex em tabelas;