Buscar

Resolução de problemas de programação linear

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

PESQUISA OPERACIONAL 
AULA 02 
 
 
 
 
 
 
 
 
 
 
 
Prof. Ricardo Alexandre Deckmann Zanardini 
 
 
2 
CONVERSA INICIAL 
Em outra ocasião, aprendemos que as técnicas de otimização da 
pesquisa operacional podem ser utilizadas nas mais diversas aplicações reais. 
Vimos que o processo de modelar matematicamente um problema é muito 
importante. Como exemplo, foi apresentado de forma resumida o processo de 
produção de toalhas de rosto e de banho e, em seguida, formulamos dois 
exemplos relacionados a este processo. 
Nesta aula, iremos aprender a resolver problemas de programação linear. 
Inicialmente, estudaremos o método gráfico. Do ponto de vista prático, ele é 
pouco utilizado, pois está limitado a problemas com duas variáveis. No entanto, 
é um método importante para a resolução de pequenos problemas e, 
principalmente, para a compreensão do significado das variáveis, da função 
objetivo, das restrições e da solução ótima de um problema de PL. Em seguida, 
estudaremos o Método Simplex, primeiro e importante método destinado à 
resolução de problemas de programação linear. Como em muitos casos a 
solução analítica de problemas de programação linear é trabalhosa e sujeita a 
erros, veremos que é possível obtermos a solução de problemas de PL por meio 
da computação. 
TEMA 1 – MÉTODO GRÁFICO 
O método gráfico é a primeira forma de resolução de problemas de PL 
que iremos estudar. A sua importância consiste na representação gráfica de um 
problema de PL. Assim, fica mais fácil de compreendermos melhor os elementos 
associados a estes problemas: variáveis, função objetivo, restrições e solução 
ótima. 
Também é um método útil para a resolução de pequenos problemas de 
PL, quando temos duas variáveis e poucas restrições. 
Para resolvermos um problema por meio do método gráfico, o primeiro 
passo é representarmos dois eixos coordenados, um para cada variável. 
Chamando a primeira variável de x1 e a segunda variável de x2, temos: 
 
 
 
3 
Figura 1 – Gráfico 
 
Observe que estamos considerando apenas as porções positivas das 
retas associadas a cada uma das variáveis e a origem do sistema de eixos. Isto 
é feito porque temos as restrições de não negatividade, ou seja, x1 ≥ 0 e x2 ≥ 0. 
Caso tenhamos um problema em que valores negativos são considerados, 
utilizaremos um sistema de eixos coordenados, contendo as partes negativas 
também. Lembrando que a partir da origem, no eixo x1, os valores à direita são 
positivos e os valores à esquerda são negativos. Em relação ao eixo x2, os 
valores acima da origem são positivos e abaixo são negativos. 
Para que possamos compreender como é possível resolvermos 
problemas de PL por meio do método gráfico e para que possamos compreender 
melhor o significado dos elementos destes problemas, vamos considerar um 
exemplo anterior de nossos estudos. 
Exemplo 1: 
Uma indústria têxtil produz toalhas de banho e de rosto. No processo de 
fabricação, cada toalha de banho consome 400 g de tecido, enquanto que para 
a produção de cada toalha de rosto são necessários 180 g de tecido. O lucro da 
indústria para a venda de cada toalha de banho corresponde a R$ 15,00 e para 
cada toalha de rosto corresponde a R$ 7,00. Mensalmente, a indústria tem uma 
disponibilidade de matéria-prima equivalente a 5 toneladas de tecido. Quantas 
toalhas de rosto e quantas toalhas de banho deverão ser produzidas de modo 
 
 
4 
que o lucro mensal seja o maior possível? Formule o problema como um 
problema de programação linear e resolva-o pelo método gráfico. 
Resolução comentada: 
Anteriormente, vimos que a formulação deste problema corresponde a 
max L = 15b + 7r 
s.a. 0,4b + 0,18r ≤ 5000 
b ≥ 0, r ≥ 0 
onde b indica a quantidade de toalhas de banho a serem produzidas e r 
indica a quantidade de toalhas de rosto a serem produzidas. 
Precisamos agora de um sistema de eixos coordenados em que cada 
uma das variáveis está associada a cada um dos eixos. Vamos considerar b 
como sendo o eixo horizontal e r o eixo vertical. 
Figura 2 – Gráfico 
 
 
 
 
5 
 Observe que, se não temos restrições no problema, b e r podem crescer 
infinitamente e qualquer ponto da forma P(b, r) é uma possível solução para o 
problema, já que não limitações. 
Figura 3 – Gráfico 
 
No entanto, a partir do momento que adicionamos uma ou mais restrições, 
passamos a limitar o problema e, consequentemente, limitarmos as possíveis 
soluções do problema, caso existam, a uma região denominada de região 
factível (ou região viável). 
Para entendermos melhor, vamos fazer a representação gráfica da 
restrição: 
0,4b + 0,18r ≤ 5000 
O primeiro passo é escrevermos uma equação associada à inequação 
0,4b + 0,18r ≤ 5000 para que possamos fazer a representação da reta associada 
à restrição. Sendo assim, temos: 
0,4b + 0,18r = 5000. 
Sabemos que para representarmos graficamente uma reta, precisamos 
de dois pontos pertencentes a esta reta. Há uma infinidade de pontos possíveis 
a serem escolhidos. Para facilitarmos os cálculos, primeiro faremos b = 0 e 
 
 
6 
iremos obter o respectivo valor de r. Em seguida, faremos r = 0 para obtermos o 
respectivo valor de b e, assim, termos os dois pontos necessários. 
Para b = 0, temos: 
 
0,4b + 0,18r = 5000 
0,4 (0) + 0,18r = 5000 
0 + 0,18r = 5000 
0,18r = 5000 
r = 5000/0,18 
r = 27777,78 
Logo, o primeiro ponto é A (0; 27777,78), onde o ponto e vírgula separa 
as coordenadas do ponto e a vírgula separa as casas decimais. 
Para r = 0, temos 
0,4b + 0,18r = 5000 
0,4b + 0,18 (0) = 5000 
0,4b + 0 = 5000 
0,4b = 5000 
b = 5000/0,4 
b = 12500 
Assim, temos o segundo ponto B (12500; 0). 
Vamos representar os pontos A (0; 27777,78) e B (12500; 0) no sistema 
de eixos coordenados. 
 
 
 
7 
Figura 4 – Gráfico 
 
Para a representação da restrição, basta considerar a reta que passa 
pelos pontos A e B. Como a restrição consiste em 0,4b + 0,18r ≤ 5000, ou seja, 
é uma desigualdade com sinal de menor ou igual, temos uma região que fica 
abaixo desta reta como sendo a região viável, ou seja, a região que limita as 
possíveis soluções do problema. Por este motivo, desenhamos na reta uma 
pequena seta apontando para a esquerda e para baixo, indicando de que lado 
da reta estão os valores que satisfazem a desigualdade. 
 
 
 
8 
Figura 5 – Gráfico 
 
Considerando ainda as restrições de não negatividade b ≥ 0 e r ≥ 0, a 
região factível está abaixo da restrição, acima do eixo b e à direita do eixo r. 
Figura 6 – Gráfico 
 
 
 
9 
É importante ressaltar que como a restrição b ≥ 0 é uma restrição de maior 
ou igual, colocamos uma pequena seta apontando para a esquerda no eixo r 
indicando de que lado da reta estão os valores de b maiores ou igual a zero e 
como r ≥ 0, colocamos no eixo b uma seta para cima indicando a região que 
contém os valores de r maiores ou igual a zero. 
O significado das restrições de um problema de PL é a limitação da região 
que contém as soluções do problema. Estamos falando em “soluções”, pois nos 
referimos aos pontos que estão na região factível, ou seja, qualquer ponto da 
forma P (b, r) que satisfaz as restrições do problema. 
Dentro da região factível, temos infinitas soluções. No entanto, 
precisamos obter a solução que maximiza a função objetivo e, neste caso, 
podemos ter uma única solução, infinitas soluções ou podemos ter também 
problemas que não possuem solução ótima. 
Em particular, no caso do nosso exemplo, para obtermos a solução ótima, 
vamos fazer a representação da função objetivo. 
Graficamente, a função objetivo é um vetor que tem as componentes 
dadas pelos coeficientes das variáveis. Assim, como a função objetivo do nosso 
exemplo é: 
max L = 15b + 7r 
o respectivo vetor corresponde a: 
v = (15, 7). 
Como os elementos de v são bem menores do que as coordenadas dos 
pontos A e B, e como precisamos da direção de crescimento da função objetivo, 
ou seja, da direçãodo vetor v, para que possamos visualizar o vetor, vamos 
considerar um múltiplo de v dado por kv, onde k é um número real positivo, que 
tem a seguinte representação: 
 
 
 
10 
Figura 7 – Gráfico 
 
O vetor v, assim como o vetor kv, indica o crescimento da função objetivo, 
ou seja, é um vetor que aponta para a solução ótima. E como faremos para 
identificar qual é a solução ótima? Basta considerarmos retas paralelas, 
representadas a seguir por linhas pontilhadas, ortogonais ao vetor kv, ou seja, 
retas que formam 90° com o vetor kv, e, a partir delas, vamos obter a solução do 
problema. 
 
 
 
11 
Figura 8 – Gráfico 
 
Figura 9 – Gráfico 
 
 
 
 
12 
Figura 10 – Gráfico 
 
Figura 11 – Gráfico 
 
Note que na medida em que fomos traçando as retas paralelas, ortogonais 
ao vetor kv no sentido do crescimento do vetor, o ponto da região factível 
 
 
13 
associado à reta mais distante da origem do vetor é o ponto A (0; 27777,78). 
Assim, podemos dizer que este ponto maximiza a função objetivo e, portanto, é 
a solução ótima do problema. 
Assim, para que o lucro mensal da indústria seja o maior possível, a 
empresa precisa produzir 0 toalhas de banho e 27777 toalhas de rosto. Como 
não podemos ter toalhas fracionadas (0,78 de uma toalha), consideramos 
apenas a parte inteira da solução. 
E o valor da função objetivo? Basta substituirmos b por 0 e r por 27777,78 
na função objetivo ou, para estar de acordo com o valor inteiro, podemos 
substituir r por 27777. Vamos considerar r = 27777,78. Assim, temos 
L = 15b + 7r 
L = 15(0) + 7(27777,78) 
L = 0 + 194444,50 
L = 194444,50 
Observe que a solução de um problema de PL sempre estará em um 
vértice da região factível. Podemos ter uma única solução ou infinitas soluções. 
O caso onde temos infinitas soluções ocorre quando a restrição que contém 
solução ótima também é ortogonal ao vetor kv. 
Como a solução ótima está em um vértice da região factível, uma outra 
maneira de obtermos esta solução é substituirmos cada vértice da região factível 
na função objetivo e identificar em qual deles temos o maior lucro. 
Para este exemplo, os vértices são: O (0, 0), A (0; 27777,78) e B (12500, 
0). 
Considerando O (0, 0), temos: 
L = 15b + 7r 
L = 15(0) + 7(0) 
L = 0 + 0 
L = 0 
ou seja, para o vértice O (0, 0), L = 0. 
Para o vértice A (0; 27777,78), temos: 
L = 15b + 7r 
L = 15(0) + 7(27777,78) 
L = 0 + 194444,5 
L = 194444,5 
Para B (12500, 0), temos: 
 
 
14 
L = 15b + 7r 
L = 15(12500) + 7(0) 
L = 187500 + 0 
L = 187500 
 Assim, a solução ótima ocorre no vértice A (0; 27777,78), onde o lucro 
máximo é dado por L = 194444,5. 
Vamos considerar agora o mesmo exemplo, mas com uma nova restrição, 
uma limitação na produção máxima de toalhas de rosto. 
Exemplo 2: 
Uma indústria têxtil produz toalhas de banho e de rosto. No processo de 
fabricação, cada toalha de banho consome 400 g de tecido, enquanto que para 
a produção de cada toalha de rosto são necessários 180 g de tecido. O lucro da 
indústria para a venda de cada toalha de banho corresponde a R$ 15,00 e para 
cada toalha de rosto corresponde a R$ 7,00. Mensalmente, a indústria tem uma 
disponibilidade de matéria-prima equivalente a 5 toneladas de tecido. A indústria 
tem um limite de produção de no máximo 20000 toalhas de rosto. Quantas 
toalhas de rosto e quantas toalhas de banho deverão ser produzidas de modo 
que o lucro mensal seja o maior possível? Formule o problema como um 
problema de programação linear e resolva-o pelo método gráfico. 
Resolução comentada: 
Anteriormente, chegamos à conclusão de que a formulação do problema 
é dada por 
max L = 15b + 7r 
s.a. 0,4b + 0,18r ≤ 5000 
r ≤ 20000 
b ≥ 0, r ≥ 0 
onde b é a quantidade de toalhas de banho a serem produzidas e r a quantidade 
de toalhas de rosto a serem produzidas. 
 A partir das restrições do problema, vimos no Exemplo 1 que a restrição 
0,4b + 0,18r ≤ 5000 corresponde à região do plano abaixo da reta que passa 
pelos pontos A (0; 27777,78) e B (12500; 0). Como a restrição é de menor ou 
igual, os pontos pertencentes à reta também satisfazem a desigualdade. 
 
 
 
15 
Figura 12 – Gráfico 
 
Neste exemplo, temos também a restrição relacionada à quantidade 
máxima de toalhas de rosto a serem produzidas: 
r ≤ 20000 
Precisamos representar graficamente esta restrição. Como r ≤ 20000 para 
qualquer valor de b, temos que r = 20000 é uma reta paralela ao eixo b e que 
passa pelo ponto C (0, 20000). 
 
 
 
16 
Figura 13 – Gráfico 
 
 Temos ainda que a restrição é de menor ou igual. Assim, precisamos 
traçar a reta que passa por C e é paralela ao eixo b e indicaremos com uma seta 
para baixo a região do plano que satisfaz esta restrição. 
Figura 14 – Gráfico 
 
 
 
17 
A região factível está limitada pelos eixos b e r e pelas restrições 0,4b + 
0,18r ≤ 5000 e r ≤ 20000. 
Figura 15 – Gráfico 
 
Como a solução do problema está em um dos vértices da região factível, 
precisamos obter as coordenadas do vértice D associado à intersecção das retas 
0,4b + 0,18r = 5000 e r = 20000. Como r = 20000, basta substituirmos este valor 
na equação 0,4b + 0,18r = 5000 para obtermos o respectivo valor de b. 
0,4b + 0,18r = 5000 
0,4b + 0,18(20000) = 5000 
0,4b + 3600 = 5000 
0,4b = 5000 – 3600 
0,4b = 1400 
b = 1400/0,4 
b = 3500 
Logo, o vértice D tem coordenadas (3500; 20000) 
 
 
 
18 
Figura 16 – Gráfico 
 
Agora que já sabemos as coordenadas dos vértices da região factível, ou 
seja, O(0, 0), B(12500; 0), C(0; 20000) e D(3500; 20000), podemos obter a 
solução ótima do problema de duas formas: graficamente, considerando o vetor 
kv associado à função objetivo ou substituindo as coordenadas de cada vértice 
na função objetivo L = 15b + 7r. É importante comentar que o ponto A(0; 
27777,78) está fora da região factível e neste caso não pode ser considerado 
uma solução do problema. 
Considerando o vetor kv = k(15, 7) e as respectivas retas paralelas que 
são ortogonais a este vetor, temos: 
 
 
 
19 
Figura 17 – Gráfico 
 
Figura 18 – Gráfico 
 
 
 
 
 
20 
Figura 19 – Gráfico 
 
 
 
 
21 
Figura 20 – Gráfico 
 
 
 
 
 
22 
Figura 21 – Gráfico 
 
 
Fica fácil perceber que a solução ótima do problema está no vértice 
D(3500, 20000), pois é o vértice mais afastado seguindo a direção do vetor kv. 
Assim, temos que a solução ótima para este problema consiste na produção de 
3500 toalhas de banho e 20000 toalhas de rosto. O lucro mensal máximo é 
calculado a partir da substituição de b = 3500 e r = 20000 na função objetivo L = 
15b + 7r. 
L = 15b + 7r 
L = 15(3500) + 7(20000) 
L = 52500 + 140000 
L = 192500 
ou seja, o lucro máximo corresponde a R$ 192500,00. 
 Comparando a solução obtida no Exemplo 1 com a solução do 
Exemplo 2, a restrição r ≤ 20000 limitou a produção máxima de toalhas de rosto 
e, consequentemente, reduziu o lucro mensal máximo. No entanto, esta restrição 
pode estar relacionada a uma estratégia da empresa ou a uma demanda máxima 
para as toalhas de rosto. 
 
 
23 
A seguir, estudaremos o Método Simplex, um método destinado à 
resolução de problemas de programação linear onde podemos resolver 
problemas com mais restrições e mais do que duas variáveis. 
TEMA 2 – MÉTODO SIMPLEX 
O Método Simplex é muito utilizado na resolução de problemas de 
programação linear. Foi desenvolvido por George B. Dantzig, e marca o início da 
pesquisa operacional. Para a utilização do método, partimos de uma solução 
inicial básica onde as variáveis do problema são iguais a zero e vamos 
caminhando pelos vértices da região factível até obtermos a solução ótima. O 
Método Simplex pode ser utilizado em problemas com duas ou mais variáveis. 
Para que possamos entender como o método funciona, vamos considerar 
o seguinte exemplo: 
Exemplo 1: 
Uma indústria têxtil produz toalhas de banho e de rosto. No processo de 
fabricação,cada toalha de banho consome 400 g de tecido enquanto que para 
a produção de cada toalha de rosto são necessários 180 g de tecido. O lucro da 
indústria para a venda de cada toalha de banho corresponde a R$ 15,00 e para 
cada toalha de rosto corresponde a R$ 7,00. Mensalmente, a indústria tem uma 
disponibilidade de matéria-prima equivalente a 5 toneladas de tecido. A indústria 
tem um limite de produção de no máximo 20000 toalhas de rosto. Quantas 
toalhas de rosto e quantas toalhas de banho deverão ser produzidas de modo 
que o lucro mensal seja o maior possível? Formule o problema como um 
problema de programação linear e resolva-o por meio do Método Simplex. 
Resolução comentada: 
Sabemos que a formulação deste problema é 
max L = 15b + 7r 
s.a. 0,4b + 0,18r ≤ 5000 
r ≤ 20000 
b ≥ 0, r ≥ 0 
Para podermos resolver o problema, precisamos de equações 
equivalentes às inequações de cada uma das restrições. Assim, precisamos 
adicionar uma variável de folga para cada restrição de <= (menor ou igual). A 
variável de folga indica a quantidade que falta para que a igualdade entre os dois 
membros da inequação seja verificada. Como a folga não representa lucro, o 
 
 
24 
coeficiente de cada variável de folga na função objetivo é sempre igual a zero. 
Logo, acrescentando as variáveis de folga f1 e f2, temos a seguinte formulação. 
max L = 15b + 7r + 0f1 + 0f2 
s.a. 0,4b + 0,18r + f1 = 5000 
r + f2 = 20000 
b ≥ 0, r ≥ 0 
Agora que temos a formulação, vamos criar uma tabela contendo os 
coeficientes da função objetivo, das restrições e contendo os termos 
independentes. 
Tabela 1 – Tabela com coeficientes, restrições e termos independentes 
 b r f1 f2 
L0 0 -15 -7 0 0 
L1 5000 0,4 0,18 1 0 
L2 20000 0 1 0 1 
Em função das características do Método Simplex, os coeficientes da 
função objetivo estão na tabela com os respectivos sinais invertidos. Isto ocorre 
para que a cada iteração do método, o valor de L, número que aparece no canto 
superior esquerdo, esteja com o sinal correto. Para facilitar os cálculos que 
veremos a seguir, é importante colocarmos nomes em cada uma das linhas da 
tabela (L0, L1 e L2). 
As variáveis b e r são as de variáveis não básicas. Toda variável não 
básica tem valor igual a zero. Assim, b = 0, r = 0 e, consequentemente, L = 0. As 
variáveis básicas f1 e f2 possuem seus valores apresentados na primeira coluna 
das linhas L1 e L2: f1 = 5000 e f2 = 20000. 
Agora que temos a tabela inicial, vamos começar as iterações do Método 
Simplex, lembrando que o nosso objetivo é maximizar a função objetivo. Assim, 
o primeiro passo é identificar qual é o coeficiente da função objetivo que aumenta 
mais o valor de L. É importante lembrar que na tabela os coeficientes da função 
objetivo estão com os sinais trocados. Assim, o valor mais negativo é o que mais 
aumenta o valor da função objetivo no momento. Olhando a primeira linha da 
tabela, podemos concluir que -15 é o valor procurado. Como -15 é o coeficiente 
de b, dizemos que a variável b irá entrar na base, ou seja, passará a fazer parte 
da solução do problema. Mas para que uma variável não básica entre na base, 
uma variável básica precisa sair da base. No momento, as variáveis básicas são 
 
 
25 
f1 e f2. A variável que sai da base é aquela cujo recurso limita primeiro o 
problema. Para sabermos qual é o máximo que podemos produzir referente à 
variável que está entrando na base, precisamos dividir o total dos recursos 
disponíveis pela quantidade utilizada pela variável. Assim, vamos dividir 5000 
por 0,4 e 20000 por 0, lembrando que a divisão por 0 não existe, mas quando o 
denominador é um número muito próximo de 0, o resultado da divisão é infinito, 
ou seja, uma quantidade muito grande. Assim, o menor resultado que indica qual 
é a variável que deixará a base corresponde à divisão de 5000 por 0,4. Logo, f1 
é a variável que sai da base. Observe que quando olhamos a coluna referente à 
variável f1, identificamos em qual linha o coeficiente é igual a 1. 
Precisamos agora identificar quem é o pivô, elemento que está na 
intersecção da coluna da variável que entra com a linha da variável que sai. 
Tabela 2 – Identificação do pivô 
 ↓ 
b 
 
r 
 
f1 
 
f2 
L0 0 -15 -7 0 0 
 ← L1 5000 0,4 0,18 1 0 
L2 20000 0 1 0 1 
 
5000/0,4 = 12500 
20000/0 = Não existe 
Entra: b 
Sai: f1 
Pivô: 0,4 
Devemos sempre transformar o pivô em 1. Como o pivô é igual a 0,4, 
basta dividirmos toda a linha L1 por 0,4, ou seja, 5000 / 0,4 = 12500, 0,4 / 0,4 = 
1, 0,18 / 0,4 = 0,45, 1 / 0,4 = 2,5 e 0 / 0,4 = 0, o que resulta em 
 
 
 
26 
Tabela 3 – Transformação do pivô em “1” 
 b r f1 f2 
L0 0 -15 -7 0 0 
L1 12500 1 0,45 2,5 0 
L2 20000 0 1 0 1 
Agora vamos zerar os demais coeficientes da coluna da variável básica. 
Esta é uma das características da variável básica, o pivô é igual a 1 e os demais 
elementos são iguais a zero. 
Observe que o elemento da coluna referente a b que está na linha L2 já é 
igual a zero. Assim, basta zerarmos o coeficiente da linha L0. Vamos multiplicar 
a linha do pivô (linha L1) pelo coeficiente da linha a ser zerada (linha L0) com o 
sinal invertido, ou seja, vamos multiplicar por 15. Em seguida, precisamos somar 
os resultados com os respectivos coeficientes da linha L0. 
As operações a serem feitas são: 
12500 . 15 + 0 = 187500 
1 . 15 + (-15) = 0 
0,45 . 15 + (-7) = -0,25 
2,5 . 15 + 0 = 37,5 
0 . 15 + 0 = 0 
A partir destes resultados, temos a seguinte tabela referente ao final da 
primeira iteração: 
Tabela 4 – Resultado 
 b r f1 f2 
L0 187500 0 -0,25 37,5 0 
L1 12500 1 0,45 2,5 0 
L2 20000 0 1 0 1 
Olhando na linha L0, podemos perceber que o coeficiente de r é negativo 
(-0,25). Portanto, precisamos realizar mais uma iteração do Método Simplex. A 
variável que entra na base é r e a variável que sai da base pode ser b ou f2. 
Precisamos fazer as seguintes divisões para identificarmos qual variável básica 
deixará a base: 
 
 
 
 
27 
12500 / 0,45 = 27777,78 
20000 / 1 = 20000 
Como o menor valor resultado obtido é 20000, temos que f2 deixará a 
base, pois esta é a variável básica associada à linha L2. O pivô é o número que 
está na coluna de r e na linha L2, ou seja, o pivô é igual a 1. 
Tabela 5 – Iteração para o pivô 
 
B 
↓ 
R 
 
f1 
 
f2 
L0 187500 0 -0,25 37,5 0 
L1 12500 1 0,45 2,5 0 
← L2 20000 0 1 0 1 
 
Entra: r 
Sai: f2 
Pivô: 1 
 Precisamos zerar 0,45 e -0,25. 
 Inicialmente, vamos multiplicar a linha L2 por -0,45 e vamos somar com a 
linha L1. 
 As operações são: 
-0,45 . 20000 + 12500 = 3500 
-0,45 . 0 + 1 = 1 
-0,45 . 1 + 0,45 = 0 
-0,45 . 0 + 2,5 = 2,5 
-0,45 . 1 + 0 = -0,45 
 Assim, a tabela com a nova linha L1 é: 
 
 
 
28 
Tabela 6 – Tabela com nova linha L1 
 b r f1 f2 
L0 187500 0 -0,25 37,5 0 
L1 3500 1 0 2,5 -0,45 
L2 20000 0 1 0 1 
Agora vamos multiplicar a linha L2 por 0,25 e vamos somar com a linha 
L0. 
 As operações feitas são: 
0,25 . 20000 + 187500 = 192500 
0,25 . 0 + 0 = 0 
0,25 . 1 + (-0,25) = 0 
0,25 . 0 +37,5 = 37,5 
0,25 . 1 + 0 = 0,25 
 A tabela referente ao final da segunda iteração é: 
Tabela 7 – Tabela final da segunda iteração 
 b r f1 f2 
L0 192500 0 0 37,5 0,25 
L1 3500 1 0 2,5 -0,45 
L2 20000 0 1 0 1 
 Como não temos coeficientes negativos na linha L0, a solução ótima é: 
b = 3500 
c = 20000 
L = 192500 
Vimos como é possível resolvermos problemas de programação linear por 
meio do Método Simplex. Na prática, problemas de PL são resolvidos pelo 
Método Simplex, mas com o uso de recursos computacionais que auxiliam na 
obtenção da solução de uma forma rápida e eficiente. 
TEMA 3 – RECURSOS COMPUTACIONAIS PARA A RESOLUÇÃO DE 
PROBLEMAS DE PROGRAMAÇÃO LINEAR 
Um problema de programação linear pode ser resolvido pelo método 
simplex: ele consiste em realizarmos operações de soma, subtração, 
multiplicação e divisão na função objetivo e nas restrições seguindo alguns29 
critérios. A resolução manual pode ser feita, mas é trabalhosa e quanto maior o 
número de variáveis e de restrições, maior é o tempo e o esforço para obtermos 
a solução. Por isso, existem alguns softwares destinados à resolução, não 
apenas de problemas deste tipo, mas de muitos outros problemas relacionados 
à pesquisa operacional. Alguns softwares são gratuitos e alguns deles são 
pagos. No decorrer de nossos estudos, utilizaremos bastante a biblioteca PuLP 
destinada à resolução de problemas de programação linear. Esta biblioteca foi 
desenvolvida para ser utilizada por uma importante linguagem de programação, 
o Python. Veremos nesta aula como é possível utilizar a biblioteca PuLP. 
Uma outra solução gratuita e muito utilizada é a Aplicação PO1. Podemos 
utilizar esta aplicação para a resolução de problemas de programação linear, 
problemas de transporte, árvore mínima, fluxo máximo, além de outros tipos de 
problemas de PO. 
Figura 22 – Interface da Aplicação PO 
 
Fonte: Maurício Pereira dos Santos. 
Outro software bastante útil é o WinQSB, um software gratuito 
desenvolvido por Yih-Long Chang. É um pacote de ferramentas com o intuito de 
servir de suporte para a tomada de decisões baseada em problemas de pesquisa 
operacional. O problema é que este software foi desenvolvido para ambientes 
32 bits e atualmente a maioria dos sistemas são 64 bits. Além destes, existe 
também o Solver do Microsoft® Office Excel, Linear Interactive and Discret 
 
1 Disponível em: <mpsantos.com.br>. Acesso em: 15 dez. 2021. 
 
 
30 
Optimizer (LINDO), Language for Interactive General Optimizer (LINGO), entre 
outros. 
O uso de softwares na pesquisa operacional é de extrema importância, 
pois precisamos resolver problemas de uma forma rápida e sem erros. 
TEMA 4 – INTRODUÇÃO AO PYTHON EM PROBLEMAS DE PROGRAMAÇÃO 
LINEAR 
O Python é uma importante linguagem de programação. É uma linguagem 
simples e muito poderosa. Seu início foi em 1991, no Centrum Wiskunde & 
Informatica, CWI, um centro de matemática e computação localizado em 
Amsterdam, na Holanda. O pioneiro no desenvolvimento da linguagem foi o 
matemático Guido Van Rossum e o objetivo principal era a criação de uma 
linguagem interpretada, mas com comandos simples de entender. Para 
resolvermos problemas de programação linear utilizando o Python, não 
precisamos ter conhecimentos relacionados à programação de computadores. 
Iremos utilizar a bibliotecas PuLP desenvolvida para o Python. 
Antes de aprendermos a utilizar esta biblioteca, precisamos aprender a 
acessar um serviço gratuito hospedado pelo Google que tem como objetivo 
incentivar a aprendizagem de máquina e a inteligência artificial. Este ambiente é 
o Google Colaboratory, mais conhecido como Google Colab. 
Para trabalharmos com o Python, no navegador, precisamos acessar 
esse site2. 
Na página inicial do Google Colab, são apresentadas informações 
importantes e alguns exemplos do que pode ser feito. 
 
 
2 Disponível em: <colab.research.google.com>. Acesso em: 15 dez. 2021. 
 
 
31 
Figura 23 – Página Inicial do Google Colab 
 
Fonte: Google/Ricardo Zanardini. 
Para utilizarmos o ambiente, precisamos efetuar o login com uma conta 
Google. Vamos clicar em “Fazer login”, digitar o e-mail ou clicar em um já 
existente e digitar a senha. 
Figura 24 – Login 
 
Fonte: Google/Ricardo Zanardini. 
Caso já tenha utilizado o Google Colab, na página inicial aparecerão os 
projetos recentes. 
Caso contrário, teremos as informações iniciais relacionadas ao Colab. 
 
 
32 
Figura 25 – Projetos Recentes 
 
Fonte: Google/Ricardo Zanardini. 
Para começarmos a utilizar o Colab, o primeiro passo é clicarmos em 
Arquivo e em seguida em Novo notebook. 
Figura 26 – Tela do Google Colab, com a função “Novo notebook” destacada 
 
Fonte: Google/Ricardo Zanardini. 
 
 
33 
 Após estes passos, estamos prontos para utilizarmos a biblioteca PuLP. 
TEMA 5 – USO DO PYTHON EM PROBLEMAS DE PROGRAMAÇÃO LINEAR 
Utilizamos a biblioteca “PuLP” do Python para resolvermos problemas de 
otimização. Veremos como é possível resolver problemas de programação linear 
por meio do Python. 
Exemplo 1: Uma indústria têxtil produz toalhas de banho e de rosto. No 
processo de fabricação, cada toalha de banho consome 400 g de tecido, 
enquanto que para a produção de cada toalha de rosto são necessários 180 g 
de tecido. O lucro da indústria para a venda de cada toalha de banho 
corresponde a R$ 15,00 e para cada toalha de rosto corresponde a R$ 7,00. 
Mensalmente, a indústria tem uma disponibilidade de matéria-prima equivalente 
a 5 toneladas de tecido. A indústria tem um limite de produção de no máximo 
20000 toalhas de rosto. Quantas toalhas de rosto e quantas toalhas de banho 
deverão ser produzidas de modo que o lucro mensal seja o maior possível? 
Formule o problema como um problema de programação linear e resolva-o 
utilizando a biblioteca PuLP do Python. 
Resolução comentada: 
Vimos que a formulação relacionada a este problema é dada por 
max L = 15b + 7r 
s.a. 0,4b + 0,18r ≤ 5000 
r ≤ 20000 
b ≥ 0, r ≥ 0 
Para resolvermos este problema, o primeiro passo é instalarmos o pacote 
PuLP executando os seguintes comandos em uma célula de código do Google 
Colab: 
import sys 
!{sys.executable} -m pip install Pulp 
 
 
 
34 
Figura 27 – Execução dos comandos do exemplo 
 
Fonte: Google/Ricardo Zanardini. 
Agora que já instalamos a biblioteca PuLP, podemos resolver o problema. 
A sequência de comandos é: 
from pulp import * 
prob = LpProblem('Exemplo1',LpMaximize) 
x1=LpVariable("Toalha de Banho",0) 
x2=LpVariable("Toalha de Rosto",0) 
prob += 15*x1 + 7*x2 
prob += 0.4*x1 + 0.18*x2 <= 5000 
prob += x2 <= 20000 
prob.solve() 
for v in prob.variables(): 
 print(v.name, "=", v.varValue) 
print("Lucro máximo = ", value(prob.objective)) 
 
 
 
35 
Figura 28 – Código 
 
Fonte: Google/Ricardo Zanardini. 
A solução consiste na produção de 3500 toalhas de banho, 20000 toalhas 
de rosto e o lucro máximo referente a estas quantidades corresponde a R$ 
192500,00. 
Seguindo estes comandos e alterando apenas as variáveis, a função 
objetivo e as restrições, é possível resolvermos problemas de programação 
linear de uma forma bastante fácil, rápida e eficiente. 
FINALIZANDO 
Chegamos ao final da aula sobre pesquisa operacional. Começamos 
estudando o método gráfico e, a partir deste método, conseguimos entender 
melhor o significado das variáveis, restrições, função objetivo e da solução ótima 
de um problema de Programação Linear. Em seguida, vimos como é possível 
utilizar o Método Simplex na resolução de problemas de PL. Apresentamos 
diversos softwares destinados à resolução de problemas de pesquisa 
operacional e, finalmente, vimos que é possível utilizarmos a biblioteca PuLP 
desenvolvida para o Python para a resolução de problemas de programação 
linear.

Continue navegando