Escolar Documentos
Profissional Documentos
Cultura Documentos
de Decisão
Material Teórico
Programação Linear: Métodos e Aplicações
Revisão Textual:
Profa. Ms. Fátima Furlan
Programação Linear: Métodos
e Aplicações
• Método Simplex
• Ferramentas Computacionais
• Roteiro para Utilização do Software “SIMPLEX in PHP”
OBJETIVO DE APRENDIZADO
··O objetivo desta unidade é detalhar os procedimentos para aplicação
do método SIMPLEX para a resolução de problemas de Programação
Linear, introduzindo os conceitos de análise e interpretações econômi-
cas a partir dessa aplicação.
Orientações de estudo
Para que o conteúdo desta Disciplina seja bem
aproveitado e haja uma maior aplicabilidade na sua
formação acadêmica e atuação profissional, siga
algumas recomendações básicas:
Conserve seu
material e local de
estudos sempre
organizados.
Aproveite as
Procure manter indicações
contato com seus de Material
colegas e tutores Complementar.
para trocar ideias!
Determine um Isso amplia a
horário fixo aprendizagem.
para estudar.
Mantenha o foco!
Evite se distrair com
as redes sociais.
Seja original!
Nunca plagie
trabalhos.
Não se esqueça
de se alimentar
Assim: e se manter
Organize seus estudos de maneira que passem a fazer parte hidratado.
da sua rotina. Por exemplo, você poderá determinar um dia e
horário fixos como o seu “momento do estudo”.
No material de cada Unidade, há leituras indicadas. Entre elas: artigos científicos, livros, vídeos e
sites para aprofundar os conhecimentos adquiridos ao longo da Unidade. Além disso, você também
encontrará sugestões de conteúdo extra no item Material Complementar, que ampliarão sua
interpretação e auxiliarão no pleno entendimento dos temas abordados.
Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de discussão,
pois irão auxiliar a verificar o quanto você absorveu de conhecimento, além de propiciar o contato
com seus colegas e tutores, o que se apresenta como rico espaço de troca de ideias e aprendizagem.
UNIDADE Programação Linear: Métodos e Aplicações
Contextualização
Para resolvermos problemas de programação linear, cujos modelos matemáticos
possuam apenas duas variáveis de decisão, podemos aplicar, com certo grau de
facilidade, as técnicas gráfica e analítica. No entanto, para problemas que envolvem
três ou mais variáveis de decisão, essas técnicas são inviáveis. Nesses casos, lança-
se mão de outros recursos, como por exemplo, o método SIMPLEX.
8
Método Simplex
O método Simplex, desenvolvido em 1947 pelo matemático norte-americano
George Bernard Dantzig, é um procedimento algébrico para solucionar problemas
de programação linear. Baseia-se na aplicação de um algoritmo com o propósito
de se obter a otimização de sistemas de equações lineares.
INÍCIO
Obter modelo
matemático
Encontrar
solução viável
Solução
ótima?
Encontrar
solução viável
melhor FIM
9
9
UNIDADE Programação Linear: Métodos e Aplicações
Uma empresa fabrica dois produtos: A e B, sendo que o lucro por unidade do
produto A é R$ 10,00 e do produto B é R$ 8,00. Na manufatura desses produtos são
empregadas apenas duas matérias-primas: MP1 e MP2, na seguinte proporção: 3
unidades de MP1 e 3 unidades de MP2 para cada unidade do produto A e 6 unidades
de MP1 e 3 unidades de MP2 para cada unidade do produto B. A empresa possui
um estoque de 300 unidades de MP1 e 480 unidades de MP2. Considerando que as
variáveis de decisão são X1 (quantidade de A a ser produzida) e X2 (quantidade de B
a ser produzida), quais devem ser as quantidades de A e B a serem produzidas para
que a empresa obtenha o lucro máximo?
Vamos agora aplicar os quatro passos básicos do método Simplex para resolver
esse problema.
10
Importante! Importante!
Para cada restrição técnica do problema é necessário introduzir uma variável de folga
específica (a restrição de não negatividade não é uma restrição técnica, portanto, ela
não deve ser considerada). No exemplo apresentado, temos apenas duas restrições
técnicas, sendo assim, introduzimos duas variáveis de folga, as quais identificamos como
X3 e X4. Veja que para nomear essas variáveis, estamos adotando a letra “X” seguida de
um identificador numérico sequencial. Como já temos as variáveis de decisão X1 e X2, os
identificadores das variáveis de folga devem ser X3 e X4.
X1 X2 X3 X4 b
Função objevo e Z
restrições técnicas,
compondo as linhas R1
da tabela R2
11
11
UNIDADE Programação Linear: Métodos e Aplicações
X1 , X2 , X4 = 480
Apesar de esse resultado ser uma solução viável do problema, fica claro que ele
não é a solução ótima. Portanto, devemos encontrar outra solução.
X1 X2 X3 X4 b
Z -10 -8 0 0 0
X1 3 3 1 0 300
X2 6 3 0 1 480
12
Passo 4 - Determinação da próxima solução viável
Para encontrarmos a próxima solução viável, devemos realizar uma sequência
de operações sobre a tabela de coeficientes original, com o objetivo de gerar uma
nova tabela otimizada. Essa sequência de operações tem o propósito de realizar a
otimização matemática das equações do modelo por meio de iterações (repetições),
até que a solução ótima seja encontrada. Como citado anteriormente, a solução
ótima é determinada quando todos os coeficientes da função objetivo forem
positivos ou zero. Dessa forma, o “Passo 4” deve ser repetido enquanto existir
pelo menos um valor negativo na linha Z da tabela de coeficientes.
INÍCIO
Passo 1
Elaboração do modelo matemático
Passo 2
Montagem da tabela de coeficientes
Passo 3
Determinação da solução inicial
Passo 4
Determinação da próxima solução viável
a. Identificação da "variável que entra"
b. Identificação da linha pivô
c. Cálculo a nova linha pivô
d. Cálculo das novas linhas da tabela
Solução ótima?
FIM
13
13
UNIDADE Programação Linear: Métodos e Aplicações
Primeira Iteração
Identificação da “variável que entra”
Esta operação consiste em encontrar a variável de decisão que apresenta a
maior contribuição para o aumento da função objetivo, ou seja, aquela que possui
como coeficiente o maior valor absoluto (essa variável é tratada como “variável
que entra”, pois, será ela que entrará na base para a composição da nova tabela).
Analisando a nossa tabela original, facilmente podemos ver que o maior valor
absoluto existente na linha da função objetivo é 10, que corresponde ao coeficiente
da variável X1. Portanto, a variável que “entra” é a própria X1. Devemos então
destacar a coluna que representa essa variável, conforme mostrado a seguir:
X1 X2 X3 X4 b
Z -10 -8 0 0 0
R1 3 3 1 0 300
R2 6 3 0 1 480
X1 X2 X3 X4 b
Z -10 -8 0 0 0
R1 3 3 1 0 300 (300 ÷ 3 = 100)
R2 6 3 0 1 480 (480 ÷ 6 = 80)
A linha pivô é aquela que apresenta o menor quociente positivo obtido por
meio da divisão do termo independente pelo coeficiente da “variável que entra”.
No nosso caso, o menor valor positivo encontrado é 80, portanto, a linha pivô da
nossa tabela é aquela que representa a restrição R2. Devemos então destacá-la,
conforme segue:
14
X1 X2 X3 X4 b
Z -10 -8 0 0 0
R1 3 3 1 0 300
R2 6 3 0 1 480
X1 X2 X3 X4 b
Z -10 -8 0 0 0
R1 3 3 1 0 300
R2 6 3 0 1 480
(÷6)
X1 X2 X3 X4 b
Z -10 -8 0 0 0
R1 3 3 1 0 300
R2 1 1/2 6 1/6 80
Vamos começar pela primeira linha, que corresponde à função objetivo. Pri-
meiramente, devemos identificar, nessa linha, o valor do coeficiente da “variá-
vel que entra”, que nosso caso é o valor da variável X1. Em seguida, devemos
multiplicar todos os elementos da linha pivô atual pelo oposto desse valor (se
negativo, vira positivo, e vice-versa), e somá-los aos respectivos coeficientes da
função objetivo. Dessa forma, obteremos a nova linha da função Z. Para melhor
compreensão desse procedimento, vamos realizá-lo passo a passo:
15
15
UNIDADE Programação Linear: Métodos e Aplicações
X1 X2 X3 X4 b
Z -10 -8 0 0 0
R1 3 3 1 0 300
R2 1 1/2 0 1/6 80
II. Multiplicar todos os elementos da linha pivô atual pelo oposto do valor
encontrado no procedimento anterior.
X1 X2 X3 X4 b
Z -10 -8 0 0 0
Linha pivô atual
R1 3 3 1 0 300
R2 1 1/2 0 1/6 80 Coeficientes da linha pivô
multiplicados por 10 (oposto
do valor - 10 que é o coeficiente
(x 10) de X1 na função objetivo)
10 5 0 5/3 800
E assim teremos a nova linha da função objetivo. Nossa nova tabela de coeficien-
tes tem agora o seguinte aspecto:
16
X1 X2 X3 X4
b
Z -10 -3 0 5/3 800
R1 3 3 1 0 300
R2 1 1/2 0 1/6 80
X1 X2 X3 X4 b
Z 0 -3 0 5/3 800
R1 3 3 1 0 300
R2 1 1/2 0 1/6 80
II. Multiplicar todos os elementos da linha pivô atual pelo oposto do valor
encontrado no procedimento anterior.
Coenficiente da
“variável que entra” (3)
X1 X2 X3 X4
b
Z 0 -3 0 5/3 800
Linha pivô atual
R1 3 3 1 0 300
R2 1 1/2 0 1/6 80 Elementos da linha pivô
multiplicados por -3 (oposto
do valor 3, que é o coeficiente
(x -3) de X1 na restrição R1)
-3 -3/2 0 -1/2 -240
17
17
UNIDADE Programação Linear: Métodos e Aplicações
E assim teremos a nova linha da restrição R1, concluindo desta forma a primeira
iteração do algoritmo Simplex. Nossa nova tabela de coeficientes tem agora o
seguinte aspecto:
X1 X2 X3 X4 b
Z 0 -3 0 5/3 800
R1 0 3/2 1 -1/2 60
R2 1 1/2 0 1/6 80
Segunda Iteração
Identificação da “variável que entra”
Observando a nova tabela, podemos notar que a “variável que entra” agora é a
X2, pois é ela, dentre as variáveis de decisão (X1 e X2), que apresenta o coeficiente
de maior valor absoluto na linha da função objetivo.
A variável que entra é a X2 (possui o
coeficiente de maior valor absoluto
na linha da função Z)
X1 X2 X3 X4 b
Z 0 -3 0 5/3 800
R1 0 3/2 1 -1/2 60
R2 1 1/2 0 1/6 80
18
Identificação da linha pivô
Já sabemos que a linha pivô, chamada também de base, é uma das linhas que
representam as restrições do problema (R1 ou R2). Mais precisamente, é aquela
onde o termo independente “b”, dividido pelo respectivo coeficiente da “variável
que entra”, gerará o menor resultado. Na nossa nova tabela, podemos constatar
que a linha pivô é a linha da restrição R1, pois, o quociente da divisão de “b” por
X2 é 40 (60÷3/2=40), e esse valor é menor que o valor calculado para a linha da
restrição R2 (80÷1/2=160), conforme podemos observar a seguir.
X1 X2 X3 X4 b
Z 0 -3 0 5/3 800
R1 0 3/2 1 -1/2 60 (60 ÷ 3/2 = 40)
R2 1 1/2 0 1/6 80 (80 ÷ 1/2 = 160)
X1 X2 X3 X4 b
Z 0 -3 0 5/3 800
R1 0 3/2 1 -1/2 60
R2 1 1/2 0 1/6 80
(÷ 3/2)
X1 X2 X3 X4 b
Z 0 -3 0 5/3 800
R1 0 1 2/3 -1/3 40
R2 1 1/2 0 1/6 80
19
19
UNIDADE Programação Linear: Métodos e Aplicações
X1 X2 X3 X4 b
Z 0 -3 0 5/3 800
Linha pivô atual
R1 0 1 2/3 -1/3 40
R2 1 1/2 0 1/6 80 Elementos da linha pivô
mulplicados por 3 (oposto do
valor -3, que é o coeficiente de
(x 3) 0 3 2 -1 120 X2 na função objevo)
X1 X2 X3 X4 b
Z 0 0 2 2/3 920 Nova linha da função objevo
R1 0 1 2/3 -1/3 40
R2 1 1/2 0 1/6 80
Resta agora recalcular a nova linha da restrição R2. Devemos aplicar o mesmo
procedimento, conforme demonstração a seguir:
X1 X2 X3 X4 b
Z 0 0 2 2/3 920
Linha pivô atual
R1 0 1 2/3 -1/3 40
R2 1 1/2 0 1/6 80 Elementos da linha pivô
mulplicados por -1/2 (oposto do
valor 1/2, que é o coeficiente de
(x -1/2) 0 -1/2 -1/3 1/6 -20 X2 na restrição R2
20
A nova tabela terá o seguinte aspecto:
X1 X2 X3 X4 b
Z 0 0 2 2/3 920
R1 0 1 2/3 -1/3 40
R2 1 0 -1/3 1/3 60 Nova linha da restrição R2
Observe que agora não existe nenhum valor negativo na linha da função objetivo
Z. Isso sinaliza que a solução ótima do problema foi encontrada.
Coluna da variável X1
X1 X2 X3 X4 b
Z 0 0 2 2/3 920
Valor da variável X1
21
21
UNIDADE Programação Linear: Métodos e Aplicações
Coluna da variável X2
X1 X2 X3 X4 b
Z 0 0 2 2/3 920
Linha onde o
coeficiente de X2 é R1 0 1 2/3 -1/3 40
igual a 1
R2 1 0 -1/3 1/3 60
Valor da variável X2
ENUNCIADO
Uma empresa fabrica dois produtos: A e B, sendo que o lucro por unidade do
produto A é R$ 10,00 e do produto B é R$ 8,00. Na manufatura desses produtos
são empregadas apenas duas matérias-primas: MP1 e MP2, na seguinte proporção:
3 unidades de MP1 e 3 unidades de MP2 para cada unidade do produto A e 6
unidades de MP1 e 3 unidades de MP2 para cada unidade do produto B. A empresa
possui um estoque de 300 unidades de MP1 e 480 unidades de MP2. Considerando
que as variáveis de decisão são X1 (quantidade de A a ser produzida) e X2 (quantidade
de B a ser produzida), quais devem ser as quantidades de A e B a serem produzidas
para que a empresa obtenha o lucro máximo?
MODELO MATEMÁTICO
Maximizar Z = 10.X1 + 8.X2
Sujeito a
3.X1 + 3.X2 ≤ 300 (restrição de MP1)
6.X1 + 3.X2 ≤ 480 (restrição de MP2)
X1 , X2 ≥ 0 (restrição de não negatividade)
Sabendo-se que a solução ótima é dada por X1=60 e X2=40 (conforme aplicação
do método Simplex), podemos dizer que o lucro máximo será obtido se a empresa
fabricar 60 unidades do produto A e 40 unidades do produto B. O valor do lucro
pode ser encontrado substituindo-se as variáveis X1 e X2 da função objetivo Z por
seus respectivos valores:
Z = 10.X1 + 8.X2
Z = 10.(60) + 8.(40)
Z = 920
22
Observe que esse valor pode ser obtido através da própria tabela de coeficientes:
X1 X2 X3 X4 b
Lucro
Z 0 0 2 2/3 920
Quandade do produto B a ser
R1 0 1 2/3 -1/3 40 fabricada (X2)
R2 1 0 -1/3 1/3 60
Quandade do produto A a ser
fabricada (X1)
Para que a empresa obtenha o lucro máximo de R$ 920,00, ela deverá produzir 60
unidades do produto A e 40 unidades do produto B.
Ferramentas Computacionais
É fácil perceber que a aplicação do algoritmo Simplex para a resolução de
problemas de programação linear não é uma tarefa rápida. Apesar da simplicidade
do algoritmo, a sua aplicação envolve procedimentos repetitivos (iterações) que
demandam muito tempo de trabalho na reconstrução das várias versões da
tabela de coeficientes, o que propicia a introdução de eventuais valores errados,
comprometendo todo o trabalho.
O algoritmo Simplex não foi concebido para ser uma receita a ser seguida
manualmente, mas sim para ser implementado por meio de programas de
computadores. Nesse sentido, foram desenvolvidas diversas ferramentas
computacionais voltadas à resolução de problemas de programação linear baseadas
nesse algoritmo, das quais destacamos o software LINDO, desenvolvido pela
LINDOTM Systems (http://www.lindo.com).
23
23
UNIDADE Programação Linear: Métodos e Aplicações
Termos independentes
Coeficientes de X2 das restrições: 300 e 480
nas restrições: 3 e 3
24
3. A resolução do problema é apresentada em uma única tela que contém os
seguintes elementos:
25
25
UNIDADE Programação Linear: Métodos e Aplicações
26
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
Livros
Pesquisa Operacional na Tomada de Decisões
LACHTERMACHER, G. Pesquisa Operacional na Tomada de Decisões. 4. ed. Sao Paulo:
Pearson Prentice Hall, 2012. Capítulo 2.
Leitura
Utilização da Programação Linear e do Método SIMPLEX para Otimização da Produção de Pães em uma Empresa
de Panificação
Utilização da Programação Linear e do Método SIMPLEX para Otimização da Produção de
Pães em uma Empresa de Panificação, disponível em:
https://goo.gl/nKUQy2
27
27
UNIDADE Programação Linear: Métodos e Aplicações
Referências
ANDRADE, E. L. Introdução à Pesquisa Operacional: Métodos e Modelos Para
a Análise de Decisão. 4. ed. Rio de Janeiro: Ltc-Livros Técnicos e Científicos, 2011.
28