Método Simplex e Solver em Programação Linear
Método Simplex e Solver em Programação Linear
O método simplex para a solução de modelos de programação linear e a utilização do solver na solução de problemas de
programação linear.
PROPÓSITO
Dominar a solução de problemas de programação linear, seja por meio do método simplex, ou pela utilização de
softwares, permitirá que você aplique a técnica de modelagem no processo de decisão de problemas complexos de
PREPARAÇÃO
Para o conteúdo deste tema, são necessários uma calculadora e um software editor de planilhas eletrônicas com o add-in
do solver habilitado.
OBJETIVOS
MÓDULO 1
Processing math: 100%
Empregar o método simplex para a solução de problemas de programação linear
MÓDULO 2
INTRODUÇÃO
A modelagem matemática nos permite representar, de forma simplificada, um problema complexo por meio de linguagem
matemática. Com isso, conseguimos analisar diferentes cenários de forma mais rápida e barata do que se a situação
No contexto da programação linear, que se aplica, por exemplo, no planejamento de redes logísticas, há métodos, como o
método gráfico, que se restringem à solução de problemas com apenas duas ou no máximo três variáveis de decisão.
Como solucionar, então, problemas mais complexos, com maior número de variáveis de decisão? Este é o assunto a ser
tratado neste tema. A seguir, abordaremos o método simplex para a solução de problemas de programação linear e
MÓDULO 1
APRESENTAÇÃO DO TEMA
Processing math: 100%
O vídeo aborda o método simplex e sua importância para a resolução de problemas.
Podemos resolver, de forma simples, problemas de programação linear com duas variáveis de decisão por meio do
método gráfico. Entretanto, são poucos os problemas de programação linear no mundo real que envolvem apenas duas
Existe uma série de técnicas matemáticas para resolver problemas de programação linear com qualquer número de
variáveis sem a necessidade de visualizar em gráficos as regiões viáveis. Dentre tais técnicas, destaca-se o algoritmo
simplex, que foi o primeiro método desenvolvido para resolver problemas de programação linear.
O algoritmo simplex foi desenvolvido por George B. Dantzig, em 1947, enquanto trabalhava como consultor em
matemática para o controle da Força Aérea norte-americana. O método simplex é específico para a solução de problemas
de otimização linear (equações ou inequações lineares). Trata-se de um algoritmo eficiente que se baseia na solução
sucessiva de sistemas de equações indeterminados, em que sistemas adjacentes são avaliados de forma iterativa, sendo,
assim, adaptável ao cálculo computacional. Na época, os computadores estavam começando a surgir, e a resolução
Antes de estudarmos o algoritmo simplex, é importante entendermos o conceito do simplex e recordarmos alguns pontos
sobre a solução de problemas de programação linear com duas variáveis de decisão por meio do método gráfico.
O QUE É UM SIMPLEX?
Processing math: 100%
Um simplex é um polígono convexo, ou seja, com propriedade especial: uma reta que passe por quaisquer dois pontos
pertencentes a um simplex deve estar contida inteiramente dentro do simplex. Logo, na figura a seguir, observa-se que o
As restrições de um problema de programação linear sempre definem hiperespaços convexos. Esta é a premissa do
algoritmo simplex e de boa parte da teoria de otimização convexa. Assim, o espaço de soluções de um problema de
programação linear, ou seja, a área formada pela intersecção das restrições do problema, é uma forma geométrica
simplex.
MÉTODO GRÁFICO
Para encontrar a solução ótima pelo método gráfico, precisamos seguir os seguintes passos:
Desenhe o vetor z (função objetivo).
Desenhe linhas ortogonais ao vetor z. Essas são as linhas de isocusto, isto é, são as retas que têm o mesmo valor de z.
Calcule o valor de z no ponto ótimo, ou seja, a linha de isocusto com maior z que ainda pertence ao espaço de soluções.
Em um caso bidimensional, o espaço de soluções viáveis é um plano, e a função objetivo é representada por um vetor.
Assim, por meio do método gráfico, buscamos a reta (x2 = z - ax1) perpendicular ao vetor da função objetivo com o maior
(ou menor) z possível dentro do espaço de soluções. Como o espaço de soluções é simplex, a reta x2 = z - ax1 para z ótimo
que corta o plano, obrigatoriamente, corta as retas de restrições. Ainda, como nos pontos de interseção (vértices) temos
mudança de inclinação (retas diferentes), garante-se que a solução ótima se dá na interseção entre retas de restrições
(nos vértices), de modo que o algoritmo simplex analisa apenas os pontos de interseção do espaço de soluções.
está em um vértice do espaço de soluções viáveis, por que não percorrê-los em busca da melhor solução possível?
MÉTODO SIMPLEX
Conforme verificamos, a chave do algoritmo simplex está no formato da região limitada pelas restrições. Portanto, apesar
O simplex é um algoritmo iterativo, que se utiliza de um ferramental baseado em álgebra linear para a resolução sucessiva
inequações. Desse modo, a primeira etapa do método simplex consiste em converter as restrições de desigualdade em
restrições de igualdade equivalente. O algoritmo simplex só pode ser rodado se o problema estiver escrito na forma
canônica, que é a forma de se representar programas matemáticos por meio de equações. Para isso, precisamos criar as
𝑥1 ≤ 10 → 𝑥1 + 𝑓1 = 10
𝑓1 = Variável de folga
Assim, se 𝑥1 = 8, então teríamos que a variável de folga 𝑓1 seria igual a 2. Se 𝑥1 = 3, então teríamos que a variável de folga
𝑓1 seria igual a 7.
𝑥1 ≥ 10 → 𝑥1 - 𝑒1 = 10
𝑒1 = Variável de excesso
Assim, se 𝑥1 = 12, então teríamos que a variável de excesso e1 seria igual a 2. Se 𝑥1 = 15, então teríamos que a variável de
Veja o caso do problema da Fitwear, apresentado a seguir. Será que conseguimos escrevê-lo em sua forma canônica?
A Fitwear S/A é uma confecção de roupas esportivas, tendo uma linha fitness feminina, na qual produz roupas de
de mão de obra. Trinta minutos de corte e 15 minutos de costura são demandados para a confecção de um top de
ginástica.
Cada calça de ginástica é vendida por R$120,00 e utiliza R$35,00 de matéria-prima, como tecido e alinhamentos, e
R$40,00 de mão de obra. Quinze minutos de corte e 30 minutos de costura são demandados para a confecção de uma
calça de ginástica.
A Fitwear só pode contar com 100 horas de corte por semana e 160 horas de costura. A confecção não tem problemas no
fornecimento de matérias-primas, de modo que seu suprimento pode ser considerado ilimitado, bem como a demanda
A Fitwear deseja planejar sua produção semanal de modo a maximizar seus lucros.
𝑥1
𝑥2
𝑀á𝑥 𝑍 = 28 𝑥1 + 40𝑥2
SUJEITO A (FORMA-PADRÃO):
Observe que tanto a restrição referente às horas de corte quanto a restrição referente às horas de costura são do tipo ≤.
Logo, precisaremos de duas variáveis de folga, 𝑓1 e 𝑓2 , para passar o problema para sua forma canônica.
𝑀á𝑥 𝑍 = 28 𝑥1 + 40𝑥2
𝑥1 , 𝑥2 ≥ 0
Uma vez adicionadas as variáveis de folga, o problema da Fitwear é dito no formato canônico e pronto para ser resolvido
Para resolver o problema de programação linear, o algoritmo simplex se baseia na solução sucessiva de sistemas de
VARIÁVEIS BÁSICAS
São aquelas para as quais o sistema de equações é resolvido.
equações seja igual ao número de variáveis, permitindo, assim, a solução do sistema de equações.
Entretanto, para que um sistema de equações lineares seja resolvido, é necessário que o número de equações seja igual
ao número de variáveis. De tal modo, para resolver o problema da Fitwear, devemos considerar duas variáveis como nulas
(não básicas) e resolver o problema para outras duas (variáveis básicas), e assim fazemos por iterações sucessivas, até
Em linhas gerais, o algoritmo simplex parte de uma solução viável do sistema de equações que constituem as restrições
do problema de programação linear, solução essa normalmente extrema (vértice). A partir dessa solução inicial, o
algoritmo adota um critério de escolhas para encontrar novos e melhores vértices da envoltória convexa do problema, e
outro critério para determinar se o vértice escolhido (solução básica) é ou não um vértice ótimo (GOLDBARG; LUNA,
Transformar o modelo em sua forma canônica, ou seja, transformar o sistema de inequações em sistema de equações.
Realizar o teste da otimalidade, ou seja, verificar se a iteração atual é ótima ou se outras variáveis não base (ou seja, que
estão zeradas) devem entrar na base, pois têm potencial para contribuir para melhorar a solução.
Realizar o teste da mínima razão, que determinará qual variável básica deve sair da base, ou seja, verificará quais das
variáveis devem passar a ser nulas para que a nova variável entre na base.
uma solução inicial, enquanto o método simplex propriamente dito é apresentado na fase 2.
PASSO 1
Escreva o problema na forma canônica
𝑇
Minimizar 𝑓(𝑥) = 𝑐 𝑥
𝑥≥0
PASSO 2
Determine inicialmente uma partição básica factível 𝐴 = [𝐵 . 𝑁], ou seja, com dois vetores de índices básicos e não
Faça iteração=1.
𝑥^𝑛 = 0
𝑇 𝑇 -1 𝑇
ƛ = 𝑐𝐵 𝐵 (EQUIVALENTEMENTE, RESOLVA O SISTEMA 𝐵 ƛ = 𝑐𝑏 )
{custos relativos}
𝑇
𝑐𝑁^ 𝑗 = 𝑐𝑁𝑗 - ƛ 𝑎𝑁𝑗 , 𝑗 = 1, 2, … , 𝑛 - 𝑚
-1
𝑦 = 𝐵 𝑎𝑁𝑘 (EQUIVALENTEMENTE, RESOLVA O SISTEMA 𝐵𝑦 = 𝑎𝑁𝑘 )
𝑥𝐵𝑙
^
𝑥^
𝜀^ = 𝑦𝑙 = MÍNIMO { 𝑦𝐵𝑖 , TAL QUE 𝑦𝑖 > 0, 𝑦𝑖 > 0, 𝑖 = 1, 2, . . . 𝑚} (A VARIÁVEL 𝑥𝐵𝑙
𝑖
SAI DA BASE)
Iteração = iteração +1
Retorne
Processing ao passo
math: 100% 1
{fim da iteração simplex}
Na forma de algoritmo, como apresentado por Arenales et al. (2007), o método simplex pode parecer difícil, mas vamos
A empresa Glass Co., que possui três fábricas, produz janelas e portas de vidro. As esquadrias e ferragens em aço são
feitas na fábrica 1, as esquadrias de madeira são produzidas na fábrica 2 e a fábrica 3 produz o vidro e monta os
produtos.
A direção da empresa decidiu modernizar sua linha de produtos e propôs o lançamento de dois novos produtos:
O produto 1 requer capacidade produtiva das fábricas 1 e 3. O produto 2 precisa das fábricas 2 e 3. A divisão de marketing
concluiu que a empresa poderia vender tanto quanto fosse possível produzir desses produtos por essas fábricas. Porém,
ambos os produtos competem por capacidade produtiva da fábrica 3, não estando claro qual mix dos dois seria mais
lucrativo. Determine quais devem ser as taxas de produção para maximizar o lucro total, sujeitas às restrições impostas
horas)
1 2
1 1 0 4
2 0 2 12
3 3 2 18
Lucro por
R$3.000,00 R$5.000,00
lote
Inicialmente, devemos escrever o modelo matemático para o problema da Glass Co., seguindo os passos do
Identificação do conjunto de restrições
seria:
Assim, temos:
Determine quais devem ser as taxas de produção para maximizar o lucro total (…).
Para cada lote de portas de vidro de 2,5m com esquadria de alumínio (produto 1) vendido, a empresa lucra R$3.000,000,
enquanto o lucro de venda de cada lote de janela adornada com esquadria de madeira 1,2m x 1,8m (produto 2) equivale a
R$5.000,00. Logo, o lucro total é igual a 3000𝑥1 + 5000𝑥2 ., de modo que a função objetivo para o problema é:
prima, de modo que não entram como restrições no modelo matemático. Porém, há restrições relacionadas ao tempo de
1 2
2 0 2 12
3 3 2 18
Produção empresa Glass Co. Extraída de Hillier e Lieberman, 2013, pág. 21.
Há, ainda, a restrição de não negatividade das variáveis de decisão, uma vez que não se pode produzir um número
𝑥1 ≤ 4
2𝑥2 ≤ 12 → 𝑥2 ≤ 6
3𝑥1 + 2𝑥2 ≤ 18
S.A.
𝑥1 ≤ 4
2𝑥2 ≤ 12
3𝑥1 + 2𝑥2 ≤ 18
𝑥1 , 𝑥2 ≥ 0
S.A.
𝑥1 + 𝑓 1 = 4 → restrição 1
2 𝑥2 + 𝑓 2 = 12 → restrição 2
𝑥1 , 𝑥2 , 𝑓 1 , 𝑓 2 , 𝑓 3 > = 0
cinco variáveis. Dessa forma, devemos ter três variáveis-base e duas não base. O modo mais fácil de resolver esta etapa é
escolher as variáveis 𝑥1 e 𝑥2 como variáveis não básicas, uma vez que essa opção elimina o trabalho necessário para
encontrar a solução quando as variáveis básicas são as variáveis de folga (ou excesso) (𝑓1 , 𝑓2 e 𝑓3 ). Nesse caso, se 𝑥1 = 0
Restrição 1: 𝑥1 + 𝑓1 = 4 → 0 + 𝑓1 = 4 → 𝑓1 = 4
Restrição 2: 2𝑥2 + 𝑓2 = 12 → 0 + 𝑓2 = 12 → 𝑓2 = 12
Portanto, temos a solução inicial de (0, 0, 4, 12, 18).
Passamos, então, para o teste da otimalidade. Como 𝑍 = 3𝑥1 + 5𝑥2 , verificamos que o coeficiente de cada variável não
Como as taxas de crescimento são positivas (3 e 5) e este é um problema de maximização, concluímos que a solução
Já sabemos que a solução básica inicial não é ótima, então uma variável não básica (𝑥1 ou 𝑥2 ) deve entrar na base.
Para determinar isso, devemos verificar a direção de deslocamento. Observe que, para cada unidade que aumentarmos 𝑥1
, temos uma taxa de crescimento em 𝑍 de 3. Ao mesmo tempo, para cada unidade que aumentarmos 𝑥1, temos uma taxa
de crescimento em 𝑍 de 5. Sendo 5 > 3, devemos optar por 𝑥2 para crescer. Logo, 𝑥2 é a variável básica que entra.
Entretanto, para que 𝑥2 passe a ser uma variável básica, uma das variáveis-base da solução inicial (𝑓1 , 𝑓2 e 𝑓3 ) precisa sair
Para essa etapa, devemos ter em mente que, ao aumentar 𝑥2 , eleva-se 𝑍. Contudo, não podemos sair do espaço de
soluções, ou seja, da região de soluções viáveis. Assim, devemos aumentar 𝑥2 , mantendo a variável não básica 𝑥1 = 0 e
𝑥1 + 𝑓 1 = 4→ 𝑓1 = 4
Processing math: 100%
2𝑥2 + 𝑓2 = 12 → 𝑓2 = 12 - 2𝑥2
Como 𝑥1 , 𝑥2 , , 𝑓1 , 𝑓2 , 𝑓3 ≥ 0:
𝑓3 = 18 - 2𝑥2 ≥ 0 → 𝑥2 ≤ 18 / 2 = 9
Verificamos, então, que 𝑥2 passa a receber o valor de 6, enquanto 𝑓2 se torna uma variável não base e nula. Assim,
O objetivo do teste da mínima razão é determinar qual variável básica cai a zero primeiro à medida que a variável básica
Podemos descartar imediatamente a variável básica em qualquer equação cujo coeficiente da variável básica que entra é
zero ou negativo, já que uma variável básica não decresceria à medida que a variável básica que entra aumentasse.
SOLUÇÃO INICIAL
𝑥1 = 0
𝑥2 = 0
𝐹1 = 4
𝐹2 = 12
𝐹3 = 18
𝑥2 = 6
𝐹1 = ?
𝐹2 = 0
𝐹3 = ?
Temos que 𝑥2 é igual a 6 e 𝑥1 continua sendo zero. Portanto, temos que 𝑍 = 3𝑥1 + 5𝑥2 = 3 * 0 + 5 * 6 = 30. Devemos
𝑥1 + 𝑓 1 = 4→ 0+ 𝑓1 = 4→ 𝑓1 = 4
2 𝑥2 + 𝑓 2 = 12 → 2 * 6 + 𝑓2 = 12 𝑓2 = 0
3 𝑥1 + 2 𝑥2 + 𝑓3 = 18 → 3 * 0 + 2 * 6 + 𝑓3 = 18 → 𝑓3 = 6
Então, devemos verificar se essa solução é ótima ou não, por meio do teste de otimalidade. Sendo 𝑍 = 3𝑥1 + 5𝑥2 ,
verificamos que 𝑥1 tem o coeficiente positivo ( = 3), de modo que aumentar 𝑥1 implica em aumentar 𝑍. Portanto, a
solução atual não é ótima e devemos realizar nova iteração, analisando a entrada de 𝑥1 como variável básica. Dessa
forma, devemos realizar o teste da mínima razão para determinar qual variável básica deve se tornar nula, saindo então da
𝑍 - 3𝑥1 - 2, 5𝑥2 = 30
𝑥1 + 𝑓 1 = 4
2𝑥2 + 𝑓2 = 12
𝑓 1 = 4 - 𝑥1 ≥0→ 𝑥1 ≤ 4/1→ 𝑥1 ≤ 4
𝑓 3 = 6 - 3 𝑥1 ≥ 0 → 𝑥 → ≤ 6 / 3 → 𝑥1 ≤ 2 → mínima razão
Logo, 𝑓3 sai da base para 𝑥1 entrar com o valor igual a 2. Porém, ao aumentarmos o valor de 𝑥1 de 0 a 2, temos mudanças
na solução.
SOLUÇÃO INICIAL
𝑥1 = 0
𝑥2 = 6
𝐹1 = 4
𝐹2 = 0
𝐹3 = 18
NOVA SOLUÇÃO
𝑥1 = 2
𝑥2 = 6
𝐹1 = ?
𝐹2 = 0
𝐹3 = ?
Temos que 𝑥2 é igual a 6 e 𝑥1 equivale a 2. Logo, temos que 𝑍 = 3𝑥1 + 5𝑥2 = 3 * 2 + 5 * 6 = 36. Devemos determinar, então,
os valores de 𝑓1 , 𝑓2 e 𝑓3 .
2 𝑥2 + 𝑓 2 = 12 → 2 * 6 + 𝑓2 = 12 → 𝑓2 =0
3 𝑥1 + 2 𝑥2 + 𝑓3 = 18 → 3 * 2 + 2 * 6 + 𝑓3 = 18 → 𝑓3 =0
Portanto, concluímos que 𝑥1 substitui 𝑓3 como variável básica, sendo a nova solução igual a (2, 6, 2, 0, 0) e 𝑍 = 36. As
variáveis não básicas agora são 𝑓2 e 𝑓3 . Verificamos que aumentar as atuais variáveis não básicas não implica em
Aprendemos até agora a forma algébrica do simplex, que é a melhor para aprender a lógica por trás do algoritmo. Porém,
não é a forma mais conveniente para realizar cálculos necessários. As operações realizadas no método simplex podem
ser organizadas em tabelas, chamadas tabelas simplex. Essa organização é a mais indicada para quando estivermos
Minimizar 𝑓(𝑥) = 𝑐𝑥
𝐴𝑥 = 𝑏
𝑥 ≥ 0.
fases.
Fase 1:
A matriz dos coeficientes contém uma matriz identidade 𝑚𝑥𝑚 (m é o número de equações) e o vetor independente 𝑏 ≥ 0.
A função objetivo é escrita em termos das variáveis não básicas, isto é, os coeficientes das variáveis básicas são nulos.
Faça a iteração = 0.
Fase 2:
Determine o menor dos custos relativos: 𝑐𝑘 = mínimo {𝑐𝑗 para toda variável não básica}.
Se 𝑐𝑘 ≥ 0, então pare (a solução básica na iteração é ótima). Se não, a variável 𝑥𝑘 entra na base.
Se 𝑎𝑖𝑘 ≤ 0, 𝑖 = 1, …, 𝑚, então 𝑓 → - ∞ e o problema não tem solução ótima finita. Nesse caso, pare. Se não,
𝑏𝑙 𝑏
determine 𝑎𝑙𝑘 mínimo {𝑎𝑖𝑘𝑖 tal que 𝑎𝑖𝑘 > 0, 𝑖 = 1, … , 𝑚}. (a variável básica da linha l sai da base).
Atualize a tabela simplex (pivoteamento do elemento (𝑙, 𝑘)). A variável 𝑥𝑘 passa a ser a variável básica na linha l. Faça a
Na forma de algoritmo, como apresentado por Arenales et al. (2007), o método simplex tabular pode parecer difícil, mas
vamos entendê-lo resolvendo o exemplo da Glass Co., cujo modelo em formato canônico é apresentado a seguir.
S.A.
𝑥1 + 𝑓1 = 4 → restrição 1
Processing math: 100%
2 𝑥2 + 𝑓 2 = 12 → restrição 2
𝑥1 , 𝑥2 , 𝑓 1 , 𝑓 2 , 𝑓 3 > = 0
Inicialmente, vamos definir o formato da tabela de maneira a facilitar sua compreensão. A tabela simplex tem, do lado
esquerdo, as variáveis básicas e, do lado direito, as constantes das equações. No meio da tabela, ficam todos os
coeficientes das restrições e da função objetivo. Por padronização, colocaremos na primeira linha (zero) a equação que
Imagem: Fogliato (2006, p. 61) adaptado por Renata Albergaria de Mello Bandeira
Tabela simplex.
Uma escolha viável para a primeira base para o problema da Glass Co. seria (𝑓1 , 𝑓2 , 𝑓3 ), pois facilitaria o preenchimento da
-1
tabela simplex inicial, dado que 𝐵 = 𝐼 e 𝐵 = 𝐼.
𝑥1 + 𝑓1 = 4
2 𝑥2 + 𝑓2 = 12
𝑎3 𝑎4 𝑎5 𝑎1 𝑎2
100𝐼10
𝐴=𝐵 𝐼 𝑁 = 010𝐼02
001𝐼32
𝑓1 𝑓2 𝑓3 𝑥1 𝑥2
100 -1 100
𝐵 = 010 𝐵 = 010
001 001
Quando as variáveis de folga constituem a primeira base, na primeira linha da tabela simplex, apenas escrevemos o
negativo dos coeficientes de custo das variáveis não básicas. Como 𝑧𝑗 - 𝑐𝑗 representa a potencial melhoria no valor de 𝑧
da função objetivo representada pela j-ésima variável, as variáveis atualmente básicas devem receber o valor zero, pois já
se encontram na base. Assim, a primeira linha da tabela simplex para o exemplo da Glass Co. é:
𝑥1 𝑥2 𝑓1 𝑓2 𝑓3 RHS
𝑍 -3 -5 0 0 0 𝑍0
O valor atual de 𝑧, 𝑧0 , para esta primeira tabela, com as variáveis básicas sendo 𝑓1 , 𝑓2 , 𝑓3 , seria igual a zero, pois
𝑥1 𝑥2 𝑓1 𝑓2 𝑓3 RHS
𝑍 -3 -5 0 0 0 0
Em seguida, devem-se escrever as linhas que compõem as restrições da tabela simplex, conforme indicado na figura a
seguir.
Processing math: 100%
Fogliato (2006, p. 61) adaptado por Renata Albergaria de Mello Bandeira.
Para cada variável do problema, deve-se determinar 𝑦 . Como as variáveis de folga foram escolhidas como a primeira
𝑗
-1
base, temos 𝐵 = 𝐼 e 𝐵 = 𝐼. Logo, temos 𝑦𝑗 = 𝑎𝑗 , de modo que as linhas que compõem as restrições no tableau são
copiadas diretamente do problema. Ainda, as variáveis atualmente na base (𝑓1 , 𝑓2 , 𝑓3 ) são identificadas à esquerda da
tabela simplex, como pode ser identificado na figura a seguir.
𝑠.𝑎.
Observa-se, por meio da figura anterior, que os únicos elementos faltantes estão do lado direito da tabela simplex e
correspondem à fórmula:
-1
𝑏¯ = 𝐵 𝑏 = 𝐼𝑏 = 𝑏
seguir.
𝑠.𝑎.
Uma vez preenchida a tabela inicial, devemos identificar as variáveis candidatas a entrar na base na primeira linha da
tabela. Para isso, devemos analisar os valores dos coeficientes de cada variável apresentados na segunda linha da tabela
Problema de maximização
Em um problema de maximização, a variável cujo coeficiente é negativo e apresenta o maior valor absoluto é aquela que
entrará na base.
Problema de minimização
Em um problema de minimização, a variável a entrar na base será a que tiver o maior valor positivo.
Por meio da figura da Tabela simplex inicial para o problema da Glass Co., observamos que a variável a entrar na base no
problema da Glass Co. é 𝑥2 , uma vez que tanto 𝑥𝑥 quanto 𝑥2 têm valores negativos na segunda linha da tabela, sendo 5 > 3
Depois de identificarmos a variável que entra na base, é preciso determinar a variável básica que deve dar lugar para que
𝑥2 entre na base. Para isso, aplicamos o teste da mínima razão, conforme indicado na figura a seguir. Observa-se que o
menor valor é 6, de modo que a variável a sair da base é 𝑓2 .
Para completar a iteração do simplex, devemos, então, proceder com as operações elementares que utilizam a linha que
contém o elemento de pivot, de modo que a coluna 𝑥2 (da variável entrante) assuma a configuração da coluna 𝑓2 (variável
que sai da base). Observe, na figura a seguir, que a linha pivot é a quarta linha da tabela (atual linha do 𝑓2 no lado esquerdo
da tabela) e que os valores para as colunas 𝑥2 e 𝑓2 não coincidem, de modo que é necessário executar a operação
elementar. Portanto, sendo a linha (3)´ a quarta linha da tabela (3) após a operação elementar, tem-se que a operação que
Observe, na segunda tabela da figura anterior, que, para a coluna 𝑥2 assumir a configuração anterior da coluna 𝑓2 , é
preciso ainda realizar operações elementares nas linhas (1) e (4) da tabela simplex. Assim, para a linha (4)´, é preciso que
(4)´ = (4) - 2 * (3)´, enquanto para a linha (1)´ devemos fazer (1)´ = (1) + 5 * (3)´, conforme indicado na próxima figura.
DICA
Para a linha (2), não é preciso realizar nenhuma operação, uma vez que os valores para as colunas 𝑥2 e 𝑓2 já são
coincidentes.
Verifique, na figura anterior, que a coluna 𝑥1 ainda apresenta um valor negativo na segunda linha da tabela simplex, de
modo que esta variável deve entrar na base, sendo necessária, então, mais uma iteração. Logo, faz-se o teste da mínima
razão, conforme indicado na figura a seguir, sendo verificado que a variável a sair da base para que 𝑥1 entre é 𝑓3 . Portanto,
são necessárias as operações elementares para que a coluna 𝑥1 receba os valores da coluna 𝑓3 .
Observa-se, na figura do Teste da mínima razão para o problema da Glass Co. — 2a iteração, que a quinta linha (4) da
tabela simplex é a linha pivot. Assim, para que a coluna 𝑥1 receba os valores da coluna 𝑓3 , a primeira operação elementar a
Primeira operação elementar (linha (4)) para o problema da Glass Co. — 2a iteração.
(1) e (2) da tabela simplex. Assim, para a linha (2)´, é preciso que (2)´ = (2) - (4)´, enquanto para a linha (1)´ devemos fazer
DICA
Para a linha (3) não é preciso realizar nenhuma operação, uma vez que os valores para as colunas 𝑥1 e 𝑓3 já são
ATENÇÃO
Verifique, na figura anterior, que não há mais valores negativos na segunda linha da tabela simplex (1), de modo que não
há mais variáveis para entrar na base. Logo, concluímos que a solução ótima para o problema da Glass Co. é 𝑥1 = 2, 𝑥2 = 6
e 𝑧 = 36, tal como apresentado na seção método simplex, quando resolvemos este mesmo problema por meio do método
VERIFICANDO O APRENDIZADO
1. A FITWEAR S/A É UMA CONFECÇÃO DE ROUPAS ESPORTIVAS, TENDO UMA LINHA FITNESS
FEMININA, NA QUAL PRODUZ ROUPAS DE GINÁSTICA EXCLUSIVAS PARA MULHERES, COMO TOPS
E CALÇAS DE LYCRA.
CADA TOP DE GINÁSTICA É VENDIDO POR R$80,00 E UTILIZA R$20,00 DE MATÉRIA-PRIMA, COMO
TECIDO E ALINHAMENTOS, E R$32,00 DE MÃO DE OBRA. TRINTA MINUTOS DE CORTE E 15
MINUTOS DE COSTURA SÃO DEMANDADOS PARA A CONFECÇÃO DE UM TOP DE GINÁSTICA.
A FITWEAR SÓ PODE CONTAR COM 100 HORAS DE CORTE POR SEMANA E 160 HORAS DE
COSTURA. A CONFECÇÃO NÃO TEM PROBLEMAS NO FORNECIMENTO DE MATÉRIAS-PRIMAS, DE
MODO QUE SEU SUPRIMENTO PODE SER CONSIDERADO ILIMITADO, BEM COMO A DEMANDA
SEMANAL DE SEUS PRODUTOS.
CONSIDERANDO QUE SERIA POSSÍVEL PRODUZIR NÚMEROS NÃO INTEIROS, QUAL DEVE SER A
PRODUÇÃO SEMANAL A SER ADOTADA PELA FITWEAR DE MODO A MAXIMIZAR SEUS LUCROS?
CONSIDERE AS SEGUINTES VARIÁVEIS DE DECISÃO:
A) 𝑥1 = 320, 𝑥2 = 160
B) 𝑥1 = 200, 𝑥2 = 160
C) 𝑥1 = 160, 𝑥2 = 320
D) 𝑥1 = 280, 𝑥2 = 220
E) 𝑥1 = 280, 𝑥2 = 120
SUJEITO A:
𝑋1 + 𝑋2 < = 200
𝑋1 > = 0
A) Zero
B) 54.000
C) 60.900
D) 64.000
E) 66.100
Processing math: 100%
GABARITO
1. A Fitwear S/A é uma confecção de roupas esportivas, tendo uma linha fitness feminina, na qual produz roupas de
Cada top de ginástica é vendido por R$80,00 e utiliza R$20,00 de matéria-prima, como tecido e alinhamentos, e R$32,00
de mão de obra. Trinta minutos de corte e 15 minutos de costura são demandados para a confecção de um top de
ginástica.
Cada calça de ginástica é vendida por R$120,00 e utiliza R$35,00 de matéria-prima, como tecido e alinhamentos, e
R$40,00 de mão de obra. Quinze minutos de corte e 30 minutos de costura são demandados para a confecção de uma
calça de ginástica.
A Fitwear só pode contar com 100 horas de corte por semana e 160 horas de costura. A confecção não tem problemas
no fornecimento de matérias-primas, de modo que seu suprimento pode ser considerado ilimitado, bem como a
Considerando que seria possível produzir números não inteiros, qual deve ser a produção semanal a ser adotada pela
𝑀á𝑥 𝑍 = 28 𝑥1 + 40𝑥2
Sujeito a:
𝑀á𝑥 𝑍 = 28 𝑥1 + 40𝑥2
Sujeito a:
𝑥1 , 𝑥2 ≥ 0
Sujeito a:
𝑋1 + 𝑋2 < = 200
𝑋1 > = 0
A resposta correta é a letra E, conforme pode ser verificado na solução obtida pelo método gráfico, apresentada na figura
a seguir.
No módulo 1, aprendemos a resolver problemas de programação linear por meio do método simplex, tanto o analítico
quanto o tabular. Aplicamos essas técnicas em alguns exemplos, de modo a entender a lógica do algoritmo. Porém,
pudemos verificar que são muitos os cálculos que precisam ser feitos para resolvermos problemas de programação linear
manualmente, e apenas um erro em uma conta nos levaria a um resultado errado. Contudo, felizmente, existem diversos
softwares de computador que podem ser utilizados para nos auxiliar a encontrar a solução ótima para problemas de
LINDO
CPLEX
AIMMS
GAMS
MATHPRO
Usando o software de computador adequado, podemos resolver facilmente quaisquer problemas de programação linear.
As técnicas para a solução de problemas de programação linear são, inclusive, desenvolvidas por meio de pacotes de
planilhas eletrônicas. Assim sendo, aprenderemos nesta seção a utilizar o solver do pacote de planilhas eletrônicas Excel
Os mesmos conceitos e técnicas que apresentaremos a seguir também podem ser aplicados em outros pacotes de
Ragsdale (2009) apresenta cinco passos que devem ser feitos para implementar qualquer problema de programação
Organize os dados para o modelo (os coeficientes das restrições, os coeficientes da função objetivo etc.) na planilha.
Reserve as células separadas na planilha para representar cada variável de decisão do modelo algébrico. Isso é útil na
Crie uma fórmula para cada célula da planilha que corresponda à função objetivo no modelo algébrico.
Para cada restrição, crie uma fórmula em uma célula separada na planilha. Muitas das fórmulas de restrição têm estrutura
semelhante, de modo que, quando possível, crie fórmulas de restrição que possam ser copiadas para implementar outras
fórmulas de restrição.
Use sombras e cores de fundo e/ou bordas para identificar as células que representam as variáveis de decisão, restrições
INSTALANDO O SOLVER
Demonstraremos, neste módulo, como usar o solver do Excel resolvendo o problema enfrentado pela Fitwear. No entanto,
antes de iniciarmos a resolução do problema, é preciso instalar o solver nos pacotes de planilhas eletrônicas Excel. Para
Para finalizar, basta clicar na aba dados para visualizar a opção solver.
UTILIZANDO O SOLVER
Processing math: 100%
Agora que já temos o solver instalado no nosso Excel, vamos iniciar a resolução do problema da Fitwear visto no módulo
1.
DICA
Caso seja necessário, retorne ao módulo anterior e relembre como desenvolvemos o modelo matemático do problema.
𝑥1
𝑥2
𝑀á𝑥 𝑍 = 28 𝑥1 + 40𝑥2
SUJEITO A:
as variáveis de decisão, como indicado na figura a seguir. Observe que descrevemos as variáveis de decisão na planilha,
bem como os ganhos semanais com a venda de cada produto (𝑥1 e 𝑥2 ), deixando destacado em amarelo as células
variáveis (ou ajustáveis), que reservamos na planilha para representar as variáveis de decisão do modelo.
O próximo passo é criar uma fórmula que represente a função objetivo de acordo com as variáveis de decisão indicadas
na figura. Para isso, devemos utilizar a função “somarproduto” do Excel, que faz o produto escalar entre dois vetores.
A figura a seguir ilustra como inserimos a função objetivo na planilha eletrônica no caso do problema da Fitwear. Observe
que fizemos a função “somarproduto” entre o vetor (28,40), que corresponde aos coeficientes da função objetivo, e as
células que destinamos para receber o valor das variáveis de decisão. Com isso, teremos que a célula destacada em
De maneira análoga à que fizemos a representação da função objetivo, precisamos representar as restrições. Para isso,
também vamos utilizar a função “somarproduto” do Excel. Veja a seguir como inserimos as duas restrições para o
que destinamos para receber o valor das variáveis de decisão. Com isso, teremos que a célula destacada em amarelo na
Para isso, é preciso indicar para o solver o que cada célula da planilha representa:
A FUNÇÃO OBJETIVO
AS VARIÁVEIS DE DECISÃO
AS RESTRIÇÕES
Assim sendo, devemos definir a célula de destino, ou seja, aquela que representa a função objetivo na caixa de diálogo
parâmetros do solver, como indicado na próxima figura. Observe que a célula E9 contém a fórmula que representa a
função objetivo para o nosso problema, como havíamos preparado anteriormente. Neste momento, devemos instruir
também o solver para tentar maximizar seu valor, especificando o botão max.
O próximo passo consiste em indicar as células que representam as variáveis de decisão no modelo. Observe, na figura a
seguir, que as células C8 e D8, em nossa planilha, representam as variáveis de decisão para o modelo. O solver
A seguir, devemos definir as células de restrição na planilha e as restrições que se aplicam a essas células.
ATENÇÃO
As células de restrição são aquelas em que implementamos as fórmulas para cada restrição.
Observe que as células E13 e E14 representam as células de restrição cujos valores devem ser menores ou iguais aos
Já especificamos as restrições, mas ainda precisamos determinar que as variáveis de decisão devem ser iguais ou
maiores do que zero. Para isso, basta clicar em tornar variáveis irrestritas não negativas na caixa de diálogo parâmetros
no botão resolver.
A figura a seguir apresenta a tela de saída do Excel com a solução ótima para o problema da Fitwear.
Observe que 𝑥1 deve ser 53,33, 𝑥2 recebe 293,333 e o valor ótimo de 𝑧 é igual a 13.226,67.
O vídeo mostra um passo a passo para a resolução de um problema de programação linear no solver do Excel.
VERIFICANDO O APRENDIZADO
SABE-SE QUE O GRÃO DO TIPO 1 CUSTA R$35,00 POR KG. UM QUILO DE GRÃO 1 POSSUI 30MG DE
NUTRIENTE A, 10MG DE NUTRIENTE B E 43MG DE NUTRIENTE C. O GRÃO DO TIPO 2 CUSTA
R$23,00 POR KG. AINDA, UM QUILO DO GRÃO 2 POSSUI 28MG DO NUTRIENTE A, 17MG DO
NUTRIENTE B E 40MG DO NUTRIENTE C. O GRÃO DO TIPO 3 POSSUI APENAS 70MG DO NUTRIENTE
TIPO
Processing math:A100%
E UM QUILO DESTE TIPO DE GRÃO CUSTA R$78,00.
A RAÇÃO PARA GADO DEVE CONTER, NO MÍNIMO, 1250MG DE NUTRIENTE A, 380MG DO
NUTRIENTE B E 980MG DO NUTRIENTE C.
A) 262,84
B) 1262,84
C) 2262,84
D) 3262,84
E) 4262,84
2. UMA MÃE ESTÁ MUITO PREOCUPADA COM A ALIMENTAÇÃO DE SEUS FILHOS. ELA DESEJA QUE
AS CRIANÇAS TENHAM UMA ALIMENTAÇÃO EQUILIBRADA E, POR ISSO, CONSULTOU UMA
NUTRICIONISTA QUE LHE RECOMENDOU QUE ELES COMAM, NO MÍNIMO, 10MG DE VITAMINA A,
70MG DE VITAMINA C E 250MG DE VITAMINA D POR DIA.
A 2 2 10 20
C 50 20 10 80
D 80 70 10 80
INFORMAÇÕES NUTRICIONAIS EM MG
A MÃE TAMBÉM FOI AO SUPERMERCADO E VERIFICOU QUE UM LITRO DE LEITE CUSTA R$2,00, UM
QUILO DE CARNE CUSTA R$20,00, UM QUILO DE PEIXE CUSTA R$25,00 E PARA PREPARAR 100G DE
Processing math: 100%
SALADA ELA GASTARIA R$3,00. DESSE MODO, É POSSÍVEL AFIRMAR QUE A SOLUÇÃO ÓTIMA
PARA O PROBLEMA TEM UM VALOR DE Z IGUAL A:
A) 2,46
B) 3,46
C) 4,46
D) 5,46
E) 6,46
GABARITO
1. A fábrica XYZ produz rações para a alimentação de gado. As rações são elaboradas a partir da mistura de três
Sabe-se que o grão do tipo 1 custa R$35,00 por kg. Um quilo de grão 1 possui 30mg de nutriente A, 10mg de nutriente B
e 43mg de nutriente C. O grão do tipo 2 custa R$23,00 por kg. Ainda, um quilo do grão 2 possui 28mg do nutriente A,
17mg do nutriente B e 40mg do nutriente C. O grão do tipo 3 possui apenas 70mg do nutriente tipo A e um quilo deste
A ração para gado deve conter, no mínimo, 1250mg de nutriente A, 380mg do nutriente B e 980mg do nutriente C.
O analista deseja determinar uma composição da ração que minimize os custos de produção, considerando que as
necessidades mínimas dos nutrientes sejam atendidas. Desse modo, é possível afirmar que a solução ótima para o
Como as rações são elaboradas a partir de três diferentes tipos de grãos, temos que as variáveis de decisão são:
Como se deseja minimizar o custo de produção e sabe-se o custo do quilo de cada tipo de grão, temos a seguinte função
objetivo:
Logo, podemos afirmar que a resposta certa para o exercício é a Letra E. Porém, vamos continuar a construção do modelo
A ração deve conter, no mínimo, 1250mg de nutriente A, 380mg do nutriente B e 980mg do nutriente C. Assim, teremos
três restrições com relação à quantidade dos diferentes tipos de nutrientes. São elas:
10𝑥math:
Processing 1 + 17 𝑥2 ≥
100% 380 → Nutriente B
43𝑥1 + 40𝑥3 ≥ 980 → Nutriente C
Sujeito a:
x1 , x2 , x3 , x4 ≥ 0
A figura apresenta a tela de saída do Excel com a solução ótima para o problema. Observe que x1 deve ser 22,79, x2
2. Uma mãe está muito preocupada com a alimentação de seus filhos. Ela deseja que as crianças tenham uma
alimentação equilibrada e, por isso, consultou uma nutricionista que lhe recomendou que eles comam, no mínimo, 10mg
Porém, além de se preocupar com a qualidade da alimentação, essa mãe também está preocupada com os custos. Ela
deseja oferecer aos seus filhos essa dieta equilibrada, porém ao menor custo possível. Por isso, ela fez uma pesquisa e
descobriu as informações nutricionais para diferentes tipos de alimento, conforme apresentado na tabela.
A 2 2 10 20
C 50 20 10 80
Informações nutricionais em mg
A mãe também foi ao supermercado e verificou que um litro de leite custa R$2,00, um quilo de carne custa R$20,00, um
quilo de peixe custa R$25,00 e para preparar 100g de salada ela gastaria R$3,00. Desse modo, é possível afirmar que a
A variável de decisão deve ser xi, sendo x a quantidade de alimento do tipo “i” a ser consumida por dia. Logo, temos:
Sujeito a:
𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ≥ 0
A figura apresenta a tela de saída do Excel com a solução ótima para o problema. Observe que 𝑥1 deve ser 2,91 litros de
leite, 𝑥2 e 𝑥3 são nulos, enquanto 𝑥4 é igual a 208,33g de salada, sendo o valor ótimo de 𝑧 igual a 6,46.
CONSIDERAÇÕES FINAIS
A pesquisa operacional pode nos auxiliar no apoio a processos de decisão, em especial para problemas complexos.
Estudamos o método simplex, tanto pelo modo analítico quanto pelo tabular, por meio do qual aprendemos a resolver
problemas de programação linear, encontrando a solução ótima para este tipo de problema. Contudo, resolvê-los
manualmente é muito trabalhoso, envolvendo um grande número de cálculos. Um simples erro em uma das contas
requeridas implica encontrar uma solução equivocada para o problema. Por isso, é muito importante conhecer softwares
São muitos os softwares computacionais dedicados à solução de problemas de programação matemática, como o
CPLEx, o GAMS, o LINDO, o LINGO etc. No entanto, problemas de programação linear podem ser resolvidos pelo solver de
pacotes de planilhas eletrônicas. Aprendemos a solucionar problemas de programação linear por meio do solver do Excel.
Isso certamente facilitará que consigamos aplicar a Pesquisa Operacional para a solução de problemas reais.
AVALIAÇÃO DO TEMA:
REFERÊNCIAS
GOLDBARG, M. C.; LUNA, H. P. Otimização combinatória e programação linear. 2. ed. São Paulo: Campus, 2005.
RODRIGUES, L. H.; AHLERT, F.; LACERDA, D. P.; CAMARGO, L. F. R.; LIMA, P. Pesquisa operacional: programação linear
passo a passo: do entendimento do problema à interpretação da solução. São Leopoldo: Unisinos, 2014.
Conheça métodos preparatórios (utilizados antes do emprego do simplex) para resolver problemas diferentes do padrão
de maximização com restrições do tipo menor ou igual no capítulo 4 do livro “Operations research: applications and
Para se aprofundar na utilização do solver para a solução de problemas de programação linear, sugerimos a leitura do
CONTEUDISTA
CURRÍCULO LATTES