x - FACOM

Transcrição

x - FACOM
Método Simplex
Resolução Algébrica
Prof. Ricardo Santos
Método Simplex
• Dada uma solução factível:
– Essa solução é ótima?
– Caso não seja ótima, como determinar uma melhor?
• Considere uma solução básica factível:
 xˆ B 
xˆ =   em que
 xˆ N 
 xˆ B = B b ≥ 0

 xˆ N = 0,
−1
• E a solução geral usando a mesma partição básica
 xB 
−1
−1
x =   tal que xB = B b − B Nx N
 xN 
Método Simplex
• A função objetivo f(x) pode ser expressa considerando
a partição básica:
 xB
T
T
=
+
c B c N  x N  c B x B c N x N
x̂
– cTB: coeficientes das variáveis básicas na função objetivo
– cTN: coeficientes das variáveis não-básicas na função
objetivo
– f(x)=cTx=
[
T
]
T
• Como xB=B-1b-B-1NxN então:
(1)
– f(x)=cTB(B-1b-B-1NxN)+cTNxN
xB
– O primeiro termo de (1) corresponde ao valor da função
objetivo em x̂ :
f ( xˆ ) = cBT xˆ B + c TN xˆ N = cBT ( B −1b) + cTN (0) = cBT B −1b
Método Simplex
• Definição 1(vetor multiplicador simplex): O vetor λ de
ordem mx1, dado por
– λT= cTBB-1
– é chamado de vetor multiplicador simplex (ou também, vetor
de variáveis duais)
– O vetor multiplicador simplex pode ser obtido pela resolução
do sistema de equações lineares λBT= cB, que é obtido ao se
tomar a transposta de λT= cTBB-1 e multiplicar ambos os
termos da igualdade por BT
• λT= cT B-1↔ λ= (B-1)Tc ↔ BTλ= c
B
B
B
– Utilizando o vetor multiplicador simplex em (1) temos que:
f ( x ) = f ( ) − cBT B −1 Nx N + c TN x N = f ( xˆ ) − λT Nx N + c TN x N
= f ( xˆ ) + (c TN − λT N ) x N
Método Simplex
– Utilizando o vetor multiplicador simplex em (1) temos que:
f ( x) = f ( ) − cBT B −1 Nx N + cTN x N = f ( xˆ ) − λT Nx N + cTN x N
= f ( xˆ ) + (cTN − λT N ) x N
– Note ainda que:
cTN − λT N = (c N 1 , c N 2 ,, cN n−m ) − λT (a N 1 , a N 2 ,, a N n−m )
–e
– obtemos
= (cN 1 − λT a N 1 , c N 2 − λT a N 2 ,, cN n−m − λT a N n−m )
x N = ( x N 1 , x N 2 ,  , x N n −m )
f ( x) = f ( xˆ ) + (c N 1 − λT a N 1 ) x N 1 + (c N 2 − λT a N 2 ) x N 2 +  + (c N n−m − λT a N n−m ) x N n−m
Método Simplex
• Definição 2(custos relativos): Os coeficientes
cˆNJ = (c NJ − λT a NJ ) das variáveis não-básicas da
função objetivo (2) são chamados custos relativos
ou custos reduzidos
–
f ( x) = f ( xˆ ) + cˆN 1 x N 1 + cˆN 2 x N 2 + ... + cˆN n−m x N n−m
(3)
Método Simplex
• Propriedade 1 (condição de otimalidade): Considere
uma partição básica A=[B N] em que a solução básica
associada x̂B =B-1b>=0 (solução básica factível), e
seja λT o vetor multiplicador simplex. Se cNJ-λTaNJ>=0 ,
j=1,...,n-m, (todos os custos relativos são nãonegativos), então a solução básica é ótima.
• Pergunta: 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 seja violada (caso contrário, a
solução é ótima), isto é, suponha que exista k tal que:
cˆN k = c N k − λ a N k < 0
T
Método Simplex
• Definição 3(estratégia simplex): Chamamos de estratégia
simplex a perturbação de uma solução básica factível que
consiste em alterar as variáveis não-básicas por:
• xNk=ε >= 0, (variável com custo relativo negativo)
• xNj=0, j=1,2,...,n-m, j≠k
• Ou seja, apenas uma variável não-básica, xNk, deixa de
ser nula. Com isso, a função objetivo (3) passa a ser:
f ( x) = f ( xˆ ) + cˆN 1 0 +  + cˆN k ε +  + cˆN n−m 0
= f ( xˆ ) + c N k ε < f ( xˆ )
• Observe que a função objetivo decresce quando ε cresce
– Isso justifica a escolha da variável não-básica a ser
perturbada com o menor custo relativo
Método Simplex
• Definição 4(direção simplex): 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 é solução do
sistema de equações lineares By=aNk
– Observe que as variáveis básicas podem ser escritas como:
(4)
xB = B −1b − B −1 Nx N = xˆ B − B −1a N k ε = xˆ B − yε
• Reescrevendo a equação vetorial (4) em cada uma de
suas coordenadas e considerando a não-negatividade
das variáveis básicas
•
xBi = xˆ Bi − yiε ≥ 0,
i = 1,  , m
Método Simplex
• Assim,
– Se yi<=0, então xBi>=0, para todo ε>=0 xˆ
B
ˆ
x = xB − yiε ≥ 0, então ε ≤
– Se yi>0, como B
yi
i
i
i
• Logo, o maior valor para ε é dado por
 xˆ Bi

εˆ =
= mínimo
tal que yi > 0
yl
 yi

xˆ Bl
Algoritmo Simplex (algébrico)
• Fase I:
– Determine inicialmente a partição básica factível A=[B N]. A
rigor, precisamos de dois vetores de índices básicos e nãobásicos:
• (B1, B2, ..., Bm) e (N1, N2, ..., Nn-m)
– Os vetores das variáveis básicas e não-básicas são,
respectivamente:
• xTB=(xB1, xB2, ..., xBm) e xTN= (xN1, xN2, ..., xNn-m)
– Faça iteração=1
• Fase II: {início da iteração simplex}
– Passo 1: {cálculo da solução básica}
• x̂ B =B-1b //ou, equivalentemente, resolve o sistema BxB=b
xˆ N = 0
•
Algoritmo Simplex (algébrico)
• Fase II: {início da iteração simplex}
– Passo 2: {cálculo dos custos relativos}
• 2.1) {vetor multiplicador simplex}
– λT= cTBB-1
• 2.2) {custos relativos}
T
ˆ
c
=
c
−
λ
aN j ,
– Nj
Nj
j = 1,2, , n − m
• 2.3) {determinação da variável a entrar na base}
– c N k = mínimo{c N j , j = 1,  , n − m} (variável x N k entra na base)
– Passo 3: {teste da otimalidade}
• Se c N k ≥ 0, então: pare //solução na iteração atual é
ótima
Algoritmo Simplex (algébrico)
• Fase II: {continuação}
– Passo 4: {cálculo da direção simplex}
• y=B-1aNk
– Passo 5: {determinação do passo e variável a sair da base}
• Se y<=0, então: pare //problema não tem solução ótima finita. f(x)-> -∞
• Caso contrário, determine a variável a sair da base pela razão mínima
 xˆ Bi
 //a variável xBl sai da base
– xˆ Bl
εˆ =
= mínimo 
tal que yi > 0, i = 1, , m
yl
 yi

– Passo 6: {atualização: nova partição básica, troque a lésima coluna de B pela k-ésima coluna de N}
• Matriz básica nova: B=[aB1...aBl-1 aNk aBl+1 ... aBm]
• Matriz não-básica nova: N=[aN1...aNk-1 aBl aNk+1 ... aNn-m]
• iteração=iteração+1
• Retorne ao passo 1
Algoritmo Simplex (algébrico)
• Exemplo:
– Minimizar f(x1,x2)=-x1-2x2
• x1+x2<=6
• x1-x2<=4
• -x1+x2<=4
• x1>=0, x2>=0
• Após introduzir as variáveis de folga x3, x4 e x5, temos
o problema na forma padrão
• Na Fase I, obtemos uma partição básica factível:
– (B1, B2, B3)=(3, 4, 5), (N1, N2)=(1, 2),
– Ou seja, B=I. Fazendo (x1, x2)=(0,0), temos (trivialmente) os
valores das variáveis básicas
Algoritmo Simplex (algébrico)
• Fase II: 1a. Iteração
Índices
Básicos
Não-básicos
B1=3
B2=4
B3=5
N1=1
N2=2
b
1
0
0
1
1
6
0
1
0
1
-1
4
0
0
1
-1
1
4
[cB | cN] 0
0
0
-1
-2
f=0
[B | N]
Algoritmo Simplex (algébrico)
• Fase II: 1a. Iteração
– Passo 1: {cálculo da solução básica} = xB=(x3, x4,
x5)
• Resolver o sistema BxB=b
– xB=(6, 4, 4)
• Avaliação da função objetivo:
– f(x)=cB1xB1+ cB2xB2 + cB3xB3=0*6+0*4+0*4=0
Algoritmo Simplex (algébrico)
• Fase II: 1a. Iteração
– Passo 2: {cálculo dos custos relativos}
• 2.1) {vetor multiplicador simplex}:(cB=(cB1,cB2,cB3)=(c3,c4,c5)=(0, 0, 0)).
– Solução do sistema BTλ=cB é λT=(0,0,0)
• 2.2) {custos relativos}: (N1=1, N2=2)
–
ĉ1=c1- λ a1=-1-(0 0 0)
T
– ĉ2=c2- λTa2=-2-(0 0 0)
1
 
1
 −1
 
=-1,
 1 


 − 1
 1 =-2,


k=2. (variável xN2=x2 entra na base)
• 2.3) {determinação da variável que entra na base}
– Como ĉ2 = cˆ N 2 =minimo{ĉ Nj , j=1,2}=-2<0, então a variável x2
entra na base
Algoritmo Simplex (algébrico)
• Fase II: 1a. Iteração
– Passo 3: {teste de otimalidade}
• Como os custos relativos (c1=-1, c2=-2)são negativos, a solução atual não
é ótima!
– Passo 4: {cálculo da direção simplex}
• Resolver o sistema By=a2 e obtenha y=
1
 
 − 1
1
 
• O vetor y mostra como as variáveis básicas são alteradas: xB=
x̂B -yε
• As variáveis não-básicas (x1 e x2) se alteram conforme a estratégia
simplex: x1=0 e x2=ε
– Passo 5: {determinação do passo e variável a sair da base}
• εˆ =minimo( xˆ B1 /y1, xˆ B 3 /y3)=minimo(6/1, 4/1)=4= xˆ B 3 /y3
• xB3=x5 sai da base
Algoritmo Simplex (algébrico)
• Fase II: 1a. Iteração
– Passo 6: {atualização: nova partição básica, troque a lésima coluna de B pela k-ésima coluna de N}
• (B1, B2, B3)=(3, 4, 2), (N1, N2)=(1, 5),
• {novo valor da função objetivo: f(x)=f( x̂ )+ĉ N k εˆ =0-2*4=-8}
• Nova Tabela:
Índices
Básicos
Não-básicos
B1=3
B2=4
B3=2
N1=1
N2=5
b
1
0
1
1
0
6
0
1
-1
1
0
4
0
0
1
-1
1
4
[cB | cN] 0
0
-2
-1
0
f=-8
[B | N]
Algoritmo Simplex (algébrico)
• Fase II: 2a. Iteração
– Passo 1:
• Solução básica: xB=(x3, x4, x2)
• Resolver sistema BxB=b e obter x̂B =
– Passo 2:
 2
 
8
 4
 
• 2.1) {vetor multiplicador simplex}
– (cB=(cB1,cB2,cB3)=(c3,c4,c2)=(0, 0, -2)).
– Resolver sistema BTλ=cB é λT=(0, 0, -2)
N =5)
• 2.2) {custos relativos}: (N1=1,
1 2
–
–
ĉ1=c1- λTa1=-1-(0 0 -2)
ĉ5=c5- λTa5=0-(0 0 -2)
 
 1 =-3,
 −1
 
 0
 
 0
1
 
k=1, x1 entra na base
=2,
• 2.3) {determinação da variável que entra na base}
– Comoĉ1<0, solução básica não é ótima e x entra na base
Algoritmo
Simplex
(algébrico)
a.
• Fase II: 2 Iteração
– Passo 3: {teste de otimalidade}
• Como há custos relativos (ĉ1=-3,ĉ5=2) negativos, a solução atual
não é ótima!
– Passo 4: {cálculo da direção simplex}
• Resolver o sistema By=a1 e obtenha y=  2 
0
 −1
 
• O vetor y mostra como as variáveis básicas são alteradas: xB= x̂
B
-yε
• As variáveis não-básicas (x1 e x5) se alteram conforme a
estratégia simplex: x5=0 e x1=ε
– Passo 5: {determinação do passo e variável a sair da base}
• Como somente y1>0, então
• εˆ =minimo( xˆ B1 /y1)=minimo(2/2)=1
• xˆ B1=x sai da base
Algoritmo Simplex (algébrico)
• Fase II: 2a. Iteração
– Passo 6: {atualização: nova partição básica, troque a lésima coluna de B pela k-ésima coluna de N}
• (B1, B2, B3)=(1, 4, 2), (N1, N2)=(3, 5),
• {novo valor da função objetivo: f(x)=f( x̂ )+ ĉ N k εˆ
• Nova Tabela:
=-8-3*1=-11}
Índices
Básicos
[B | N]
[cB | cN]
Não-básicos
B1=1
B2=4
B3=2
N1=3
N2=5
b
1
0
1
1
0
6
1
1
-1
0
0
4
-1
0
1
0
1
4
-1
0
-2
0
0
f=-11
Algoritmo Simplex (algébrico)
• Fase II: 3a. Iteração
– Passo 1:
• Solução básica: xB=(x1, x4, x2)
• Resolver sistema BxB=b e obter x̂B =
1
 
8
5
 
– Passo 2:
• 2.1) {vetor multiplicador simplex}
– (cB=(cB1,cB2,cB3)=(c1,c4,c2)=(-1, 0, -2)).
– Resolver sistema BTλ=cB é λT= (-3/2, 0, -1/2)
=5)
• 2.2) {custos relativos}: (N1=3, N
 12
–
–
ĉ3=c3- λTa3=0-(-3/2, 0, -1/2)
ĉ5=c5- λTa5=0- (-3/2, 0,
 
0
0
 
 0
 
-1/2)  0 
1
 
=3/2,
=1/2,
Algoritmo Simplex (algébrico)
• Fase II: 3a. Iteração
– Passo 2:
• 2.3) {determinação da variável que entra na base}
– Como minimo{ĉ N j , j=1,2}=1/2>0, segue-se que a solução atual
» x̂B =
1
 
8
 5
 
– É ótima!
e x̂ N =  0 
 
0
1
ou x̂ =  5 
 
0
8
0
 

Documentos relacionados

Método Simplex - aula 5

Método Simplex - aula 5 ... significa que para qualquer valor de , a nova solução é factível (não há limitante superior para ). Como a função objetivo decresce com o crescimento de , então f(x)  - ∞ quando   ∞. Diss...

Leia mais

Método Simplex Resolução Algébrica - FACOM

Método Simplex Resolução Algébrica - FACOM • Definição 2(custos relativos): Os coeficientes c*NJ=  (cNJ­λTaNJ) das variáveis não­básicas da função 

Leia mais

MÉTODO SIMPLEX – SOLUÇÃO INICIAL ARTIFICIAL Problemas de

MÉTODO SIMPLEX – SOLUÇÃO INICIAL ARTIFICIAL Problemas de final da Fase I só pode ocorrer quando todas elas forem não básicas.

Leia mais

Programação Linear (PL) Solução algébrica

Programação Linear (PL) Solução algébrica maior que o inicial. 9 Neste caso, o método simplex faz então a mudança do ponto por um outro que mais aumente o valor da função objetivo.

Leia mais

3- O MÉTODO SIMPLEX 3.1- Introdução O Método

3- O MÉTODO SIMPLEX 3.1- Introdução O Método Para isso, escolhemos uma variável, cujo custo relativo é mais negativo (não é regra geral), para entrar na base, e as trocas de vértices são feitas até que não exista mais nenhum custo relativo ne...

Leia mais