Você está na página 1de 12

Sumário

Formulação algébrica
Método Simplex: Simplex Parte 1
Simplex Parte 2
forma padrão
Exemplo

Prof. Lynceo Braghirolli


lynceo.braghirolli@ufsc.br

Programação Linear - Prof. Lynceo Braghirolli


2

Transformação de inequações em
Formulação algébrica equações
Para resolver problemas de Programação Linear Para usar os métodos algébricos, precisamos
com mais de duas variáveis precisamos de uma transformar inequações em equações:
formulação que não dependa do gráfico o Quando a restrição é do tipo menor ou igual ( ), adicionamos
uma variável de folga (f), que representará a diferença entre
Para isso, precisamos responder duas questões os dois lados da inequação
utilizando apenas as equações
o Quando a restrição é do tipo maior ou igual ( ), subtraímos
o Como saber se uma dada solução é viável? uma variável de excesso (e), que representará a diferença
o Quais soluções são candidatas a ponto ótimo? entre os dois lados da inequação

Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
3 4
1. Como saber se uma dada solução 2. Quais soluções são candidatas a
é viável? ponto ótimo?
Exemplo: Seja A uma restrição relacionada a capacidade Nem toda solução viável é candidata a ponto ótimo!
A: Para qualquer ponto no interior é possível traçar outra
x2 P1: , P2: , P3: ,
reta perpendicular a z e que ainda possua pontos sobre
10 a região viável (não precisamos procurar pontos nessa
P3
Sobram 20h da região)
P2 capacidade Usa toda sua Faltam 30h de B
A 4 capacidade capacidade x2 Precisamos procurar a
10 solução ótima apenas nos
x1 P1 e P2 são viáveis, vértices que formam a região
P1
pois de soluções viáveis.
z
5 10 15 20
4
Quando todas as variáveis do problema são A x1
maiores ou iguais a zero as restrições são
satisfeitas (ponto viável). 5 10 15 20
Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
5 6

2. Quais soluções são candidatas a


ponto ótimo?
Exemplo

Como identificar os vértices algebricamente? Versão expandida:


o Um vértice é definido pelas restrições que o formam; (A)
(B)
o Encontramos um vértice quando zeramos algumas das variáveis
do problema expandido!
(A) Variáveis zeradas são Variáveis de V1: V1: ,
B B
x2 (B) chamadas de variáveis
não-básicas.
x2 Básicas: ,
10 10
Variáveis que permanecem Não-básicas: ,
no problema como
incógnitas são chamadas
A 4
4 de variáveis básicas.

A x1 O número de variáveis V1 x1
básicas é igual ao número
de equações. 5 10 15 20
5 10 15 20
Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
7 8
Exemplo Exemplo

Versão expandida: Versão expandida:


(A) (A)
(B) (B)

B Variáveis de V2: V2: , B Variáveis de V3: V3: ,


x2 Básicas: , x2 Básicas: ,
10 10 V3
Não-básicas: , Não-básicas: ,
V2
A 4 A 4

x1 x1
Solução inviável!!
5 10 15 20 5 10 15 20
Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
9 10

Exemplo Exemplo

Versão expandida: Versão expandida:


(A) (A)
(B) (B)

B Variáveis de V4: V4: , B Variáveis de V5: V5: ,


x2 Básicas: , x2 Básicas: ,
10 10
Não-básicas: , Não-básicas: ,

A 4 A 4

V4 x1 V5 x1
Solução inviável!!
5 10 15 20 5 10 15 20
Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
11 12
Exemplo Formulação algébrica

Versão expandida: Vimos que adicionando variáveis de folga e excesso podemos


transformar inequações em equações, criando uma versão
(A) expandida do problema.
(B) Zerando algumas das variáveis do sistema expandido (variáveis
não-básicas) podemos encontrar os vértices do problema.
Ao resolver o sistema de equações para cada vértice, sabemos que
a solução é viável quando todas as variáveis básicas são maiores ou
B Variáveis de V6: V6: , iguais a zero.
x2 Básicas: ,
10 Para descobrir a solução ótima bastaria calcular o valor de z para
Não-básicas: , todos os vértices viáveis e escolher o melhor.
Com o método algébrico, podemos resolver problemas com mais de
A V6 duas variáveis,
4
o mas é ineficiente calcular todos os vértices para descobrir o melhor.
x1 O Simplex organiza os nossos cálculos e elimina a necessidade de
calcular todos os vértices!
5 10 15 20
Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
13 14

Forma Padrão dos Modelos de PL Método simplex


Max Passo 1: Colocar o modelo na forma algébrica
b1 Passo 2: Montar a tabela simplex
Passo 3: Verificar se a solução na tabela é ótima
b2 o Se for a solução ótima interpretar a solução. Caso
contrário, seguir para o passo 4.
Passo 4: Identificar a nova base que gera uma
bm solução melhor.
o Identificar a variável que entra na base;
Na forma padrão, o problema é de maximização, o Identificar a variável que sai da base;
todas as restrições são do tipo
Os passos a seguir (próximos slides) são
e as constantes bi são positivas. o Atualizar a tabela e repetir o passo 3.
válidos para a forma padrão apenas!
Demais casos serão vistos depois.
Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
15 16
Passo 1: Colocar o modelo na forma Passo 1: Colocar o modelo na forma
algébrica algébrica
As inequações devem ser convertidas em equações, A função objetivo deve ser reescrita com todas as
adicionando as variáveis de folga nas restrições . variáveis do lado esquerdo.

s.a. s.a.

Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
17 18

Passo 2: Montar a tabela simplex Passo 2: Montar a tabela simplex

Observe que as variáveis básicas seguem um


padrão: possuem coeficiente 1 apenas em uma
das restrições, sendo os demais coeficientes
iguais a zero.
Alguns livros colocam z x1 x2 f1 f2
na primeira coluna 1 -2 -3 0 0 0 x1 x2 f1 f2
os coeficientes de z z -2 -3 0 0 0
0 1 5 1 0 20
0 2 1 0 1 10 f1 1 5 1 0 20
f2 2 1 0 1 10
Outros autores x1 x2 f1 f2
sugerem colocar a z -2 -3 0 0 0
indicação das
variáveis básicas f1 1 5 1 0 20
associadas a cada f2 2 1 0 1 10
restrição. Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
19 20
Passo 3: Verificar se a solução na
Passo 2: Montar a tabela simplex tabela é ótima
Esse padrão resulta num sistema de equações de Observando os coeficientes das variáveis não-básicas (x1
resolução trivial, onde podemos ler o valor de e x2) na primeira equação (função objetivo),
cada variável básica na última coluna.
x1 x2 f1 f2 podemos concluir que:
z -2 -3 0 0 0 o Se o valor de x1 aumentasse uma unidade, z aumentaria 2
f1 1 5 1 0 20 unidades.
f2 2 1 0 1 10 o Se x2 aumentasse uma unidade, z aumentaria 3 unidades.
o Logo, a solução atual não é ótima! Sempre que houver uma
Sistema formado pelas
Sistema original variável não-básica com coeficiente negativo na primeira linha
variáveis básicas
da tabela simplex a solução não é ótima!
Se fosse a solução ótima interpretar a solução. Caso
contrário, seguir para o passo 4.
Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
21 22

Passo 4: Identificar a nova base que


Passo 3: Exemplo gera uma solução melhor
Na tabela existem duas variáveis com coeficiente Identificar uma nova base significa encontrar
negativo (x1 e x2), portanto a solução não é ótima! um novo vértice candidato a solução ótima.
Seguir para o passo 4.
Para isso precisamos encontrar um novo
conjunto de variáveis básicas que gere uma
solução viável melhor que a anterior.
x1 x2 f1 f2
Etapas:
z -2 -3 0 0 0
f1 1 5 1 0 20 o Identificar a variável que entra na base;
f2 2 1 0 1 10 o Identificar a variável que sai da base;
o Atualizar a tabela;
o Repetir o passo 3.

Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
23 24
Passo 4: Identificar a nova base que Passo 4: Identificar a nova base que
gera uma solução melhor gera uma solução melhor
Identificar a variável que entra na base: Identificar a variável que entra na base:
o Vimos que as variáveis não-básicas com coeficiente Coluna pivô
negativo na tabela tem potencial de melhorar z. x1 x2 f1 f2
o Logo, escolhemos para entrar na base a variável que z -2 -3 0 0 0
mais contribui para a melhora de z (a mais negativa) f1 1 5 1 0 20
f2 2 1 0 1 10

Variável que entra na base é x2, pois é a mais


negativa.

Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
25 26

Passo 4: Identificar a nova base que Passo 4: Identificar a nova base que
gera uma solução melhor gera uma solução melhor
Identificar a variável que sai da base: Identificar a variável que sai da base:
o Ao trocarmos uma variável básica devemos garantir
Coluna pivô
que o próximo vértice também pertença a região de
x1 x2 f1 f2 Teste da mínima
soluções viáveis.
z -2 -3 0 0 0 razão:
o Para isso existe o teste da mínima razão, que Linha
f1 1 5 1 0 20 20/5 = 4
pivô
consiste em dividir o bi por aij, quando aij > 0; f2 2 1 0 1 10 10/1 = 10
o A variável que sai da base é aquela que apresenta o pivô
menor valor no teste da mínima razão. Variável que sai da base é f1 para entrada de x2, pois é a
que apresenta o menor valor no teste da mínima razão.

Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
27 28
Passo 4: Identificar a nova base que Passo 4: Identificar a nova base que
gera uma solução melhor gera uma solução melhor
O teste da mínima razão indica qual o valor que a variável que Atualizar a tabela:
entra na base irá assumir para cada uma das variáveis candidatas a
sair da base. o Consiste em resolver o sistema de equações considerando o
novo conjunto de variáveis básicas (x2 e f2);
Queremos o menor valor positivo pois esse corresponde a um
vértice que pertence a região viável. o Na prática, consiste em reproduzir o padrão de valores que
estão na variável que sai da base na coluna da variável que
B C entra na base utilizando operações algébricas elementares.
Se x2 for 10, a restrição A será
x2 inviável:
10
Se f2 sair da base, f2=0. x1 x2 f1 f2
Logo, x2 será 10 z -2 -3 0 0 0
A 4 f1 1 5 1 0 20
Se f1 sair da base, f1=0. f2 2 1 0 1 10
Logo, x2 será 4
x1
D
Vértice
5 10 15 20
Atual
Programação Linear - Prof. Lynceo Braghirolli
29 30

Passo 4: Identificar a nova base que Passo 4: Identificar a nova base que
gera uma solução melhor gera uma solução melhor
As operações elementares consistem em: Exemplo:
o Multiplicar a linha pivô por uma constante, e o Para zerar os valores na coluna pivô, vamos utilizar a linha pivô
multiplicada por uma constante (m).
o Adicionar a linha pivô nas outras linhas
o
Isso equivale ao método da adição para
o Para cada um dos valores:
resolução de sistemas de equações.

x1 x2 f1 f2
z -2 -3 0 0 0
f1 1 5 1 0 20
f2 2 1 0 1 10

Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
31 32
Passo 4: Identificar a nova base que Passo 4: Identificar a nova base que
gera uma solução melhor gera uma solução melhor
Atualizando a linha 1 Atualizando a linha 2
o Nosso objetivo é zerar o valor na coluna pivô: -3 o Nosso objetivo é transformar o pivô (5) no valor 1;
x1 x2 f1 f2 x1 x2 f1 f2
z -2 -3 0 0 0 z -2 -3 0 0 0
1. Calculamos m: f1 1 5 1 0 20 1. Atualizamos a f1 1 5 1 0 20
variável básica f1 para x2
f2 2 1 0 1 10 f2 2 1 0 1 10
x1 x2 f1 f2 x1 x2 f1 f2
2. Atualizamos a Linha2
2. Atualizamos a Linha1 z 0 0 12 dividindo pelo pivô z 0 0 12
Coluna1= Coluna1=
Coluna2= Coluna2= x2 1 0 4
Coluna3= Coluna3=
Coluna4= Coluna4=
Coluna5= Coluna5=
33 34

Passo 4: Identificar a nova base que Passo 4: Identificar a nova base que
gera uma solução melhor gera uma solução melhor
Atualizando a linha 3 A nova tabela representa um novo vértice:
o z melhorou, passando de 0 para 12
o Nosso objetivo é zerar o valor na coluna pivô: 1
o x2 agora vale 4 (produzir 4 un.)
x1 x2 f1 f2
o f2 agora vale 6 (existem 6 horas de folga em B)
z -2 -3 0 0 0 x1 x2 f1 f2
1. Calculamos m: f1 1 5 1 0 20
B C z 0 0 12
f2 2 1 0 1 10
x2
x1 x2 f1 f2 10 x2 1 0 4

2. Atualizamos a Linha1 z 0 0 12 Vértice f2 0 1 6


Coluna1= Atual
A 4
Coluna2= x2 1 0 4
Coluna3= x1
f2 0 1 6 D
Coluna4= Vértice 5 10 15 20
Coluna5= Anterior
35 36
Passo 3: Verificar se a solução na Passo 4: Identificar a nova base que
tabela é ótima gera uma solução melhor
Repetimos o passo 3! x1 x2 f1 f2
Min.
o Na tabela existe uma variável com coeficiente negativo (x1), Razão
z 0 0 12
portanto a solução não é ótima! Seguir para o passo 4.

x1 x2 f1 f2 x2 1 0 4

z 0 0 12
f2 0 1 6

x2 1 0 4
Variável que entra: x1
f2 0 1 6
Variável que sai: f2
Atualizar a tabela!

Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
37 38

Passo 4: Identificar a nova base que Passo 3: Verificar se a solução na


gera uma solução melhor tabela é ótima
x1 x2 f1 f2
Repetimos o passo 3!
z 0 0 12 o Na tabela não existem variáveis com coeficiente negativo,
portanto a solução é ótima!
x2 1 0 4

f2 0 1 6 x1 x2 f1 f2

z 0 0
x1 x2 f1 f2
x2 0 1
z 0 0

x1 1 0
x2 0 1

x1 1 0

Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
39 40
Passo 3: Interpretar a solução ótima Exercício
O melhor desempenho de z é 50/3
Na solução ótima, x1 = 10/3 e x2 = 10/3.
f1 = f2 = 0 (variáveis não-básicas)
x1 x2 f1 f2 sa
B C z 0 0

x2 x2 0 1
10

Vértice x1 1 0
Anterior Vértice
A 4 Atual

x1
D
5 10 15 20
Programação Linear - Prof. Lynceo Braghirolli
41 42

Exercício Exercício

Tabela inicial Segunda tabela

x1 x2 f1 f2 f3 x1 x2 f1 f2 f3
z -1 -1,5 0 0 0 0 z -¼ 0 0 ¾ 0 90
f1 2 2 1 0 0 160 f1 1 0 1 -1 0 40
f2 1 2 0 1 0 120 x2 ½ 1 0 ½ 0 60
f3 4 2 0 0 1 280 f3 3 0 0 -1 1 160

Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
43 44
Exercício Exercício

Terceira tabela

x1 x2 f1 f2 f3
sa
z 0 0 ¼ ½ 0 100
x1 1 0 1 -1 0 40
x2 0 1 -½ 1 0 40
f3 0 0 -3 2 1 40
Solução ótima:
Z=100
x1 = 40, x2 = 40 e f3 = 40
f1 = f2 = 0 (variáveis não-básicas)

Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
45 46

Exercício Exercícios

Tableau x1 x2 x3 f1 f2 f3 SILVA, E.M.; SILVA, E.M.; GOLÇALVES, V.; MUROLO, A.C.


Z -4 -6 -10 0 0 0 0 Pesquisa operacional para os cursos de administração e
f1 0 30 10 1 0 0 540
f2 15 5 -10 0 1 0 400 engenharia, 4. ed. São Paulo: Atlas, 2010
f3 3 6 0 0 0 1 120
Exercícios 1 ao 8 da lista 3 (pg. 50)
Tableau x1 x2 x3 f1 f2 f3
Z -4 24 0 1 0 0 540
x3 0 3 1 0,1 0 0 54
f2 15 35 0 1 1 0 940
f3 3 6 0 0 0 1 120

Tableau x1 x2 x3 f1 f2 f3
Z 0 32 0 1 0 1,333333 700
x3 0 3 1 0,1 0 0 54
f2 0 5 0 1 1 -5 340
x1 1 2 0 0 0 0,333333 40

Programação Linear - Prof. Lynceo Braghirolli Programação Linear - Prof. Lynceo Braghirolli
47 48

Você também pode gostar