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

Resolução de Sistemas Lineares por Método Simplex, Esquemas de Direito

A resolução de sistemas lineares utilizando o método simplex. O método simplex é um algoritmo iterativo para resolver problemas de programação linear, que consiste em encontrar a solução ótima de um problema de otimização linear sujeito a restrições lineares. O documento aborda conceitos como variáveis básicas e não-básicas, tabela canônica, pivotamento, critérios de entrada e saída de variáveis na base, tratamento de restrições de limite inferior, entre outros. São apresentados exemplos detalhados de aplicação do método simplex passo a passo, incluindo a resolução de problemas de maximização e minimização. O documento também discute questões relacionadas à degenerescência e à prevenção de ciclagem no algoritmo simplex. Trata-se de um material abrangente e detalhado sobre a resolução de sistemas lineares por meio do método simplex, que pode ser útil para estudantes e profissionais da área de otimização e pesquisa operacional.

Tipologia: Esquemas

2022

Compartilhado em 14/02/2023

leonardo-soglia-9
leonardo-soglia-9 🇧🇷

3 documentos

1 / 47

Toggle sidebar

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

Não perca as partes importantes!

bg1
33
2 – O Método Simplex
!O método simplex é um algoritmo que procura pela solução ótima
de um PPL, realizando duas operações elementares sobre as linhas
do problema:
!Multiplicar todos os coeficientes de uma linha por uma
constante não-nula.
!Substituir uma linha por outra, obtida a partir de uma
combinação linear de duas linhas do problema.
!Estas operações elementares, quando são feitas sobre equações,
não alteram o conjunto de soluções factíveis do problema (ou seja,
não altera a solução do problema).
!Exemplo:
(a): 3x1 – 7x2 = -21
(b): x1 + x2 = 2
x1 = 2 – x2
3(2 – x2) – 7x2 = -21
-10x2 = -27
x2 = 27/10
x1 = 2 – 27/10 = -7/10
2(b) + (a): 5x1 – 5x2 = -17
4(b): 4x1 + 4x2 = 8
x1 = (8 – 4x2)/4 = 2 – x2
5(2 – x2) – 5x2 = -17
-10x2 = -27
x2 = 27/10
x1 = 2 – 27/10 = -7/10
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f

Pré-visualização parcial do texto

Baixe Resolução de Sistemas Lineares por Método Simplex e outras Esquemas em PDF para Direito, somente na Docsity!

2 – O Método Simplex

! O método simplex é um algoritmo que procura pela solução ótima

de um PPL, realizando duas operações elementares sobre as linhas

do problema:

! Multiplicar todos os coeficientes de uma linha por uma

constante não-nula.

! Substituir uma linha por outra, obtida a partir de uma

combinação linear de duas linhas do problema.

! Estas operações elementares, quando são feitas sobre equações,

não alteram o conjunto de soluções factíveis do problema (ou seja,

não altera a solução do problema).

! Exemplo:

(a): 3x 1 – 7x 2 = - (b): x 1 + x 2 = 2 x 1 = 2 – x 2 3(2 – x 2 ) – 7x 2 = - -10x 2 = - x 2 = 27/ x 1 = 2 – 27/10 = -7/ 2(b) + (a): 5x 1 – 5x 2 = - 4(b): 4x 1 + 4x 2 = 8 x 1 = (8 – 4x 2 )/4 = 2 – x 2 5(2 – x 2 ) – 5x 2 = - -10x 2 = - x 2 = 27/ x 1 = 2 – 27/10 = -7/

! Mas, em geral, um PPL é um conjunto de inequações e, neste caso,

estas duas operações elementares, normalmente, alteram o

conjunto de soluções viáveis.

Exemplo:

! Portanto, para que as operações elementares possam ser feitas é

importante transformar o PPL em um sistema de equações.

Transformação do PPL para a Forma Padrão

! PPL na forma padrão: min { cx | Ax = b, x ≥ 0 }. Portanto, além de

transformar as inequações em equações, a forma padrão de um PPL

exige transformações para as seguintes situações:

(a): x 1 ≥ 0 (b): x 2 ≥ 0 (a) + 2(b): x 1 + 2x 2 ≥ 0 (b): x 2 ≥ 0 x 1 x 2 x 1 x 2 x 1 + 2x 2 = 0

Vamos supor que isto ocorre na i-ésima restrição:

ai1x 1 + a 12 x 2 + ... + ainxn = bi onde ai1 ≠ 0.

Logo, podemos escrever:

x 1 = (bi – ai2x 2 – ... – ainxn)/ai

e, portanto, x 1 pode ser eliminada do problema (substituída pelo

lado direito da equação). Isto é interessante porque reduz o

problema para (n – 1) variáveis e (m – 1) restrições (a i-ésima

restrição será eliminada). Se o lado direito da equação acima for

negativo (x 1 < 0), pode-se transformar o problema substituindo x 1

por –y 1 , y 1 > 0.

! Restrições com lados direitos negativos

Se existir restrição tal que bi < 0, multiplicar toda a restrição por -1.

! Função-objetivo

O primeiro passo é eliminar termos constantes da função-objetivo.

Isto não altera o conjunto de soluções ótimas do problema. Em

seguida, expressar a função-objetivo na forma de minimização:

max { cx } é equivalente a min { – cx }

! Com tais transformações,

um PPL na forma padrão

pode ser escrito como:

! Portanto, podemos representar um PPL padrão como uma tabela:

coeficientes de custo (função-objetivo) matriz de restrições variáveis do problema (incluindo as variáveis de folga) termos independentes

Min z = c j x j

j = 1

n

∑ (^ c^ j x^ j

j = 1

n

∑ −^ z^ =^0 )

s. a a

ij

x

j

= b

i

( i = 1 ,!, m )

j = 1

n

! Numa SVB:

! valores das variáveis não-básicas = zero

! vetores-coluna das variáveis básicas: matriz identidade

! Exemplo:

! Portanto, uma SVB é: x 1 = 0, x 2 = 0, x 3 = 6, x 4 = 6

! O valor da FO, neste caso, é: z = – x1 – x2 = 0

max x 1 + x 2
s.a x 1 + 2x 2 ≤ 6
2x 1 + x 2 ≤ 6
x 1 , x 2 ≥ 0
min - x 1 - x 2
s.a x 1 + 2x 2 + x 3 = 6
2x 1 + x 2 + x 4 = 6
x 1 , x 2 , x 3 , x 4 ≥ 0

forma padrão: x1 x2 x3 x4 -z b 1 2 1 0 0 6 2 1 0 1 0 6 -1 -1 0 0 1 0 variáveis não- básicas variáveis básicas valor de –z (negativo do valor da FO)

! Neste caso, é fácil obter a região viável graficamente:

! Método simplex: caminha pelos pontos extremos para encontrar a

solução ótima do problema.

! O problema na forma canônica também pode ser representado por

uma tabela (conhecida como tabela canônica):

x 1 x 2 2x 1 + x 2 = 6 x 1 + 2x 2 = 6 (0,0) (3,0) (0,3) (2,2)

Observe que o ponto

(x 1 , x 2 ) = (0, 0) é um

vértice da região viável.

Toda SVB corresponde a

um ponto extremo

(vértice) do conjunto de

soluções viáveis.

VB x 1 x 2 x 3 x 4 -z b x 3 1 2 1 0 0 6 x 4 2 1 0 1 0 6 -z -1 -1 0 0 1 0 variáveis básicas mais à frente, esta coluna ficará subentendida.

! Esta nova SVB pode ser obtida modificando-se a tabela da SVB 1 de

modo que os vetores-coluna da variáveis x 3 e x 1 formem uma matriz

identidade, ou seja, de forma que (x 3 , x 1 ) forme uma nova base.

SVB 1 :

! Como obter a nova SVB?

VB x 1 x 2 x 3 x 4 -z b x 3 1 2 1 0 0 6 x 4 2 1 0 1 0 6 -z -1 -1 0 0 1 0 Base atual: (x 3 , x 4 ) Nova base: (x 3 , x 1 ) Sai da base : variável x 4 Entra na base : variável x 1 Pivô : interseção da linha da variável que sai da base com a coluna da variável que entra na base. VB x 1 x 2 x 3 x 4 -z b x 3 0 3/2 1 -1/2 0 3 x 1 1 1/2 0 1/2 0 3 -z 0 -1/2 0 1/2 1 3 Notar que –z = 3, ou seja, z = -

! SVB 2 :

! Dá para diminuir ainda mais o valor da FO?

! Existe nesta SVB uma variável não-básica com custo negativo?

! Variável que entra na base: x 2

! Vamos admitir que x 3 sai da base. Por que esta escolha?

Temos:

Devemos, então:

! dividir a 1ª linha pelo valor do pivô = 3/

! substituir a 2ª linha por: (2ª linha) – (1/2)*(nova 1ª linha)

! substituir a 3ª linha por: (3ª linha) – (-1/2)*(nova 1ª linha)

VB x 1 x 2 x 3 x 4 -z b x 3 0 3/2 1 -1/2 0 3 x 1 1 1/2 0 1/2 0 3 -z 0 -1/2 0 1/2 1 3 VB x 1 x 2 x 3 x 4 -z b x 3 0 3/2 1 -1/2 0 3 x 1 1 1/2 0 1/2 0 3 -z 0 -1/2 0 1/2 1 3

! Algumas questões:

! Por que, na 1ª iteração, foi escolhida a variável não-básica x 1?

Poderia ter sido escolhida a variável não-básica x 2 , pois seu

custo também era negativo.

! Por que a variável x 1 substituiu a variável x 4 e não a variável x 3

na base?

! Por que, na 2ª iteração, a variável não-básica x 2 (a única

escolha possível) substituiu a variável x 3 e não a variável x 1 na

base?

! Estas questões podem ser resumidas como:

! Na forma canônica, os custos referentes às variáveis básicas devem

ser iguais a zero. Os demais valores da linha de custos são

denominados coeficientes de custo relativo. O termo "relativo" é

usado porque os valores desses coeficientes dependem do vetor-

base escolhido. Os valores desses coeficientes correspondem a

quanto é possível alterar o valor da FO, para cada alteração unitária

na variável não-básica correspondente, mantida a viabilidade.

Como escolher a variável (básica) que sai da base e como escolher a variável (não-básica) que entra na base?

Solução Ótima

! Como vimos, o critério de otimalidade do algoritmo simplex é:

! Observe, pela última linha da tabela, que:

Como todos os xj ≥ 0, se c'j ≥ 0, então FO ≥ z'. Logo, como o

problema é de minimização, z' é o valor da solução ótima.

Solução Ilimitada

! A solução de um problema será ilimitada (ou seja, diverge para –∞)

se, na tabela canônica correspondente a uma SVB existir uma

coluna s tal que:

A SVB atual é ótima se todos os coeficientes de custo relativo são
não-negativos.

VB x 1 ... xn -FO b c' 1 ... c'n 1 - z'

∑ c ʹ^ j x^ j −^ FO^ =^ − z ʹ

FO = z ʹ + ∑ c ʹ j x j

c's < 0 e a'is ≤ 0 (i = 1, ..., m)

! Então: x 1 = b' 1 – a'1sλ

xm = b'm – a'msλ

! Por outro lado: FO = z' + c'sλ e, portanto, como c's < 0 e λ ≥ 0,

FO ≤ z'. Assim, quanto maior for o λ escolhido, menor será o valor

da solução. Portanto, para um λ arbitrariamente grande, teremos

uma solução viável e o valor de FO irá divergir para –∞.

VB ... xs x 1 ... xm b x 1 a'1s 1 ... 0 b' 1 ... ... ... ... ... xm a'ms 0 ... 1 b'm -FO ... c's - z' € a 1 ʹ s λ + x 1 = b 1 ʹ ! a ʹ ms λ + xm = b ʹ m c ʹ s λ − FO = − z ʹ Como a'is ≤ 0 (i = 1, ..., m) e λ ≥ 0, então xi ≥ 0 (i = 1, ..., m), ou seja, esta é uma solução viável (não necessariamente um vértice da região viável).

Analogamente : um PPL cuja FO deve ser maximizada terá solução
ilimitada (diverge para +∞) se para uma SVB existir uma coluna s tal
que: c's > 0 e a'is ≤ 0 (i = 1, ..., m).

! Se nem o critério de otimalidade e nem o critério de solução

ilimitada são satisfeitos, o algoritmo simplex move-se de uma

solução viável x' para uma solução viável x" melhor (z(x") ≤ z(x'))

escolhendo uma variável não-básica para entrar na base.

! Toda variável não-básica xj tal que c'j < 0 é uma candidata a ser

selecionada.

! Quando várias escolhas são possíveis, um bom critério é escolher a

variável xk tal que:

c'k = mínimo { c'j } (j = 1, ..., n)

! Vamos imaginar que o vetor-base atual é (x 1 , ..., xm) e que a

variável não-básica xr foi escolhida para entrar na base. Neste caso,

podemos escrever:

Não existe uma justificativa teórica sustentando que esta regra resulte em um esforço computacional menor para resolver o problema (menor número de iterações). Existe apenas uma evidência empírica de que se trata de um bom critério.

! Uma vez escolhidas a variável que entra (xr) e a variável que sai (xs)

da base deve-se produzir uma nova tabela canônica relativa à nova

base. Para isso, devem ser efetuadas as seguintes operações:

! dividir a linha do pivô (linha s) pelo valor do pivô = a'sr

! substituir cada uma das demais linhas i ≠ s da tabela por:

(linha i atual) – a'ir * (nova linha do pivô)

Exemplo:

Tabela canônica:

max x 1 + 2x 2 + 3x 3 – x 4
s.a x 1 + 2x 2 + 3x 3 ≤ 15
2x 1 + x 2 + 5x 3 ≤ 20
x 1 + 2x 2 + x 3 + x 4 ≤ 10
x 1 , x 2 , x 3 , x 4 ≥ 0
min – x 1 – 2x 2 – 3x 3 + x 4
s.a x 1 + 2x 2 + 3x 3 + x 5 = 15
2x 1 + x 2 + 5x 3 + x 6 = 20
x 1 + 2x 2 + x 3 + x 4 + x 7 = 10
xi ≥ 0 (i = 1, ..., 7)

forma padrão VB x 1 x 2 x 3 x 4 x 5 x 6 x 7 b x 5 1 2 3 0 1 0 0 15 x 6 2 1 5 0 0 1 0 20 x 7 1 2 1 1 0 0 1 10 -FO -1 -2 -3 1 0 0 0 0

SVB 1 :

SVB 2 :

VB x 1 x 2 x 3 x 4 x 5 x 6 x 7 b razões x 5 1 2 3 0 1 0 0 15 15/3 = 5 x 6 2 1 5 0 0 1 0 20 20/5 = 4 x 7 1 2 1 1 0 0 1 10 10/1 = 10 -FO -1 -2 -3 1 0 0 0 0 variável que entra: coluna do pivô

variável que sai: linha do pivô

pivô = 5

VB x 1 x 2 x 3 x 4 x 5 x 6 x 7 b razões x 5 -1/5 7/5 0 0 1 -3/5 0 3 3/(7/5) = 15/ x 3 2/5 1/5 1 0 0 1/5 0 4 4/(1/5) = 20 x 7 3/5 9/5 0 1 0 -1/5 1 6 6/(9/5) = 30/ -FO 1/5 -7/5 0 1 0 3/5 0 12