Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


3 simplex, Notas de estudo de Informática

metodo simplez

Tipologia: Notas de estudo

2012

Compartilhado em 20/09/2012

nilson-cavalcante-12
nilson-cavalcante-12 🇧🇷

1 documento

1 / 30

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
29
3- O MÉTODO SIMPLEX
3.1- Introdução
O Método Simplex é uma técnica utilizada para se determinar,
numericamente, a solução ótima de um modelo de Programação Linear. Será
desenvolvido inicialmente para Problemas de Programação Linear, na forma
padrão, mas com as seguintes características para o sistema linear de
equações:
i) Todas as variáveis são não-negativas:
ii) Todos os bi’ são não-negativos;
iii) Todas as equações iniciais do sistema são do tipo “ “. Assim, na forma
padrão, só encontra-se variáveis de folga.
Se uma das características vistas não ocorrer, então, casos especiais do
método devem ser considerados e esses serão vistos na seção 3.8, como o
Método Simplex de Duas Fases.
3.2- Introdução e fundamentos teóricos para o Método Simplex
3.2.1- Determinação de soluções básicas em um sistema de equações
lineares m x n , m
n (sistemas lineares)
Se ao resolver-se um sistema Ax=b, onde A
rmxm, x
rm e b
rm e
A fosse uma matriz inversível, então a solução seria facilmente determinada.
Porém, se dado um sistema Ax=b, onde:
A
b
x
m n
mxn
m
n
∈ℜ
∈ℜ
∈ℜ
(3.1)
Tal que m n, ou seja, sistema é retangular, como determinar soluções
de Ax=b?
O sistema acima sempre tem solução?
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e

Pré-visualização parcial do texto

Baixe 3 simplex e outras Notas de estudo em PDF para Informática, somente na Docsity!

3- O MÉTODO SIMPLEX

3.1- Introdução

O Método Simplex é uma técnica utilizada para se determinar, numericamente, a solução ótima de um modelo de Programação Linear. Será desenvolvido inicialmente para Problemas de Programação Linear, na forma padrão, mas com as seguintes características para o sistema linear de equações: i) Todas as variáveis são não-negativas: ii) Todos os bi’ são não-negativos; iii) Todas as equações iniciais do sistema são do tipo “ ≤ “. Assim, na forma padrão, só encontra-se variáveis de folga. Se uma das características vistas não ocorrer, então, casos especiais do método devem ser considerados e esses serão vistos na seção 3.8, como o Método Simplex de Duas Fases.

3.2- Introdução e fundamentos teóricos para o Método Simplex

3.2.1- Determinação de soluções básicas em um sistema de equações lineares m x n , m (^) ≤ n (sistemas lineares)

Se ao resolver-se um sistema Ax = b , onde A ⊂ rmxm, x ∈ rm^ e b ∈ rm^ e A fosse uma matriz inversível, então a solução seria facilmente determinada.

Porém, se dado um sistema Ax = b , onde:

A

b x

m n

mxn m n

Tal que m≤ n, ou seja, sistema é retangular, como determinar soluções de Ax = b? O sistema acima sempre tem solução?

Teorema 3.2.1.1: Seja a matriz A ∈ ℜℜℜℜ mxn^ com m ≤ n. Se a matriz A possui m colunas a 1 , a 2 ,…, am linearmente independentes (LI’s), então para qualquer b ∈ (^) ℜℜℜℜm^ , o sistema Ax = b tem ao menos uma solução em ℜℜℜℜ n^.

Definição 3.2.1.1: Seja Ax = b , A ∈ ℜℜℜℜmxn^ , b ∈ ℜℜℜℜm, x ∈ ℜℜℜℜn^ (m ≤ n).

Se A possui uma submatriz B ∈ ℜℜℜℜmxn^ onde det B ≠ 0 então diz-se que B é uma submatriz base de A , o que é equivalente a dizer: “Se A tem m colunas LI, então a matriz B formada por estas colunas é uma base para (^) ℜℜℜℜ m”.

Definição 3.2.1.2 - Variáveis básicas e não básicas:

Considerando-se o sistema Ax = b, definido em (3.1) e B ∈ ℜℜℜℜ mxm^ uma submatriz base de A , então, as variáveis associadas à submatriz B ∈ ℜℜℜℜmxm são denominadas variáveis básicas. Notação: variáveis básicas: xB.

Definida a submatriz base B restam em A (n - m) colunas que chamará-se de submatriz não base N. As variáveis associadas a esta submatriz N são denominadas variáveis não básicas.

Notação: variáveis não básicas: xN.

3.2.1.2- Uma possível solução para Ax=b da definição acima

Seja o sistema Ax = b^ e suponha que extrai-se de A^ uma submatriz B ∈ ℜℜℜℜ mxm. Pelas definições anteriores pode-se fazer as seguintes partições no

sistema Ax = b : A = [ B ; N ], x xx^ B N

=  ^.

Logo pode-se escrever:

Mostrará-se que: i) λ x^1 + (1- λ ) x^2 ∈ S ; ii) λ x^1 + (1- λ ) x^2 ≥ 0. Para se mostrar i) basta notar que, Se x^1 ∈ S e x^2 ∈ S  Ax^1 = b  Ax^2 = b ; Assim, A ( λ x^1 + (1- λ ) x^2 ) = λ A x^1 + (1- λ ) Ax^2 = λ b + (1- λ ) b = b. Logo, A ( λ x^1 + (1- λ ) x^2 ) = b. Para se mostrar ii): x^1 ≥ 0 e x^2 ≥ 0  λ x^1 ≥ 0 e (1- λ ) x^2 ≥ 0; assim , λ x^1 + (1- λ ) x^2 ≥ 0. ∴ λ x^1 + (1- λ ) x^2 ∈ S. ∴ S é convexo.

Teorema 3.3.2: “Toda solução básica do sistema Ax = b é um ponto extremo do conjunto de soluções factíveis S ”.

Prova:

Seja x uma solução básica associada a uma submatriz base B ∈ ℜ mxm.

Então, sem perda de generalidade, suponha que, x = xx^ B N

 ^ com x (^) N =

0 para i = m+1,...,n.

Por contradição, suponha que x não seja ponto extremo ou vértice de

S , então ∃ x^1 e x^2 ∈ S tal que:

x (^) = λ x^1 + (1- λ ) x^2 ; λ ∈ (^) [0,1] e x^1 ≠ x^2 pois x (^) ≠ 0. Desde que x (^) i = 0 para i = m+1,...,n  λ λ

x x

i i

1 2

(^ )

para i=m+1,...,n  x x

i i

1 2

^

para i=m+1,...,n.

Logo, x^1 = xx^ B N

1 1

 ^ e x^2 = x x

B N

2 2

 ^.

Como x^1 ∈ S e x^2 ∈ S 

Ax b Ax b

1 2

Bx b Bx b

B B

1 2

B x^1 B^ - B x^2 B^ = B ( x^1 B^ - x^2 B^ ) = b - b ≡ 0. Mas x^1 B^ ≠ x^2 B^ e então x^1 B^ - x^2 B^ ≠ 0  B = 0 , contradição,

pois por hipótese B é uma submatriz base e portanto não singular! ∴ “Toda solução básica do sistema Ax = b é um ponto extremo do conjunto de soluções factíveis S ”.

Teorema 3.3.3: Sejam x^1 , x^2 ,..., xp^ pontos extremos do conjunto S e seja S limitado. Então, ∀ xS , x pode ser escrito como combinação convexa dos

pontos extremos x^1 , x^2 ,..., xp^ de S , ou seja, x = λ i i i

p x =

1

e λ i i

p

1

Teorema 3. 3.4: Se um problema de programação linear admitir solução ótima, então pelo menos um ponto extremo (vértice) do conjunto de pontos viáveis é uma solução ótima do problema. Mostrará-se este teorema admitindo-se que o conjunto S é limitado. Prova: Sejam x^1 , x^2 ,..., xp^ pontos extremos do conjunto S limitado. Então, pelo teorema 3.3.3, ∀ xS , x pode ser escrito como

combinação convexa dos pontos extremos x^1 , x^2 ,..., xp^ de S , ou seja, x =

λ i i i

p x =

1

e λ i i

p

1

Logo, cTx = cT^ ( λ i i i

p x =

1

) = (^) λ 1 cTx^1 + (^) λ 2 cTx^2 +...+ (^) λ (^) p cTx p.

Seja x^ um ponto extremo tal que cTx^ ≤ cTxi^ (i=1,...p). Mas cTx = λ 1 cTx^1 + λ 2 cTx^2 +...+ λ (^) p cTx p^ ≥

O processo termina quando estando num ponto extremo, todos os outros pontos extremos adjacentes fornecem valores maiores para a função objetivo. Portanto, a troca de vértice, faz uma variável não básica crescer (assumir valor positivo) ao mesmo tempo em que zera uma variável básica (para possibilitar a troca) conservando a factibilidade do Problema de Programação Linear. 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 negativo. A variável que sairá da base é aquela que ao se anular garante que as demais continuem maiores ou iguais a zero, quando aumentamos o valor da variável que entra na base (respeitando a factibilidade). O Método Simplex compreenderá, portanto, os seguintes passos: i) Achar uma solução factível básica inicial; ii) Verificar se a solução atual é ótima. Se for, pare. Caso contrário, siga para o passo iii). iii) Determinar a variável não básica que deve entrar na base; iv) Determinar a variável básica que deve sair da base; v) Atualizar o sistema à fim de determinar a nova solução factível básica, e voltar ao passo ii.

Exemplo 3.4.1: Seja o problema: Max. z = x 1 + x 2 sujeito a: 2 x 1 + x 2 ≤ 8 x 1 + 2x 2 ≤ 7 x 2 ≤ 3 x 1 e x 2 ≥ 0

Passando este problema para a forma padrão, temos a solução inicial:

Min. -z = -x 1 - x 2 sujeito a: 2 x 1 + x 2 + x 3 = 8 x 1 + 2 x 2 + x 4 = 7 x 2 + x 5 = 3 x 1 , x 2 , x 3 , x 4 , x 5 ≥ 0 Passo 1: Quadro 1 vB x 1 x 2 x 3 x 4 x 5 x 3 2 1 1 0 0 8 x 4 1 2 0 1 0 7 x 5 0 1 0 0 1 3 -z -1 -1 0 0 0 0 xT^ = (0, 0, 8, 7, 3) Passo 2: Escolhemos x 1 para entrar na base: x 1 = ε > 0 x 1 = x 2 = 0, x 3 = 8, x 4 = 7, x 5 = 3 Tomando x 1 = ε temos: 1 a^ equação: 2 x 1 + x 2 + x 3 = 8 → 2 x 1 + x 3 = 8 → x 3 = 8 - 2 x 1 ≥ 0 2 a^ equação: x 1 + 2 x 2 + x 4 = 7 (^) → x 1 + x 4 = 7 (^) → x 4 = 7 - x 1 ≥ 0

3 a^ equação: x 2 + x 5 = 3 → x 5 = 3 ≥ 0 Passo 3: Analisamos qual das três variáveis básicas deve sair da base: x 3 = 8 - 2 x 1 ≥ 0 → para x 3 = 0 ⇔ 8 - 2 x 1 = 8 → x 1 = 4 x 4 = 7 - x 1 ≥ 0 → para x 3 = 0 ⇔ 7 - x 1 = 0 → x 1 = 7 x 5 = 3 - 0 x 1 ≥ 0 ( para qualquer ε > 0, x 1 não afeta a factibilidade). Para que x 3 e x 4 não percam sua factibilidade o menor valor que x 1 pode assumir é 4 e daí:

Desde que o valor mínimo de ε ocorreu na 2ª equação, então x 4 sai da base e o elemento pivô da operação é a 22 =3/2. Aplicando o pivoteamento gaussiano, obtemos o próximo quadro: P asso 8 : Quadro 3: Atualização do sistema em função da nova base: vB x 1 x 2 x 3 x 4 x 5 x 1 1 0 2/3 -1/3 0 3 x 2 0 1 -1/3 2/3 0 2 x 5 0 0 1/3 -2/3 1 1 -z 0 0 1/3 1/3 0 -

Passo 9: A solução é ótima?: Sim, pois não existe nenhum outro custo relativo negativo, ou seja, não podemos diminuir mais a função objetivo. Portanto, a solução ótima é: x* = (x 1 , x 2 , x 3 , x 4 , x 5 ) = (3, 2, 0, 0, 1). x*= xx^1 2

^

 (^) → z*= 5.

3.5- O Método Simplex Revisado.

3.5.1- Considerações teóricas sobre o método.

Sem perda de generalidade, supondo-se que após algumas iterações do método é obtido o seguinte sistema a ser resolvido: x 1 + .........................................................y1q xq ...................................= y 10 x 2 +.....................................................y2q xq...................................= y 20 ..................................................................................................... (3.3) xp + ................................ypq xq...................................= yp ............................................................................... xm + ...................ypm xq..................................= ym com yi0 ≥ 0 para i = 1,...,m.

Então, a solução básica factível atual é: xB = (x 1 ,...,xm) e xN = (xm+1 ,...,xq,...,xn), com xi = yi0 ≥ (^) 0 para i = 1,...,m.

Para se obter a nova solução, suponha que fazemos a variável não básica xq entrar na base.

Se o elemento pivô da operação é ypq então xp sai da base.

A nova solução deve estar na forma canônica e assim deve-se efetuar pivoteamento gaussiano em ypq.

Os novos coeficientes do sistema serão dados por: linha p: ypj’ = ypj / ypq ; j = 1,...,n. para i ≠ p: yij’ = yij - yiq * (ypj / ypq). para j = 1, ..., n.

3.5.2- Definição de εεεε.

Assumindo-se que xq = εεεε ≥ 0, então, de acordo com o sistema de restrições (3.3). ;

xB =

x

x

x

p

m

1 .

.

y

y

y

p

m

10

0

0

y

y

y

q

pq

mq

1 .

.

. ε ≥ 0,

que pode ser escrito por xB = y^0 - yq^. εεεε ≥ 0.

Logo, xq = (^) εεεε = pq

p y

y (^) = min { iq

i y

y (^) tal que yiq > 0 }.

Assim, xq = εεεε ≥ 0 entra na base , xp = 0 sai da base e um novo

vértice é alcançado. Se yiq < 0, ∀ i , então a solução é ilimitada pois ∀ εεεε ≥ 0 tem-se que: yi0 - yiq. εεεε ≥ 0.

irá sair da base. Se min { iq

i y

y (^) tal que yiq >>>> 0 } = pq

p y

y (^) , então x p = 0^ sai^ da

base e xq = pq

p y

y (^) >>>> 0 entra na base.

Passo 4: Atualize B-1^ efetuando pivoteamento gaussiano em torno de ypq. Calcule a nov a solução corrente xB = B-1b e volte ao passo 1

Exemplo 3.6.1: Considerando o exemplo 4.7.1 resolvido por quadros e seguindo os procedimentos vistos tem-se:

a^1 a^2 a^3 a^4 a^5 b 2 1 1 0 0 8 1 2 0 1 0 7 sistema de restrições na forma padrão. 0 1 0 0 1 3

cT^ = [ -1, -1, 0 , 0 , 0 ] coeficientes de custo relativo. Solução inicial: Var. bás. B-1^ xB 3 1 0 0 8 4 0 1 0 7 5 0 0 1 3

Calcule wT^ = cBT^ B-1^ = [0,0,0] e rNT^ = cNT^ - wTN = [-1,-1]. Fazendo-se a^1 entrar na base temos o quadro a ser atualizado: y^1 = B-1^ a^1. Var. bás. B-1^ xB y^1 3 1 0 0 8 2 ← pivô (a 11 = 2) 4 0 1 0 7 1 5 0 0 1 3 0

Após efetuar os quocientes: { 8/2, 7/1,3/0}, seleciona-se o elemento pivô, define-se qual variável irá sair da base e atualiza-se a B-1^ :

Var. bás. B-1^ xB 1 1/2 0 0 4 4 -1/2 1 0 3 5 0 0 1 3

Então, wT^ = [-1/2, 0, 0] e rNT^ = [-1/2, -1/2] = [r 2 , r 3 ]. Seleciona-se então a^2 para entrar na base: y^2 = B-1^ a^2

Var. bás. B-1^ xB y^2 1 -1/2 0 0 4 1/ 4 -1/2 1 0 3 3/2 ← pivô (a 22 = 3/2) 5 0 0 1 3 1

Efetuando-se os quocientes: { 4/(3/2), 3/(3/2), 3/1}, selecionamos o elemento pivô e a variável a sair da base. Atualizando a B-1^ tem-se: Var. bás. B-1^ xB 1 2/3 -1/3 0 3 2 -1/3 2/3 0 2 5 1/3 -2/3 1 1

Então, wT^ = cBT^ B-1^ e rNT^ = cNT^ - wTN = [1/3, 1/3] = [r 3 ,r 4 ] Como não tem-se mais custos relativos negativos, esta é a solução ótima do problema.

3.7- O algoritmo Simplex

3.7.1- Direções de busca O teorema a seguir mostra que o conjunto solução do sistema Ax = b , é completamente determinado a partir de uma solução particular e do sub- espaço N ( A ).

dB = - B-1N dNBdB + NdN = 0 ⇔ Ad (^) = 0 ⇔ d (^) ∈ N ( A ). Observe com isto que foi determinado um procedimento para determinar

dN ( A ), bastando para isto se atribuir um valor dN = d (^) N. Isto pode ser feito escolhendo-se:

d (^) N = ej , j = 1,2,...,n-m; onde ej^ é vetor canônico do ℜ n −^ m^ , que determinam n-m vetores linearmente independentes em N ( A ). Tem-se assim, os vetores de N ( A ):

dj^ = − 

B − N

e

j j

1 , j = 1,2,...,n-m;

onde NJ^ é a j-ésima coluna da matriz N que corresponde ao vetor coluna aj^ da matriz A. Tais vetores, além de serem linearmente independentes, geram o

sub-espaço N ( A ), ou seja, ∀ dN ( A ) então d = dj j

n m

1

Construiu-se assim, uma base de N ( A ) e segue o seguinte resultado:

Teorema 3.7.1.2:

Seja A ∈ ℜ mxn^ , posto( A ) = m. Então, dim ( N ( A )) = n-m.

Uma nova solução obtida por uma perturbação na direção dj : x = x + ε dj^ , ε > 0, corresponde à estratégia de alterar apenas a j-ésima componente do vetor das variáveis não básicas:

x x 0, j q

x x   , j q N^ N

N (^) j Nj ;

Tal estratégia é denominada “estratégia simplex”, que corresponde a adotar a direção dj^ definida acima. Assim as direções dj^ são denominadas de “direções simplex”.

3.7.2- Determinação do passo

Considere a seguinte definição dos conjuntos baseados na partição básica e não básica da matriz A :

IB = { j tal que j é um índice coluna relacionado à base B }; IN = { j tal que j é um índice coluna relacionado à N }.

Em uma iteração corrente, se tiver-se a solução básica factível x = x x

B N

^

 (^) , então, para a obtenção de uma nova solução a factibilidade será

garantida se:

x + ε d ≥ 0 ⇔ x (^) B + ε dB ≥ 0 ⇔ ( x (^) B )i + ε ( dB )i ≥ 0, i ∈ IB. Isto ocorre se e somente se: ε = min { B i

B i (d )

(x ) tal que ( dB )i < 0 , i ∈ IB }.

Se o mínimo ocorre para ε = - ( x (^) B )p / ( dB )p , p ∈ IB então ( x (^) B )p + ε ( dB )p = 0, então ( x (^) B )p se torna não básica e é substituída por ( x (^) N )q = ε , q ∈ IN. Se ( dB )i > 0, ∀ i ∈ IB , então o conjunto de soluções factíveis é ilimitado.

Além disso, se duas ou mais componentes de x (^) B se anularem para um mesmo valor de ε , temos o caso de degeneração da base.

3.7.3- Critério de mudança de base.

Considere o vetor custo relativo rNT^ = cNT^ - cBT^ B-1N , já visto. Este pode ser escrito por: rj = cj - cBTB-1 ( aN )j para j ∈ IN. Se ∃ j ∈ IN tal que rj ≤ 0, então é interessante fazer xj assumir valor positivo e entrar na base, pois dj^ é uma direção de descida, ou seja,

cT ( x + ε dj ) ≤ cT^ x. Isto é utilizado como critério de mudança de base. Se rj ≥ 0, ∀ j ∈ IN então a otimalidade é atingida pois não conseguimos mais decréscimos para a função objetivo e isto é utilizado como critério de parada. Após as considerações anteriores pode-se enunciar um algoritmo que segue os seguintes passos.

3.8- Casos especiais do Método Simplex

3.8.1- Empate na entrada

Quando houver empate na escolha da variável que entra na base, deve- se tomar a decisão arbitrariamente. A única implicação envolvida é que pode- se escolher um caminho mais longo ou mais curto para se chegar à solução ótima.

3.8.2- Empate na saída (degeneração)

Poderá ocorrer que durante a escolha de uma variável para sair da base, temos, empate, isto é, duas ou mais variáveis se anulam com o crescimento da variável que está entrando na base. Neste caso ocorre o que chamamos de degeneração (temos uma solução básica factível degenerada). A escolha também é arbitrária (uma das variáveis básicas assume valor zero). Temos, então, que a mesma solução é obtida através de bases diferentes. Isso ocorre devido a hiperdeterminação de pontos extremos.

Exemplo 3.8.2. Maximizar z = 5x 1 + 2x 2 Sujeito a: x 1 ≤ 3 x 2 ≤ 4 4x 1 + 3x 2 ≤ 12 x 1 ; x 2 ≥ 0

3.8.3- Problemas com múltiplas soluções

Eventualmente, um modelo de Programação Linear pode apresentar mais de uma solução ótima. Quando isso ocorre, o Método Simplex é capaz de acusá-lo, pois o custo de uma variável não-básica é nulo. Dizemos, então, que o sistema tem múltiplas soluções ótimas.

Exemplo 3.8.3.1: Maximizar z = x 1 + 2x 2 Sujeito a: x 1 ≤ 3 x 2 ≤ 4 x 1 + 2x 2 ≤ 9 x 1 ; x 2 ≥ 0

3.8.4- Solução ilimitada

Quando aplicamos o Método Simplex e nenhuma restrição impede o crescimento da variável que entra na base, ou seja, não conseguimos zerar uma variável básica, dizemos que o problema tem solução ilimitada. Neste caso, o problema tem solução básica factível mas não tem solução ótima. Exemplo 3.8.4.1: Maximizar z = x 1 + 2x 2 Sujeito a: 4x 1 + x 2 ≥ 20 x 1 + 2x 2 ≥ 10 x 1 ≥ 2 x 1 ; x 2 ≥ 0

3.9- O Método Simplex duas fases

Nos problemas onde as restrições são do tipo “ ≤ ” (menor ou igual) é sempre possível obtermos uma submatriz (identidade) com o auxilio das variáveis de folga, e assim a solução inicial é óbvia. Porém, quando não temos uma solução inicial óbvia, ou seja, não conseguimos uma submatriz base (identidade) necessitamos de um procedimento para desenvolvê-la. Isto ocorre quando o problema de Programação Linear tiver restrições de “=“ (igualdade) e ou restrições do tipo “ ≥ ” (maior ou igual).