Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila
Apostila
2 Revisão Matemática 21
2.1 Equações lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.1 Solução de um Sistema de Equações Lineares . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1.2 Operações elementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1.3 Solução de Sistema de Equações Lineares, caso m = n . . . . . . . . . . . . . . . . . . . . 22
2.1.4 Método de Gauss-Jordan, caso m = n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1.5 Solução de Sistema de Equações Lineares, caso n > m . . . . . . . . . . . . . . . . . . . . 24
2.2 Mudança de Base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2.1 O Pivoteamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2.2 Seleção das variáveis básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2.3 Construção da Variáveis Básicas e Variáveis Artificiais . . . . . . . . . . . . . . . . . . . . 27
2.3 Espaços Vetoriais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.1 Definição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.2 Operações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.3 Combinação Linear de Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.4 Dimensão de um Espaço Vetorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3.5 Base e Coordenadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3.6 Posto (ra ) de uma matriz como um Conjunto de Vetores . . . . . . . . . . . . . . . . . . . 30
2.4 Conjuntos Convexos e Combinação Convexa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.4.1 Conjunto Convexo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.4.2 Combinação Convexa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.4.3 Interpretação Geométrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.4.4 Ponto Extremo de um Conjunto Convexo . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.5 Exercı́cios Propostos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1
SUMÁRIO SUMÁRIO
3 Método Simplex 36
3.1 Teorema Fundamental da Programação Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.1.1 Transição da solução gráfica para a solução algébrica . . . . . . . . . . . . . . . . . . . . 37
3.2 Método Simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.1 Modelo de Programação Linear em forma de equação - Forma Padrão . . . . . . . . . . . 37
3.2.2 Forma Padrão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.3 Forma Canônica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2.4 Conversão de desigualdades em equações com o lado direito não negativo . . . . . . . . . 39
3.2.5 Como lidar com variáveis irrestritas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.6 Variáveis Não Positivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.7 Transformando o Problema de Maximização em Minimização . . . . . . . . . . . . . . . . 41
3.2.8 Princı́pios do Método Simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.2.9 Método Simplex na forma de quadros - Tableau Simplex . . . . . . . . . . . . . . . . . . . 46
3.2.10 Análise de Casos Especiais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.2.11 Base Artificial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2.12 O Método do M-Grande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.2.13 O Método das Duas Fases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.3 Análise de Sensibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.3.1 Análise de Sensibilidade gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.3.2 Análise de Sensibilidade algébrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.4 Exercı́cios Propostos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4 Dualidade 69
4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.2 Definição do Problema Dual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.2.1 Propriedades da Dualidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.2.2 Teoremas Fundamentais da Dualidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.3 Método Dual Simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.3.1 Resumo do Método . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.4 Exercı́cios Propostos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
2
SUMÁRIO SUMÁRIO
3
CAPÍTULO 1
4
Capı́tulo 1. Introdução à Pesquisa Operacional PL
1. Primeiro, como trata-se de um retângulo, os lados opostos devem ter o mesmo tamanho, identificaremos a
largura de w e comprimento de l.
L
w +l = (1.1)
2
3. Por serem dimensões fı́sicas da matéria, tanto w quanto l devem ser positivos. Como h é estabelecido pelo
fornecedor do fabricante, não entra nos cálculos do volume, pois se acharmos a maior área teremos o maior
volume para h.
4. A área é A = wl.
Nossa questão então é maximizar A sujeita a equação (1.1) e das restrições do item 3. Para tanto, devemos
proceder como um problema de valor máximo do cálculo:
• Como L é um número dado, pode ser tratado como constante, deste modo podemos deixar w em função de
l, ou vice-versa.
L L − 2l
w +l = =⇒ w =
2 2
• Portanto a região do domı́nio de w e l é a reta
L − 2l
w=
2
na qual a imagem está no plano z como a área A. Assim, da mesma maneira que deixamos w em função de
l, podemos deixar agora a área A em função apenas de l, substituindo o valor de w. Obtemos:
L − 2l
A= l
2
Distribuindo l, temos:
Ll − 2l 2
A=
2
δA
• Agora para achar um ponto máximo (ou mı́nimo) executamos a derivação =0
δl
δA 1
= (L − 4l)
δl 2
Portanto se
1 L
(L − 4l) = 0 =⇒ L = 4l =⇒ l =
2 4
Se
L
w +l =
2
Chegamos finalmente na solução (S):
L L
w= el=
4 4
L
• Concluı́mos que a maior área é obtida quando o retângulo é um quadrado de lado , e que seu volume
4
L2 h
V =
16
O exemplo acima (Exemplo 1) é simples, contudo, grande parte dos problemas de PO envolve número maior
tanto de equações (e inequações) quanto de variáveis, incluindo restrições dos valores que as variáveis podem
assumir. Como no exemplo a seguir, trabalharemos muitos conceitos de Álgebra Linear (tratada na Programação
Linear) ao longo da formulação dos modelos e na obtenção das respostas. Nestes problemas, as variáveis e as
restrições podem estar envolvidas em desigualdades, ou seja: o problema torna-se cada vez mais complexo à medida
em que esse fenômeno, a ser modelado, sofre diversas influências importantes. Para efeito ilustrativo, podemos
tomar um sistema mais restrito e apenas interpretativo, vejamos então.
Exemplo 2. Uma empresa produz dois produtos, P e Q, em cada uma de suas fábricas, X e Y. Ao fabricar tais
produtos, os poluentes dióxido de enxofre (SO2 ), óxido nı́trico (NOx ) e material particulado (MP) são produzidos.
As quantidades de poluentes foram monitoradas e quantificadas ( em quilogramas) e estão dispostas pela matriz:
O custo diário para remover cada quilograma de poluente é (em reais) dado pela matriz:
X Y
16 24 Dióxido de Enxofre
C = 14 18 Óxido nı́trico
30 20 Material Particulado
Qual o significado, por exemplo, do produto matricial de P.C ? Qual fábrica polui mais, isto é, gera mais efluente
e consequentemente tem seu tratamento encarecido?
1.2 Metodologia da PO
A metodologia da PO segue etapas definidas como em qualquer projeto, podendo ser decomposto em 5 estágios
básicos segundo [14]:
1. Identificação do problema - “envolve definir o escopo do problema sob investigação. Essa função deve ser
executada por toda a equipe de PO” [14]. Em PO quanto mais complexo e multidisciplinar é um problema,
maior abrangência de conhecimento é necessária e por consequência uma equipe mais especializada. Nesta
etapa buscamos três elementos básicos:
2. Construção do modelo -“implica uma tentativa de traduzir a definição do problema em relações ma-
temáticas”[14]. Se o modelo for simples e se ajustar à um dos métodos padrões, como a programação
linear, então podemos chegar em soluções com os algoritmos disponı́veis. Já se o modelo for complexo, a
equipe pode simplificar a situação tendendo à uma abordagem heurı́stica ou de simulação. Em alguns casos,
ocorre a combinação dos modelos matemáticos, heurı́sticos e simuladores.
3. Determinação da solução do modelo -“é de longe a fase mais simples ... porque se baseia na utilização
de algoritmos”[14]. Neste estágio ocorre o que se chama de análise de sensibilidade, essencial quando os
parâmetros do modelo não podem ser aferidos com precisão.
4. Teste e validação da solução proposta -“verifica se o modelo proposto ... prevê adequadamente o com-
portamento do sistema em estudo” [14]. Em sistemas com uma base de dados histórica (p.e. pluviosidade
em uma região), o modelo é válido se, sob condições similares de entrada, reproduz relativamente bem as
saı́das anteriores. Porém, como geralmente a análise leva em conta os dados anteriores, o parecer tende a ser
favorável, o que exige cuidado com eventos futuros imprevisı́veis. Em sistemas sem base de dados, tende-se
a comparar o modelo com simulações.
5. Implementação da solução -“envolve a tradução dos resultados em instruções operacionais inteligı́veis ...
emitidas as pessoas que administrarão o sistema recomendado”[14].
Exemplo 3. Na implantação de um barragem de grande consumo de concreto, decidiu-se utilizar como fontes de
agregrados graúdos:
(a) A composição granulométrica é: 10% (19-38 mm), 20% (38-76 mm) e 70% (76-152 mm)
(b) O custo é $6, 00/m3
(a) A composição granulométrica é: 5% (2.4-19 mm), 35% (19-38 mm) e 60% (38-76 mm)
(b) O custo é $7, 00/m3
(a) A composição granulométrica é: 20% (2.4-19 mm), 78% (19-38 mm) e 2% (38-76 mm)
(b) O custo é $18, 00/m3
Por meio de um estudo prévio, chegou-se em uma faixa de composição granulométrica ideal, sendo:
O problema consiste em determinar as frações de cada fonte para a composição ideal, de forma a minimizar o
custo de produção do concreto. As variávies de decisão são:
x1 quantidade (m3 ) de britas granı́ticas.
x1 + x2 + x3 = 1
x1 ≥ 0 x2 ≥ 0 x3 ≥ 0
Outro exemplo comum é o de planejamento de produção por vários ciclos de tempo (meses,semanas e dias).Vejamos
um exemplo deste tipo:
Exemplo 4. Durante o próximo semestre, uma fabricante têxtil deve atender aos seguintes compromissos de sua
seção de malharia:
Ao final de dezembro, há 500 peças em estoque e a empresa só tem capacidade para produzir 3000 peças
mensais. Entretanto, usando horas extras, a empresa pode produzir até 600 peças a mais que sua capacidade
nominal.
O custo variável de produzir uma peça é de R$ 3 por peça, e o custo de produzir em horas extras é de R$ 3.4
por peça. Além disso, peças que ficam em estoque de um mês para outro provocam custo aproximado de R$ 0.25
por peça.
Monte um modelo linear que satisfaça a demanda, mas com minimização dos custos de produção.
A solução está em se definir xt , yt e et para t = 1:6, para indicarem respectivamente a produção nominal, em
horas extras, e estoque ao final de cada mês.
Problemas de transporte ou alocação de recursos em determinados percursos também são alvos comuns de
estudos da PO.
Exemplo 5. Considere uma companhia distribuidora de bebidas que tem 2 centros de produção (m = 2) - Arara-
quara e São José dos Campos - e 3 mercados consumidores principais (n = 3) - São Paulo, Belo Horizonte e Rio
de Janeiro. O custo unitário (cij ) de se transportar uma unidade do produto de cada centro de produção a cada
mercado consumidor, bem como as demandas (bj ) de cada mercado e a quantidade disponı́vel do produto em cada
centro de produção (ai ) no próximo perı́odo, são dados pela tabela abaixo.
Mercado
Centro de Produção São Paulo(1) Belo Horizonte(2) Rio de Janeiro(3) Suprimento(ai )
Araraquara (1) 4 2 5 800
S. J. Campos (2) 11 7 4 1000
Demanda(mercado) 500 400 900
1.3.1 Solução em PO
Como dito no final do item anterior, nem sempre um problema tem uma solução possı́vel, em contrapartida,
surgem problemas que aceitam diversos conjuntos de valores como solução do sistema. Deste modo devemos
expressar algumas terminologias importantes quanto ao assunto solução, como:
1. Solução - Qualquer especificação de valores, dentro do domı́nio da função objetivo f(x), para as variáveis de
decisão, independentemente de se tratar de uma escolha desejável ou permissı́vel.
3. Solução ótima - é aquela que permite a ocorrência do melhor valor da f(x), isto é, maximiza ou minimiza
seu valor de acordo com o desejado. Pode ser única ou não.
Não é raro encontrar a PO como tema de trabalho de uma equipe inteira de profissionais de diversas áreas (ma-
temáticos, engenheiros, biólogos, administradores, economistas, sociólogos e até psicólogos) pois, a complexidade
ou mesmo a incerteza envolvida na situação é tamanha que requer um tratamento sobre divesos pontos de vista.
A exemplo disso, podemos considerar um acontecimento em um prédio comercial. As pessoas começaram
a reclamar na gerência sobre o fato de esperarem muito tempo o elevador instalado no empreendimento. A
construção de mais um elevador seria inviável, o mesmo poderia ser dito de se aumentar a velocidade do elevador
(comprometendo a estrutura da construção ou a segurança das pessoas à bordo do elevador).
O que fazer então?
A resposta é simples! Um dos profissionais contratados foi um psicólogo. Este sugeriu que fossem espelhadas
as paredes externas da porta de cada andar do elevador, pois com isso as pessoas passariam mais tempo se vendo
diante do espelho e vendo os outros que estavam esperando. Com essa ação, à primeira vista estranha, a gerência
do prédio parou de receber tantas reclamações.
Sendo assim, afirmamos que deve haver atenção quando o assunto do problema é algo que envolve opiniões
humanas ou variáveis muito incertas. Neste caso, pode ser necessário o auxı́lio de funções não lineares (função
objetivo e/ou restrições, nos levando a aplicação de técnicas da Programação Não Linear), ou mesmo do emprego
de outras teorias, como a Teoria Fuzzy, por exemplo.
Sabemos então que a solução está sobre a reta, porém, não podemos afirmar quais valores fornecem a solução
do sistema. Contudo, temos a função área A = w l no plano z, devemos então com o auxı́lio de um programa
computacional “chutar ” os valores de w e l para então gerar o gráfico de A versus l e A versus w, com isso vemos
uma parábola (figura 1.3).
Pela figura 1.3, fica evidente que a solução de valor mais alto dentro do espaço da solução é próximo à metade
do valor possı́vel das variáveis, tanto para w quanto l. Este valor é 0.25, ou 25% de L.
Devemos ressaltar que neste caso, como a função objetivo era uma variável multiplicada pela outra, o gráfico
resultante foi uma parábola, o que não configura em um caso de otimização linear (Programação Linear), sendo
apenas uma maneira ilustrativa sobre o uso gráfico dentro dos modelos de Pesquisa Operacional.
Solução única
Exemplo 6. Seja o problema de PL:
Na ilustração, cada restrição está graficamente representada com sua respectiva reta (a),(b) e (c). Como são
inequações, os pontos que as satisfazem definem semi-espaços, isto é, a região acima ou abaixo da reta, à direita
ou à esquerda da reta. Por outro lado, a restrição (d) informa que a região está no primeiro quadrante do plano.
Logo, tem-se a região factı́vel (região escurecida da figura 1.4).
Tomando-se a função objetivo como um tracejado, se a deslocarmos na região solução desde o vértice (0,0)
teremos um máximo no vértice (4,2).
Solução múltipla
Exemplo 7. Seja o problema apresentado anteriormente, porém com mudança na função objetivo:
Figura 1.5: Famı́lia de retas (a) e Vetor normal e direção de Crescimento (b)
Maximizar x1 + 2x2
Sujeito a: x1 + 2x2 ≤ 8 (a)
−2x1 + 3x2 ≤ 5 (b)
x1 + x2 ≤ 6 (c)
x1 ≥ 0 x2 ≥ 0 (d)
Note que para este caso o problema passa a ter um conjunto de múltiplas soluções, consistindo nos pontos do
segmento da reta x1 + 2x2 entre os pontos (2, 3) e (4, 2).
Observe que a função objetivo é paralela à inequação apresentada na restrição (a), presente na figura 1.6) .
Solução ilimitada
Exemplo 8. Seja o problema de PL (Exemplo 6), com uma insero de uma restrio (d) :
Observe, na Figura 1.7, que o espaço de soluções passa a ser ilimitado por todo o espaço à direita da reta (a)
e abaixo da reta (b). Portanto, nesta situação, o problema tem uma solução tendendo ao infinito, pois a função
objetivo pode se deslocar para a direita sem limitações e aumentar o valor de Z indefinidamente.
Solução infactı́vel
Exemplo 9. Seja o problema de PL (Exemplo 6), contudo com as restrições (a) e (c) modificadas nos sinais de
desigualdade :
Com a adição de uma nova restrição ao problema do Exemplo 9, temos um conjunto vazio de solução, pois
não é possı́vel satisfazer a função objetivo quanto às restrições (c) e (d) ao mesmo tempo.
a. Min f (x) = 2x1 ; b. Max f (x) = −4x2 ; c. Max f (x) = 3x1 + 3x2 .
Max x1 +2x2
Sujeito a −6x1 +10x2 ≤ 30
4x1 +3x2 ≥ −12
x1 +2x2 ≤ 10
x1 ≤ 6
x1 , x2 ≥ 0
5. A Roda S.A produz dois modelos de automóveis: sedã e utilitário. A tabela a seguir mostra o número máximo
de veı́culos que podem ser vendido em cada um dos próximos três meses:
Sedãs Uilitários
Mês 1 1200 600
Mês 2 1600 700
Mês 3 1300 500
Sabe-se que cada sedã é vendido a $ 8.000 e custa $ 6.000 para produzi-lo. O utilitário tem venda de $
9.000 e custo de $ 7.500.
O custo de manter os veı́culos em estoque é de $ 250 para o sedã e $ 300 para o utilitário. Durante cada
mês, no máximo 1500 veı́culo podem ser produzidos e, por restrições de produção, pelo menos 2/3 dos carros
produzidos devem ser sedãs.
No inı́cio do mês 1, há 300 sedãs e 200 utilitários em estoque.
6. Seja uma empresa que produz quatro produtos, A, B, C e D. A fabricação de cada unidade desses produtos
exige mão-de-obra, matéria-prima e processamento mecânico, gerando um certo lucro, de acordo com a
tabela:
Recurso A B C D Disponbilidade
Mão-de-obra (homens-hora/unidade) 8 3 5 6 15.000 h
Matéria-prima (kg/unidade) 5 7 4 5 20.000 kg
Processamento mecânico (horas-máquina) 12 9 8 7 40.000 hm
Lucro (R$/unidade) 3 6 5 4 –/–
Dadas as disponibilidades e os requerimentos para cada produto, como determinar um plano de produção
semanal, de forma a maximizar o lucro? Tente escrever o sistema na forma padrão.
7. Este problema envolve um processo de transporte de agragados para a construção de uma rodovia. Suponha
que, para a construção de uma rodovia, não estejam disponı́veis na região das jazidas de richas adequadas à
obtenção de pedra britada. Faz-se necessário, portanto, o transporte desse material de jazidas mais próximas
para alguns pontos convenientes preestabelecidos ao longo do caminho onde será implantada a estrada (figura
1.9), ao menor custo.
Figura 1.9: Pedreiras fornecedoras da pedra britada P1, P2, P3, P4; pontos de depósito de material D1, D2, D3
e do trajeto da rodovia R.
Nesse problema, temos m = 4 jazidas correspondentes às origens e n = 3 depósitos correspondentes aos
destinos, cujos dados estão na tabela a seguir.
As quantidades ofertadas (ai - última coluna) e demandas (bj - última linha), em toneladas, bom como os
custos de transportar 1 tonelada de pedra da pedreira i para o depósito j (cij - que é função de vários fatores,
como tempo de viagem, condições das estradas de acesso, condições dos veı́culos que servem a trajetória
em questão etc.), são as representações do que está envolvido no problema.
Se xij é a variável de decisão que representa a quantidade transportada de rochas da jazida i para o ponto
de depósito j, podemos formular este problema da seguinte maneira:
Para verificar uma mudança no problema, imagine se por um problema estrutural, o Depósito 2 tenha de
ser fechado. Como ficaria o modelo se 45% da demanda deste depósito tenha de ir para o Depósito 1 e o
restante para o Depósito 3?
8. Um fabricante de geladeiras precisa decidir quais modeos deve produzir em uma de suas plantas e de acordo
com uma pesquisa de consumo, o mercado consome no máximo 1500 unidades do modelo Luxo e 1600 do
Básico por mês que virá. A fábrica dispõe de 25000 homens-hora por mês, sendo que cada modelo Luxo
precisa de 10 homens-hora e o Básico 8 homens-hora. A linha de montagem é integrada (produz os dosi
modelos em conjunto) e pode produzir até 4500 unidades por mês, com lucro sobre o modelo Luxo de $ 100
e o Básico de $ 50.
Deseja-se maximizar os lucros da venda dos produtos desta fábrica. Como seria o modelo de PL para este
problema?
9. Quatro cidades descarregam águas servidas na mesma corrente. A cidade 1 está a montante, seguida da
cidade 2, cidade 3 e por fim a cidade 4 à jusante da corrente. Medidas ao longo do corpo de água, as
distâncias entre as cidades são de aproximadamente 15 milhas entre si. Um dos parâmetros de medida em
águas servidas é a demanda bioquı́mica de oxigênio (DBO), que é a quantidade de oxigênio requerida para
estabilizar os poluentes presentes na água.
A Agência de Proteção Ambiental estabeleceu um máximo de carga de DBO, expressaem lb de DBO por
galão. A remoção de poluentes das águas servidas ocorre de duas formas: depuração natural e tratamento de
esgoto antes do despejo nos corpos de água. O objetivo então, é determinar a melhor eficiência econômica
de cada umas das estações localizadas nas quatro cidades (a eficiência máxima possı́vel de uma estação é de
99%).
Para montarmos um modelo, devemos citar as variáveis como:
Para satisfazer o requisito de carga de DBO na descarga da cidade 1 para a 2, precisamos ter:
p1 (1 − x1 ) ≤ b1 Q1
ou
(1 − r12 )p1 (1 − x1 ) + p2 (1 − x2 ) ≤ b2 Q2
O coeficiente r12 (≤ 1) representa a fração de resı́duos removida no trecho 1 - 2 por decomposição. Para a
descarga da cidade 3, a restrição é:
A partir do que foi apresentado (usando os dados da tabela abaixo e considerando a remoção por decomposição
de 6% para os quatro trechos da corrente) determine a maior eficiência econômica para as quatro estações.
Revisão Matemática
Conceitos Básicos
As obras literárias de Programação Linear, escritas na década de 60, traziam revisões extensas de álgebra
linear, determinantes, matrizes, espaços vetoriais, convexidade etc. Essas revisões eram essenciais, pois na época
os conteúdos visados no curso não eram devidamente estudados nos cursos de graduação da época.
Desde então, houve significativa mudança no currı́culo dos cursos de administração, economia e engenharia.
Já no ensino médio, por exemplo, o aluno toma contato com as matrizes, e tem um aprofundamento de álgebra
linear colocada como elemento dos currı́culos mı́nimos dos cursos de graduação na área de Exatas.
A apresentação de conceitos básicos passa a ter propósito de unificação do conhecimento, de nomenclatura
e fixação da notação usada. A revisão a seguir tem um ponto de vista da Programação Linear, de modo que a
mesma é orientada para antecipar o entendimento dos métodos de otimização.
Quando o sistema apresentar m = n (matriz quadrada), a indicação de qual dessas alternativas ocorre é dada
pelo determinante (D) da matriz, a saber:
I. Troca de linhas;
II. Multiplicação de uma linha por escalar não nulo;
III. Combinações lineares de linhas;
1. Se a matriz A é não singular e o sistema homogêneo, só existe a solução trivial (x = 0);
2. Se a matriz A é singular, o sistema homogêneo é indeterminado, pois D = 0.
• Se a matriz A é não singular e o sistema não homogêneo, a solução é única e o sistema é textitcrameriano.
2 1 −3 x1 −2
1 −1 2 x2 = 7
2 2 1 x3 −1
Calculando-se a matriz inversa de A, e aplicando-a como visto, obtem-se a solução:
x1 5/19 7/19 1/19 −2 2
x2 = −3/19 −8/19 7/19 7 = −3
Devemos então encontrar a matriz inversa para obter a solução de um sistema? A resposta prática é não,
pois computacionalmente este método é caro devido ao excesso de cálculos necessários para a determinação de
matrizes inversas de sistemas complexos, além disto, a inversa só é passı́vel de cálculo em matrizes quadradas e
com determinante diferente de zero, sendo assim inviável metodologicamente como visto no capı́tulo de Introdução
à Pesquisa Operacional. Nos próximos tópicos explicaremos alguns métodos mais práticos na obtenção de soluções
para os sistemas lineares, sejam eles casos m = n ou n > m.
a. operações elementares sobre x1 : Dividir a 1a linha por 2, adicionar à 2a linha a primeira multiplicada
por(-1) e adicionar à 3a linha a 1a vezes (-2).
x1
+ x2 /2 − 3x3 /2 = −1
− 3x2 /2 + 7x3 /2 = 8
x2 + 3x3 = 1
3
b. operações elementares sobre x2 : Dividir a 2a linha por − 2 , adicionar à 1a linha a 2a multiplicada por
− 12 e adicionar à 3a linha a 2a vezes (−1).
x1
− x3 /3 = 5/3
x2 − 7x3 /3 = −16/3
19x3 = 19/3
3
c. operações elementares sobre x3 : Dividir a 3a linha por 9, resultando em x3 = 1. Somar à 1a linha a
1
3a multiplicada por 3 e somar à 2a linha a 3a multiplicada por 73 .
x1
= 2
x2 = −3
x3 = 1
Deste modo, chegamos à mesma solução do Exemplo 10, como x1 = 2, x2 = −3 e x3 = 1. Fica a observação
de que a maneira mais fácil para não se perder durante os cálculos é realizá-los com o auxı́lio da matriz ampliada
da forma A = (A|b).
Este método de transformação da A para a identidade (I) também é chamada de Escalonamento.
A partir desse sistema (e todos os casos n > m, podemos realizar diversas considerações e generalizações, a
saber:
x1
x2
#
" " #
1 −2 1 1 0
= 2
.
x3
1 −1 −1 0 1 4
x4
x5
2. O sistema anterior possui cinco variáveis e duas equações, portanto, oferece uma infinidade de soluções.
Podem-se arbitrar valores para 5 − 2 = 3 variáveis e resolver o sistema em relação às duas variáveis restantes.
Para o sistema original ter solução, pelo menos um dos subsistemas será crameriano.
3. O sistema tem uma solução trivial (chamada de básica), que consiste em atribuir o valor nulo em três das
variáveis e chegar-se no valor das outras duas. Como exemplo:
x1 = x2 = x3 = 0 e x4 = 2 e x5 = 4.
Neste caso, x1 ,x2 e x3 são chamadas variáveis não básicas, e x4 , x5 são ditas variáveis básicas.
4. Variável básica é uma variável responsável por uma equação na qual ela tem coeficiente 1, enquanto nas
demais equações seu coeficiente é 0.
5. Sistema canônico é um sistema no qual a cada equação temos uma variável básica associada. Visto de forma
matricial, tal sistema remete a uma matriz identidade embutida na matriz A (não obstante fora de ordem).
6. Uma base B do sistema é dada pelo conjunto de vetores coluna correspondentes às variáveis básicas. No
exemplo, a base é formada pelos vetores coluna A4 e A5 , ou B = [A4 A5 ]. Como x4 e x5 são as variáveis
associadas à base, é comum referir-se à base B = x4 x5
7. Em um sistema de cinco variáveis e duas equações, a variedade de soluções triviais, ou básicas é dada pela
permutação:
!
5 5!
= = 10
2 3!2!
8. As soluções triviais distintas, se existentes, podem ser obtidas por processos de mudança de base (conforme
será explicado na próxima subseção).
Exemplo 12. Com o exemplo 11 podemos ilustrar o pivoteamento, substituindo x1 por x4 na base. Temos então
i = 4 e j = 1 com r = 2, e deste modo como a11 = 1, não precisamos fazer a divisão por a11 ; da mesma maneira
como a21 = 1, basta somar à 2 equação a 1 multiplicada por (−1) para se obter uma nova base, B = [A1 , A5 ], e
o sistema resultante:
(
x1 −2x2 +x3 +x4 = 2
x2 −23 −x4 +x5 = 2
1. Suponha que a matriz A, do sistema linear A = bx, possa ser escrita pela composição de três colunas
A = [B|N|I], sendo B é a base atual, I a base original e N os demais vetores (contendo as variáveis não
básicas).
No exemplo 11 aplicamos os conceitos anteriores, para chegar-se ao resultado apresentado no exemplo 12:
" # x1 " #
|1 −2| | 1| |1 0| . 2
× .
|1 −1| | − 1| |0 1| . = 4
x5
B N I
Explicitando na base mudada por pivoteamento, temos analogamente:
" # x1 " #
|1 0| | − 3| |−1 2| . 6
× .. =
|0 1| | − 2| |−1 1| 2
x5
B −1 B = I B −1 N B −1
Portanto a nova base B = [a1 a2 ] pode ser obtida a partir do sistema original por dois modos:
a. operações elementares (método
" Gauss-Jordan);
# " #
1 −2 −1
−1 2
b. sejam a base desejada B = e sua inversa B = ; pré-multiplicando o sistema
1 −1 −1 1
original por B−1 , obtendo-se B−1 Ax = B−1 b.
Definições
Por se tratar de uma revisão para a PO, devemos focar a mesma sobre os atributos e conhecimentos que serão
exigidos a seguir, para tanto, apresentamos um resumo das definições introduzidas até este ponto:
• Variável básica: é uma variável relacionada a uma equação com coeficiente 1 nesta equação e 0 nas demais;
• Solução básica: é aquela obtida fazendo-se as variáveis não básicas iguais à zero e identificando-se a solução
do sistema linear;
• Solução básica viável: é uma solução básica na qual todas as variáveis básicas satisfazem à restrição
suplementar x ≥ 0;
• Base do Sistema: é dada pelo conjunto das variáveis básicas, ou seja, pelos vetores coluna associados aos
coeficientes das variáveis básicas de todas as equações;
• Operação Pivotar - Pivot Operation: é uma sequência de operações elementares que fazem uma variável
tornar-se básica;
• Conjunto Viável: é dado por todas as soluções viáveis do sistema linear, incluindo-se a restrição suplementar
x ≥ 0.
• Se houver uma equação redundante (dependência linear), a solução de base encontrada terá uma variável
artificial na base com valor nulo.
Forma Canônica
Sistema canônico é aquele em que cada equação linear possui uma variável básica associada a ela e o sistema
de equações identifica um solução trivial. Um caso particular, porém frequente, é aquele que o sistema original é
dado na forma de desigualdade, Ax ≤ b. Neste caso, introduzem-se variáveis de folga, xf , que medem a diferença
entre o lado direito e o lado esquerdo (como veremos nos modelos de PO, também teremos variáveis de excesso
quando Ax ≥ b).
Matricialmente a situação seria:
" #
f
h i x
Ax ≤ b → Ax + Ix = b ou A|I =b
xf
Uma solução inicial viável básica é quando xf = b e x = 0. Ao contrário das variáveis artificiais do caso geral,
as variáveis de folga (ou excesso) têm sua interpretação como a quantidade dos valores de b não utilizadas.
Vamos exemplificar este sistema e a explicação anterior mediante um exemplo.
x1 ≤ 400
x2 ≤ 500
x1 + 2x2 ≤ 900
x1 + x3 = 400
x2 + x4 = 500
x1 + 2x2 + x5 = 900
Se as variáveis do sistema original representarem:
x1 = número de bolos do tipo 1 a serem produzidos;
x2 = número de bolos do tipo 2 a serem produzidos;
b1 = 400 = quantidade de ovos disponı́veis;
b2 = 500 = quantidade de açúcar disponı́vel;
b3 = 900 = quantidade de farinha disponı́vel.
Nessas condições, as variáveis de folga significam
x3 = quantidade de ovos não utilizados;
x4 = quantidade de açúcar não utilizado;
x5 = quantidade de farinha não utilizada.
2.3.2 Operações
Algumas operações básicas dos vetores de um espaço vetorial são, como já ditas, a adição de um elemento a
outro e a multiplicação por um número escalar real. Em notação matemática, se tivermos dois vetores (C e D) e
um escalar (λ), demonstramos as operações como:
C + D = (c1 , c2 ) + (d1 , d2 ) = (c1 + d1 , c2 + d2 );
λC = ˘(c1 , c2 ) = (λc1 , λc2 ).
Podemos ver as operações representadas nas figuras 2.1 e 2.2.
b = A 1 x1 + A 2 x2 + · · · + A n xn
A 1 x1 + A 2 x2 + · · · + A n xn = 0
só for satisfeita para x1 = x2 = · · · = xn = 0, então dizemos que os vetores A1 , A2 , . . . , An são linearmente
independentes (LI)
A 1 x1 + A 2 x2 + · · · + A n xn = 0
for satisfeita para algum xk com k ∈ (1, 2, . . . , n) diferente de zero, então dizemos que os vetores A1 , A2 , . . . , An
são linearmente dependentes (LD).
• Qualquer vetor y ∈ Rm puder ser obtido por uma combinação linear desses vetores, isto é:
y = y1 v1 + y1 v1 + · · · + ym vm
2 0 6 −2
Empregando-se o conceito de vetores LI, primeiro aos vetores coluna e depois aos vetores linha, temos:
1 0 2 0 0
−1 x1 + 5 x2 + 0 x3 1 x4 = 0
2 0 6 −2 0
Note que o sistema admite uma infinidade de soluções não triviais; portanto, o posto é inferior a quatro. Ao
escolhermos apenas três vetores quaisquer, encontramos um posto igual a 3 (ra = 3).
h i h i h i h i
1 0 2 0 x1 + −1 5 0 1 x2 2 0 6 −2 x3 = 0 0 0 0
Mudança de Base
Seja uma base no espaço Rm constituı́da pelos vetores e1 , e2 , . . . , em . Nessa base, qualquer vetor y ∈ Rm é
expresso por uma combinação linear definida univocamente 2 , sendo y1 , y2 , . . . , ym as coordenadas do vetor y, isto
é:
y = y1 e1 + y2 e2 + · · · + yk ek + . . . + y m em
y1 y2 1 ym
ek = − e1 − e2 − · · · + yk y − · · · − em
yk yk yk yk
Essa expressão mostra o vetor ek expresso em uma base constituı́da pelos vetores y e ei , em que i = 1, 2, . . . , m,
e i 6= k.
Estas expressões são importantes para casos de mudança de base, pois, imagine algum outro vetor x ∈ Rm .
Como exemplo, na base original, esse vetor seria representado por:
x = x1 e1 + x2 e2 + · · · + xk ek + · · · + xm em
2 Diz-se da relação, ou da correspondência, entre dois conjuntos em que a cada elemento do primeiro conjunto corresponde apenas
Em relação à uma nova base (que inclui y), basta realizar uma substituição de ek na expressão anterior com a
resultante de ek :
y1 y2 xk ym
x= x1 − xk e1 + x2 − xk e2 + · · · + y + · · · + x m − xk em
yk yk yk yk
O processo de mudar a base de um espaço é também denominado pivoteamento, exatamente análogo ao
discutido anteriormente.
n
X
A1 .A2 = a11 a21 + a12 a22 + · · · + a1n a2n = a1j a2j
i
n
X
y = λ1 A1 + λ2 A2 + . . . λn An sendo λi = 1
i
2 2 1
1 0 1
b. A= 0 1 0
1 2 0
a. (1, -1, 2); (0, 5, 0); (2, 0, 6); c. (1, 0, 0); (1, 1, 0); (1, 1, 1);
b. (-1, 5, 1); (2, 0, -2); (1, 0, 4);
1 2 0 0 1
usando os procedimentos de Gauss-Jordan, expresse A nas bases:
6. Calcule o posto de A:
1 1 1 1
A = −2 1 −1 0
0 3 1 1
7. Nos problemas de (a) até (e), resolver os sistemas pelo método de eliminação de Gauss.
−2x
+3y −z = b1
x −3y +z = b2
−x +2y −z = b3
8. (Engenharia de Controle e Automação) Deseja-se construir um circuito como o mostrado na figura 2.5.
onde V1 = 280V , V2 = 100V , V3 = 50V , R1 = 20Ω, R2 = 30Ω, R3 = 50Ω, R4 = 40Ω e R5 = 100Ω.
Dispõe-se de uma tabela de preços de vários tipos de resistências; assim como as correntes que elas suportam
sem queimar.
De que tipo devemos escolher cada resistência para que o circuito funcione com segurança e a sua fabricação
seja a de menor custo possı́vel?
Resistências
20Ω 30Ω 40Ω 50Ω 100Ω
10 10 15 15 20 0.5 A Corrente
15 20 15 15 25 1.0 A Máxima
20 22 20 20 28 3.0 A Suportada
30 30 34 34 37 5.0 A
9. (Engenharia Ambiental) Necessita-se adubar um terreno, de acordo com um plano de recuperação, acres-
centado a cada 10m2 : 140 g de nitrato, 190g de fosfato e 205 g de potássio.
Dispõe-se de quatro qualidade de adubo com as respectivas caracterı́sticas, incluindo sua unidade de custo
de produção (u.c.p):
(a) Cada quilograma do adubo I custa 5 u.c.p e contém 10 g de nitrato, 10 g de fostato e 100 g de potássio;
(b) Cada quilograma do adubo II custa 6 u.c.p e contém 10 g de nitrato, 100 g de fostato e 30 g de
potássio;
(c) Cada quilograma do adubo III custa 5 u.c.p e contém 50 g de nitrato, 20 g de fostato e 20 g de potássio;
(d) Cada quilograma do adubo IV custa 15 u.c.p e contém 20 g de nitrato, 40 g de fostato e 35 g de
potássio;
Quanto de cada adubo devemos misturar para conseguir o efeito desejado se estamos dispostos a gastar 54
u.c.p a cada 10m2 com a adubação?
Método Simplex
(i) A função objetivo assume necessariamente um valor máximo e um valor mı́nimo quando a região poliedral
convexa (factı́vel) for limitada;
(ii) Os vértices desempenham um papel fundamental na procura de máximos e mı́nimos para a função objetivo.
O primeiro resultado acima nos diz que os valores extremos de uma função afim1 são assumidos nos pon-
tos extremos dos segmentos (vértices). Daı́, podemos fazer colocações e generalizações2 , obtendo o Teorema
Fundamental da Programação Linear:
Teorema 1. Seja f (x1 , . . . , xn ) = a1 x1 + · · · + an xn + b, onde b uma constaante qualquer, definida numa região
poliedral convexa A do Rn . Suponha que f assuma um valor máximo (ou mı́nimo) nesta região. Então, se A possui
vértice(s), este valor máximo (ou mı́nimo) será assumido num vértice.
min f (x)
Sujeito a Ax = b
x ≥ 0
Do teorema anterior e da equivalência entre solução básica factı́vel e vértice temos que o Método Simplex é
finito, pois um sistema linear de m equações com (m + n) incógnitas tem no máximo, por combinação:
! !
m+n (m + n)!
= Soluções básicas
m m!n!
!
n+m
Logo, o Simplex efetua um número menor que interações para encontrar a solução ótima, pois o
m
algoritmo Simplex é um procedimento de busca, isto é, move-se de vértice factı́vel em vértice factı́vel até encontrar
a solução básica factı́vel ótima.
1. Todas as restrições (com exceção da não negatividade das variáveis) são equações cujos lados direitos são
não negativos;
A finalidade destes dois requisitos é padronizar e tornar mais eficiente os cálculos de método simplex. Contudo,
antes apresentamos as disposições dos problemas na Forma Padrão e na Forma Canônica
xi ≥ 0, (i = 1 : n)
Em termos de matrizes, pode-se representar a forma padrão da PL como:
min f (x) = cx
Sujeito a Ax = b
x ≥ 0
em que:
min f (x) = cx
Sujeito a Ax ≤ b
x ≥ 0
Nesse caso, todas as restrições transformam-se em equações mediante a inclusão de variáveis de folga (ou
excesso), uma para cada desigualdade, e o sistema para a forma canônica.
A seguir mostraremos como lidar com desigualdades e variáveis irrestritas, convertendo os problemas para a
forma canônica.
instante - seja em aparelhos de medição ou mesmo nos componentes envolvidos em processos de produção, como máquinas que
processam um número máximo ou um número mı́nimo de determinada substância.
De forma análoga, se a restrição for (≥) então, conseguimos a igualdade com a subtração de uma variável
de sobra (ou excesso) não negativa ao lado esquerdo da inequação. Temos a restrição:
Agora, o único requisito é deixar o lado direito da inequação resultante não negativo. Como exemplo:
xi+1 = xi + yi+1
A variável yi+1 deve ser irrestrita ao sinal, para permitir que xi+1 aumente ou diminua em relação a xi , isto é,
dependa do número de contratados e demitidos, respectivamente.
Podemos satisfazer o requisito da variável não negativa com a substituição:
− + − +
yi+1 = yi+1 − yi+1 onde yi+1 ≥0 e yi+1 ≥0
Para mostrar que a substituição é válida, suponha que no perı́odo 1 a mão-de-obra seja x1 = 30 e que no
perı́odo 2 tenha de aumentar em 10 trabalhadores chegando a 40. Em termos da substituição, y2− e y2+ , será
equivalente a y2+ = 0 e y2− = 10 ( resultando em y2 = 10). De maneira semelhante se for reduzida em 10, teremos
y2− = 0 e y2+ = 10 ( resultando em y2 = −10). A substituição também permite a possibilidade de não haver
alteração na mão-de-obra, fazendo com que ambas as variáveis assumam um valor igual a zero.
x = −x 1 , em que x 1 ≥ 0
Assim, ao se multiplicar a função por (−1), ela é substituı́da por outra simétrica em relação ao eixo horizontal
e o mı́nimo de uma ocorre na mesma abscissa que o máximo da outra, naturalmente com sinal inverso. Então,
− max{−f (x)} = min{f (x)}.
Como dito, as inequações do tipo (≤) podem ser transformadas em equações pela inserção de três variáveis de
folga, com peso nulo na função objetivo, de modo que obtém-se o sistema na forma canônica.
As variáveis definidas como nulas são as não básicas; as demais são chamadas de variáveis básicas e formam
a base do sistema linear. A expressão entrar na base significa fazer uma variável não básica deixar o valor nulo e
crescer até o máximo valor que lhe seja possı́vel e, portanto, positiva ou eventualmente nula.
Como primeira solução do sistema, tem-se f (x) = 2(0) + 3(0) = 0. Observando que esse ponto corresponde
ao ponto da origem x1 = 0 e x2 = 0.
A Primeira Iteração
Observando-se os coeficientes da função objetivo, f (x) = 2x1 + 3x2 , vê-se que o aumento de x1 ou x2 , ou seja,
a entrada de qualquer uma delas na base, deverá aumentar o valor de f (x), pois ambos têm coeficientes positivos
nessa função. Como se deseja maximizar, parece intuitivo escolher primeiro aquela variável cujo coeficiente é maior,
nesse caso a variável x2 .
Para que a variável x2 entre na base e aumente seu valor ao máximo, é necessário identificar qual variável básica
deve sair da base e, portanto, se anular. Utilizamos o sistema a seguir para verificar as mudanças nos valores das
variáveis básicas x3 , x4 e x5 quando aumentamos o valor de x2 4 .
x1 + 2x2 + x3 = 8
−2x1 + 3x2 + x4 = 5
x1 + x2 + x5 = 6
x3 = (8 − 2x2 ) ≥ 0
x4 = (5 − 3x2 ) ≥ 0
x5 = (6 − x2 ) ≥ 0
Ao se aumentar o valor de x2 em 1 unidade, o valor de x3 decresce 2 unidades, x4 descrece 3 unidades e x5
decresce 1 unidade. Para anular as outras variáveis e mantê-las ainda não negativa, devemos encontrar os valores
de x2 que façam isso, podendo em seguida em qual destas variáveis x2 apresenta seu valor mı́nimo (denotado por
5 ).
Portanto, = x2 = min{ 82 , 53 , 61 } = 53 , ou seja, para x2 = 53 , obtém-se x4 = 0, enquanto a demais variáveis
permanecem não negativas (são factı́veis ao modelo). Logo, x4 sai da base, entrando x2 com valor 53 , e a função
objetivo passa a : f (x) = 2(0) + 3 53 = 5, isto é, já temos um valor de função objetivo para a comparação com
as próximas iterações.
A nova base será formada por x2 , x3 e x5 . Para representá-la, basta transformar o sistema inicial, expressando-o
na nova base. Para isso, são feitas operações elementares no sistema, tornando os coeficientes de x2 um elemento
da matriz identidade, a saber:
2 1 5
• Dividir a 2a linha por 3, o que resulta em =⇒ − x1 + x2 + x4 =
3 3 3
7 2 14
• Somar à 1a linha a nova 2a linha multiplicada por (−2) =⇒ x1 + (0)x2 + x3 − x4 =
3 3 3
5 1 13
• Somar à 3a linha a nova 2a linha multiplicada por (−1) =⇒ x1 + (0)x2 − x4 + x5 =
3 3 3
Com essas alterações, o sistema é reescrito conforme:
7 2 14
x1 + x3 − x4 =
3 3 3
1
−2x1 + x2 + x4 = 5
3
5 1
x1 − x4 + x5 = 6
3 3
Pelas variáveis, tem-se:
4 Ao se realizar esse procedimento atente para manter as variáveis x3 , x4 e x5 não negativas.
5O bi
pode ser visto como a razão do sistema, como j sendo o número da variável (coluna) e i o número da equação (linha)
aij
trabalhadas.
14
x3 =
3 (
5 x1 = 0
Variáveis Básicas x2 = Variáveis Não básicas
3 x4 = 0
x5 13
=
3
5
O valor da função objetivo f (x) = 2x1 + 3x2 = 2(0) + 3 = 5. Consultando-se a solução gráfica, o ponto
3
obtido na segunda iteração corresponde ao vértice (x1 ,x2 ) = 0, 53 . Necessitamos agora saber se a solução
encontrada é ótima, para tanto devemos expressar a função objetivo em termos das variáveis não básicas, nesse
momento sendo x1 e x4 .
Da segunda linha do sistema modificado obtemos x2 em termos das variáveis x1 e x4 , como:
5 2 1
x2 = + x 1 − x4
3 3 3
Substituindo na função objetivo:
5 2 1
f (x) = 2x1 + 3x2 =⇒ 2x1 + 3 + x1 − x4 =⇒ 5 + 4x1 − x4
3 3 3
Desta expressão, vemos que se valor de x4 aumentar, a função decresce; enquanto que um aumento no valor de
x1 aumenta em quatro unidades a função objetivo. Logo, a função objetivo não está no seu valor ótimo, podendo
aumentar caso x1 entre na base (e ainda x4 fique de fora).
Segunda Iteração
Analogamente, para x1 entrar na base e aumentar de valor, é necessário identificar qual variável (x2 , x3 ou x5 )
deverá sair. Para acompanhar o raciocı́nio algébrico, reescrevemos o sistema modificado com x4 nulo:
7 14
x1 + x3 =
3 3
−2x1 + x2 = 5
5x
1 + x5 = 6
3
Deixando o sistema em função de x1 para todas as variáveis e considerando-as como zero, temos:
14 7
x3 = − x1
3 3
5 2
x2 = + x1
3 3
x5 = 13 − 5 x1
3 3
Na primeira restrição, a variável x3 atinge o valor zero quando x1 = 2; na segunda, a variável não atinge o valor
zero pois o coeficiente de x1 é negativo, o que aumenta o valor quando colocado em função de x1 ; na terceira, x5
se anula quando x1 = 13 13
5 . Portanto, = x1 = min 2, ∞, 5 = 2.
Para x1 = 2, as variáveis assumem os valores:
x1 = 2
x2 = 3
x3 = 0
x 4 =0
x5 = 1
Para os valores encontrados das variáveis a função objetivo f (x) = 2(2) + 3(3) = 13, o que é maior que o 5
encontrado na iteração anterior. A nova base será formada agora por x1 , x2 e x5 . Para representá-la é necessário
a aplicação de operações elementares, o que resulta em:
3 2
x1 + x3 − x4 = 2
7 7
2 1
+ x2 + x3 + x4 = 3
7 7
5 1
− x3 + x4 + x5 = 1
7 7
Em que:
x1 = 2
(
x3 = 0
Variáveis Básicas x2 = 3 Variáveis Não básicas
x4 = 0
x5 = 1
Comparando esse resultado com a solução gráfica, nota-se que esta corresponde ao vértice (x1 ,x2 ) = (2, 3).
Agora realizamos o procedimento de colocar a função objetivo em termos das variáveis não básicas, utilizando as
equações que possuem as variáveis x1 e x2 do sistema obtido:
3 2
x1 = 2 − x3 + x4
7 7
2 1
x2 = 3 − x3 + x4
7 7
a função objetivo f(x) fica como:
12 1
f (x) = 13 − x3 + x4
7 7
Terceira Iteração
Pela última expressão da função objetivo, se x3 aumentar, a função decresce; enquanto que se x4 aumentar,
a função cresce, portanto, x4 deve entrar na base do sistema (note que aparentemente ela parecia não ser uma
candidata a entrar na base). Temos o sistema como:
3 2
x1 + x3 − x4 = 2
7 7
2 1
+ x2 + x3 + x4 = 3
7 7
5 1
− x3 + x4 + x5 = 1
7 7
Fazendo-se as comparações dentro do sistema, com x3 = 0, obtemos para x1 , x2 e x5 respectivamente, um
= x4 = min{∞, 21, 7} = 7, portanto a variável x5 sai da base para a entrada de x4 . Com as alterações de
mudança de base chegamos no sistema:
x1
− x3 + 2x5 = 4
x2 + x3 − x5 = 2
− 5x3 + x4 + 7x5 = 7
Em que:
x1 = 4
(
x3 = 0
Variáveis Básicas x2 = 2 Variáveis Não básicas
x5 = 0
x4 = 7
Chegamos assim à solução ótima no vértice (x1 , x2 ) = (4, 2), com f (x) = 14. Para efeito de confirmação
algébrica, colocamos a função em termos das variáveis não básicas, obtendo:
f (x) = 14 − x3 − x5
Neste caso, verificamos que ambas as variáveis quando aumentadas, reduzem o valor da função objetivo, isto é, a
solução encontrada é a melhor possı́vel.
• E, o ponto E é o ponto o qual irı́amos recair se em vez de x2 na primeira iteração, se tivessemos escolhido
x1 , o que também economizaria uma iteração, já que a segunda iteração dessa escolha passaria ao ponto C
(verifique como exercı́cio).
Aqui, devemos ressaltar que não há uma regra clara para a escolha de qual variável entra e qual sai da base a
priori, como um palpite inicial, isso pode reduzir muitos passos de acordo com a extensão de quantas variáveis se
está trabalhando. Uma possibilidade é a escolha da variável pelo coeficiente mais favorável possı́vel e outra é a de
se escolher aleatoriamente uma das variáveis com coeficiente favorável, independente do valor, contudo, não há
provas de qual das duas seja melhor.
Na próxima subseção veremos como usar o Método Simplex na forma de quadros (tabelas).
Agora devemos iniciar a análise dos dados para efetuar as trocas de base. Começamos com a linha (0), onde
estão os coeficientes de x1 e x2 , verificando que ambas as variáveis, quando aumentados seus valores, obrigam o
aumento da função f (x) para que a equação seja verdadeira (uma vez que os coeficientes de ambas são negativos),
portanto, uma das duas deve entrar na base e uma das variáveis formadoras da atual base deve sair.
Como a variável x2 apresenta maior coeficiente, esta será escolhida para entrar primeiro na base. Procedemos
então com o destaque da coluna na qual está a variável que entrará na base:
Para escolhermos a variável que sai da base, realizamos o teste do quociente para verificar qual o menor valor
de e assim selecionar a variável que deverá sair da base. Esse teste consiste em dividir o valor de bi por aij (desde
que aij seja positivo), sendo j a coluna da variável de entrada. Temos então:
A variável que sai da base é x4 e o elemento a22 = 3 é chamado de pivô. Em seguida realizamos as operações
elementares (Método de Gauss-Jordan) para chegarmos a nova tabela:
Após a primeira iteração, constatamos que f (x) = 5, quando as variáveis não básicas forem zero. Entretanto,
como o coeficiente de x1 permanece negativo, se a variável tiver acréscimo em seu valor, teremos um aumento na
função f (x) e podemos melhorar o seu valor.
Para a entrada de x1 na base procedemos analogamente a x2 . A tabela do teste do coeficiente é:
Com a entrada de x1 , a variável x3 deve sair da base. Realizando as operações elementares pertinentes,
chegamos a tabela 3.6:
Verificando a linha(0) notamos que o coeficiente da variável x4 é negativo, concluı́mos que esta exerce influência
positiva sobre o valor de f (x) de modo que x4 deve entrar na base. Com o teste do coeficiente (tabela 3.7) sabemos
qual variável sairá.
A variável x5 sai da base, portanto, realizamos novamente algumas operações elementares para chegarmos a
tabela 3.8:
Observe que na linha(0) temos apenas termos com coeficientes positivos, sendo assim, o aumento de uma
dessas variáveis resultaria em um valor de f (x) menor que 14, não desejável uma vez que queremos maximizar a
função objetivo.
Então, temos a melhor resposta possı́vel para o caso, isto é, a solução ótima do sistema é f (x) = 14, com os
valores de: x1 = 4, x2 = 2 e x4 = 7. Substituindo na função f (x):
f (x) = 2x1 + 3x2 + 0x3 + 0x4 + 0x5 =⇒ f (x) = 2(4) + 3(2) + 0(0) + 0(7) + 0(0) =⇒ f (x) = 14.
Agora veremos como os quadros se comportam quando temos Múltiplas Soluções e Soluções Ilimitadas.
Também discutiremos Solução Inexistente, Escolha Inicial e Degeneração.
5
Verificamos que o valor da função f (x) para este caso é 10. A solução é x1 = 0 e x2 = , contudo, como
2
saber se existem outras tantas soluções?
Resposta: Devemos observar que o coeficiente de x1 após a primeira iteração é zero, isto é, a variável x1 pode
entrar na base sem que ocasione mudança na solução encontrada.
Vejamos então se procedermos com uma segunda iteração, inserindo x1 e retirando-se x4 , com resultado
apresentado:
Observe que após a segunda iteração, a variável x4 ficou com coeficiente nulo. Isto indica que o ótimo da
função neste caso está enquadrado na reta x1 + 2x2 = 5, que pertence à primeira restrição do problema.
Resumindo: na Solução Múltipla, ocorre um processo no qual a variável de entrada não ocasiona mudança no
valor da função objetivo. E mesmo após mais uma iteração, a resposta permanece a mesma (exceto se a variável
que for entrada não é condizente com o critério da função objetivo - maximização ou minimização). Para mais
informações, vide [14].
Solução Ilimitada.
Vejamos o problema:
Neste caso, o que ocorre no quadro é que em algum passo do Método Simplex, haverá na linha(0) uma variável
xk com coeficiente indicando melhoria na função objetivo, porém todos os coeficientes da coluna aik dessa variável
são não positivos, não possibilitando o teste do coeficiente (essa variável pode ser aumentada indefinidamente,
uma vez que nenhuma outra se anulará).
Neste exemplo ocorre esse fato antes da primeira iteração. A visualização gráfica é dada pela Figura 3.3.
Da Figura 3.3 (A) é a restrição 2x1 ≤ 40, (B) a reta função objetivo f (x) = 2x1 + x2 e (C) a restrição
x1 − x2 ≤ 10. Note que a função tem como região de solução a intersecção com a região factı́vel.
Em alguns casos, na função objetivo pode ocorrer um empate nos coeficientes das variáveis, como por exemplo,
na função 3x1 + 3x2 . Se ocorrer algo assim, tanto no inı́cio quanto em alguma das iterações (há mais de um
coeficiente com custos relativos iguais pleiteando entrada na base), a escolha fica aleatória.
Nesta seção serão abordados dois recursos para lidar com a situação descrita anteriormente. Tais métodos
consistem na inserção de variáveis artificiais, produzindo como consequência uma base artificial. Com esse artifı́cio
espera-se que, por meio de pivoteamentos, a base artificial seja substituı́da por uma base com variáveis reais do
modelo.
Variáveis Artificiais.
Para o caso geral, introduzimos m variáveis artificiais a cada equação. Às vezes, o modelo apresenta variáveis
que só figuram em uma equação, constituindo parte de uma base. Nesse caso, podemos economizar nas variáveis
a serem introduzidas, de modo que o número de variáveis artificiais pode ser inferior a m.
Seja o sistema geral:
max c1 x1 + c2 x2 + ... cn xn
Suj. a: a11 x1 + a12 x2 + ... a1n xn + xa1 = b1
a21 x1 + a22 x2 + ... a2n xn + xa2 = b1
.. .. .. .. .. ..
. . . . . = .
am1 x1 + am2 x2 + ... amn xn +xam = b1
x1 , ..., xn , xa1 , ..., xam ≥0
Embora agora o problema esteja na forma esperada para ser utilizado pelo Método Simplex, temos variáveis
que não fazem parte do sistema original. Na solução final desejamos que as variáveis extras sejam retiradas da
base estando no nı́vel zero. Para forçar a saı́da das variáveis artificiais, utilizamos dois métodos: Método do M
Grande e o Método das Duas Fases.
A terceira equação tem uma variável da folga (x4 ), mas a primeira e a segunda não têm. Colocamos então
variáveis artificiais Xa1 e Xa2 (estão em maiúsculo para destacar que tratam-se de variáveis artificiais) e com os
coeficientes M positivos, pois é um problema de minimização:
Agora temos uma solução básica inicial dada por (Xa1 , Xa2 , x4 ) = (3, 6, 4). Em muitas obras literárias, M
é manipulado algebricamente (não está associado valor algum à variável, usando-a apenas nos cálculos), contudo,
como é mais usual a implementação dos problemas na forma computacional, utilizaremos um valor numérico para
M.
O valor a ser escolhido deveria ser teoricamente infinito contudo, na rotina dos cálculos em computadores, a
interação entre números muito grandes e outros muito pequenos pode ocasionar erros de arredondamento. Para
evitar que tal fato ocorra, devemos escolher o valor de M suficientemente grande em relação aos coeficientes
da função objetivo, sendo assim, no presente caso utilizaremos M = 100, pois os coeficientes de x1 e x2 são
respectivamente 4 e 1, ou seja, 100 é grande se comparado à esses valores.
O sistema em forma de quadros é:
Podemos observar no quadro, que a solução inicial resulta em f (x) = 900 e não zero como mostrado na linha(0),
isto ocorre pois, os coeficientes de Xa1 e Xa2 são nulos. Para colocarmos o sistema com essa caracterı́stica, e
torná-lo consistente, devemos operar com as outras linhas de maneira a anular os coeficientes das variáveis artificiais
na função objetivo.
Fazendo-se a linha(1) e a linha(2) vezes 100 e somando-se a linha(0), obtemos os resultados que seguem na
Tabela 3.14.
Como trata-se de um problema de minimização, o coeficiente de maior valor positivo deverá entrar na base,
neste caso a variável é x1 . A razão mı́nima da condição de viabilidade especifica Xa1 como a variável que sai. Após
as operações pertinentes, temos os resultados da Tabela 3.15.
Agora quem deverá entrar é x2 , saindo Xa2 da base. Após mais duas iterações, a solução será:
2 9 17
x1 = ; x2 = com f (x) = .
5 5 5
1. Primeira Fase
Coloque o sistema na forma de resolução do Simplex, incluindo as variáveis não básicas e artificiais. Inde-
pendentemente do requisito da função objetivo – maximização ou minimização – faça um quadro com uma
função de minimização da soma das variáveis artificiais no lugar da função objetivo.
• Se o valor mı́nimo da soma for positivo, o problema de PL não tem solução viável, ou seja, alguma(s)
das variáveis artificiais não saiu da base;
• Caso contrário, passamos à segunda fase.
2. Segunda Fase
Com a solução encontrada no sistema anterior, substituı́mos r por f (x) no quadro, utilizando posteriormente
essa mesma solução como a solução básica viável inicial para o problema original.
• Fase I
min r = Xa1 + Xa2
Sujeito a 3x1 + x2 + Xa1 = 3
4x1 + 3x2 − x3 + Xa2 = 6
x1 + 2x2 + x4 = 4
x1 , x2 , x3 , x4 , Xa1 , Xa2 ≥ 0
A linha rmodificada é usada para resolver a Fase I do problema, fornecendo a Tabela 3.17 ótima.
3 6
Como mı́nimo r = 0, a Fase I produz a solução básica viável x1 = , x2 = e x4 = 1. Nesse ponto,
5 5
as variáveis artificiais concluı́ram sua missão e podemos eliminar totalmente suas colunas da tabela (e da
formulação do problema de PL) e passar para a Fase II.
• Fase II
Escrevemos o problema original como:
estimado de um produto, se a análise de sensibilidade revelar que a solução ótima não muda para uma variação de
±10% no lucro unitário, podemos concluir que a solução é mais encorpada do que quando a faixa de indiferença é
de apenas ±1%.
Os tipos de análises a serem feitas podem ser agrupadas de acordo com as alterações em:
• Alterações Simples
Note que quando falamos de Análise de Sensibilidade, estamos nos referindo às alterações pontuais, uma de
cada vez. Caso existam modificações simultâneas em diversas partes do problema, devemos considerá-lo como
novo, resolvendo-o desde o ı́nicio.
Nesta seção trataremos graficamente e algebricamente dos casos:
Figura 3.4: Gráfico de análise de sensibilidade da solução ótima a variações na disponibilidade de recursos.
Taxa de variação na
receita resultante do
aumento de uma hora na
=
zg − zc = 142 − 128 = $14/h.
capacidade da máquina (Alteração na capacidade) 9−8
(ponto C para ponto G)
A taxa calculada fornece uma ligação direta entre a entrada do modelo (recursos) e sua saı́da (receita total),que
representa o valor unitário equivalente de um recurso (em $/hora), isto é, a variação no valor ótimo da função
objetivo por unidade de variação na disponibilidade do recurso (capacidade da máquina). Isso significa que uma
unidade de aumento (redução) na capacidade da máquina 1 aumentará (reduzirá) a receita em $14. Embora o
valor unitário equivalente de um recurso seja uma descrição adequada da taxa de variação da função objetivo,
o nome técnico, preço dual ou preço sombra, agora é um padrão na literatura de PL, e em todos os pacotes
comerciais.
Examinada a figura 3.4, podemos ver que o preço dual de 14/h permanece válido para variações (aumentos
ou reduções) na capacidade da máquina 1 que deslocam sua restrição paralelamente para qualquer ponto sobre o
segmento de reta BF . Isso significa que a faixa de aplicabilidade de determinado preço dual pode ser calculada da
seguinte maneira:
Deste modo, podemos concluir que o preço dual permanecerá válido para a faixa:
Variações fora dessa faixa produzirão um preço dual (equivalente por unidade) diferente.
Usando cálculos semelhantes, você pode verificar que o preço dual para a capacidade da máquina 2 é de $2/h e
permanece válido para variações (aumentos ou reduções) que deslocam sua restrição paralelamente para qualquer
ponto sobre o segmento de reta DE, o que resulta nos seguintes limites:
A conclusão é que o preço dual de $2/h para a máquina 2 continuará aplicável para a faixa:
Os preços duais permitem tomar decisões econômicas sobre o problema de PL como demonstram as respostas
às perguntas apresentadas a seguir.
1. Se Jobco puder aumentar a capacidade de ambas as máquinas, qual deve receber maior prioridade?
2. É dada uma sugestão para aumentar as capacidades as máquinas 1 e 2 ao custo adicional de $10/h. Isso é
aconselhável?
Figura 3.5: Análise de sensibilidade da solução ótima às variações nas receitas unitárias (coeficientes da função
objetivo).
Alterações nas receitas unitárias (isto é, nos coeficientes da função objetivo) alterarão da inclinação de f (x).
Contudo, como podemos ver pela figura, a solução ótima continuará no ponto C contanto que a função objetivo
esteja entre as retas BF e DE (retas que representam as restrições das máquinas 1 e 2, respectivamente), as duas
restrições que definem o ponto ótimo. Isso significa que há uma faixa para os coeficientes da função objetivo que
manterá inalterada a solução ótima em C.
Podemos escrever a função objetivo no formato geral.
max f (x) = c1 x1 + c2 x2
Agora imagine que a reta f (x) gire em torno de C no sentido horário e anti-horário. A solução ótima permanecerá
no ponto C enquanto f (x) = c1 x1 + c2 x2 estiver entre as duas retas, x1 + 3x2 = 8 e 2x1 + x2 = 8. Isso significa
c1 1
que a razão c2 pode variar entre 3 e 12 , o que resulta na seguinte condição:
1 c1 2 c1
≤ ≤ ou 0.333 ≤ ≤2
3 c2 1 c3
Essa informação pode fornecer respostas imediatas referentes à solução ótima, como demonstram as respostas
às perguntas a seguir.
1. Suponha que as receitas unitárias para os produtos 1 e 2 sejam alteradas para $35 e $25, respectivamente.
A solução ótima atual permanecerá a mesma?
2. Suponha que a receita unitária do produto 2 seja fixada em um valor atual de c2 = $20. Qual é a faixa de
variação para c1 , a receita unitária do produto 1, que manterá a solução ótima inalterada?
Exemplo 20. A Toyco monta três tipos de brinquedos – trens, caminhões e carros – usando três operações. Os
limites diários dos tempos disponı́veis para as três operações são 430, 460 e 420 minutos, respectivamente, e as
receitas por unidade de trem, caminhão e carro de brinquedos são $3, $2 e $5 ,respectivamente. Os tempos de
montagem por trem nas três operações são 1, 2 e 1 minutos, respectivamente. Os tempos correspondentes por
caminhão e por carro são (3, 0, 2) e (1, 4, 0) minutos (o tempo zero indica que a operação não foi usada).
Representando o número diário de unidades montadas de trens, caminhões e carros,respectivamente, o problema
de PL associado é dado por:
A solução recomenda a fabricação de 100 caminhões e 230 carros, mas nenhum trem. A receita associada é
$1350.
ou
x1 + 2x2 + x3 = 430 − x4 (Operação 1)
3x1 + 2x3 = 460 − x5 (Operação 2)
x1 + 4x2 = 420 − x6 (Operação 3)
Com essa representação, as variáveis de folga têm as mesmas unidades (minutos) que os tempos de operação.
Assim, podemos dizer que uma redução de 1 minuto na variável de folga é equivalente ao aumento de 1 minuto
no tempo de operação.
Podemos usar essas informações para determinar os preços duais pela equação de maximização de f (x) na
tabela ótima 3.18 abaixo:
f (x) + 4x1 + x4 + 2x5 + 0x6 = 1350
f (x) + 4x1 + x4 + 2x5 + 0x6 = 1350 =⇒ f (x) = 1350 − 4x1 + 1(−x4 ) + 2(−x5 ) + 0(−x6 )
Dado que um decréscimo no valor de uma variável de folga é equivalente a um aumento em seu tempo de
operação, obtemos:
Resumindo, a linha (0) na tabela simplex ótima fornece diretamente os preços duais, como mostra a Tabela
3.19.
Esses cálculos mostram como os preços duais são determinados de acordo com a tabela simplex ótima para
restrições ≤. Para restrições ≥, a mesma idéia continua aplicável, exceto que o preço dual assumirá o sinal oposto
do associado à restrição ≤. Quanto ao caso em que a restrição for uma equação, a determinação do preço dual
com base na tabela simplex ótima requer cálculos mais aprimorados (vide [Taha]).
Base f(x) x1 x2 x3 x4 x5 x6 LD D1 D2 D3
max 1 -3 -2 -5 0 0 0 0 0 0 0
x4 0 1 2 1 1 0 0 430 1 0 0
x5 0 3 0 2 0 1 0 460 0 1 0
x6 0 1 4 0 0 0 1 420 0 0 1
As colunas sob D1 , D2 e D3 são idênticas às que estão sob as colunas básicas iniciais x4 , x5 e x6 . Isso significa
que, quando executamos as mesmas iterações simplex que as do modelo original, as colunas dos dois grupos devem
ter resultados idênticos também. Na verdade, a nova tabela ótima ficará:
Base f(x) x1 x2 x3 x4 x5 x6 LD D1 D2 D3
max 1 4 0 0 1 2 0 1350 1 2 0
x2 0 -1/4 1 0 1/2 -1/4 0 100 1/2 -1/4 0
x3 0 3/2 0 1 0 1/2 0 230 0 1/2 0
x6 0 2 0 0 -2 1 1 20 -2 1 1
A solução atual permanece viável, contanto que todas as variáveis sejam não negativas, o que resulta nas
seguintes condições de viabilidade:
1 1
x2 = 100 + D1 − D2 ≥0
2 4
1
x3 = 230 + D2 ≥0
2
x6 = 20 − 2D1 + D2 + D3 ≥0
Quaisquer variações simultâneas de D1 , D2 e D3 que satisfaçam essas desigualdades manterão a solução viável.
Se todas as condições forem satisfeitas, então a nova solução ótima pode ser encontrada por meio de substituição
direta de D1 , D2 e D3 nas equações dadas anteriormente.
Vejamos três situações sobre o resultado acima:
1. Suponha que o tempo de fabricação disponı́vel para as operações 1, 2 e 3 sejam 480, 440 e 410 minutos,
respectivamente. Para esta situação a solução atual permanece viável?
3. Como calculamos as faixas de viabilidade individuais que resultam da variação dos recursos um por vez?
A solução ótima não recomenda a produção de trens de brinquedo (x1 = 0). Essa recomendação é confirmada
pela informação dada por f (x) porque cada unidade de aumento em x1 acima de seu nı́vel zero atual reduzirá o
valor de f (x) em $4.
Podemos considerar o coeficiente de x1 como um custo unitário porque ele provoca uma redução na receita f (x).
Mas de onde vem esse ”custo”? Sabemos que x1 tem sua receita unitária de $3 no modelo original. Também
sabemos que cada trem de brinquedo consome recursos (tempos de operações) que, por sua vez, incorrem em
custo. Assim, a ”atratividade” de x1 do ponto de vista da otimização depende dos valores relativos da receita por
unidade e do custo dos recursos consumidos por unidade. Essa relação é formalizada ao se definir custo reduzido
como:
(Custo reduzido por unidade) = (Custo dos recursos consumidos por unidade) − (Receita por unidade)
Para avaliar a relevência dessa definição, no modelo original da Toyco, a receita por unidade para caminhões de
brinquedo (= $2) é menor do que a para trens de brinquedo ($3). Ainda assim, a solução ótima aconselha fabricar
caminhões de brinquedo (x2 = 100 unidades) e nenhum trem. A razão para esse resultado (aparentemente não
intuitivo) é que o custo unitário dos recursos usados para caminhões de brinquedo (isto é, tempos de operações)
é menor do que seu preço unitário. O oposto se aplica ao caso dos trens de brinquedo.
Pela definição dada de custo reduzido, agora podemos ver que uma variável não lucrativa (como x1 ) pode vir
a ser lucrativa de dois modos:
Em grande parte das situações reais, o preço por unidade pode não ser uma opção viável porque seu valor é
determinado por condições de mercado. Portanto, a opção real é reduzir o consumo de recursos, talvez aumentando
a eficiência do processo de produção.
O procedimento para a análise de sensibilidade é o mesmo para o lado direito, realizado anteriormente. Com
as variações simultâneas, a linha (0) na tabela simplex inicial aparece como:
Quando geramos as tabelas simplex usando a mesma sequência das variáveis que entram e que saem do modelo
original (antes da introdução das variáveis dj ), a iteração ótima aparecerá como segue na Tabela 3.23.
Como estamos lidando com um problema de maximização, a solução atual permanece ótima, contanto que os
novos custos reduzidos permaneçam não negativos para todas as variáveis não básicas. Assim, temos as seguintes
condições de otimalidade correspondentes às variáveis não básicas x1 , x4 e x5 :
1 3
x1 = 4 − d2 + d3 − d1 ≥ 0
4 2
1
x4 = 1 + d2 ≥ 0
2
1 1
x5 = 2 − d2 + d3 ≥ 0
4 2
Essas condições devem ser satisfeitas simultaneamente para manter a otimalidade da solução ótima atual.
Considere uma modificação como:
1. Para ilustrar a utilização dessas condições, suponha que a função objetivo da Toyco seja alterada de
para
max f (x) = 2x1 + x2 + 6x3
4. Resolva, utilizando o Método das Duas Fases, o seguinte problema de programação linear:
5. Resolva o problema de programação linear proposto a seguir e constate que a solução é ilimitada:
A conversão na forma de equação envolve utilizar a substituição x2 = x2− − x2+ . Mostre que a solução básica
não pode incluir ambas, x2− e x2+ , simultaneamente.
max f (x) = x1
Sujeito a 5x1 + x2 = 4
6x1 + x3 = 8
3x1 + x4 = 3
x1 , x2 , x 3 , x 4 ≥ 0
(a) Resolva o problema por inspeção (não use as operações de linha por Gauss-Jordan) e justifique a resposta
em termos das soluções básicas do Método Simplex.
(b) Repita o item anterior considerando que a função objetivo exige min f (x) = x1 .
(a) Resolva o problema pelo método simplex, no qual a variável que entra na base é a variável não básica
que tem o coeficiente mais negativo na linha da função objetivo.
(b) Resolva o problema pelo método simplex, sempre selecionando a variável que entra na base como a
variável não básica que tem o coeficiente menos negativo na linha da função objetivo.
(c) Compare o número de iterações dos dois itens anteriores. A seleção da variável que entra na base como
variável não básica que tem o coeficiente mais negativo resulta em um número menor de iterações? A
que conclusão podemos chegar quanto à condição de otimalidade?
(d) Suponha que o sentido de otimização seja mudado para minimização multiplicando f (x) por −1. Como
essa alteração afeta as iterações no método simplex?
Para cada um dos problemas a seguir, desenvolva a linha f (x) após substituir as variáveis artificiais:
13. Mostre como o método do M-Grande vai indicar que o problema a seguir não tem nenhuma solução viável.
14. No modelo da Toyco determine se a solução atual mudará em cada umvdos seguintes casos
15. A Electra produz quatro tipos de motores elétricos, cada um em uma linha de montagem separada. As
capacidades respectivas das linhas são 500, 500, 800 e 750 motores por dia. O motor do tipo 1 usa oito
unidades de um certo componente eletrônico, o motor do tipo 2 usa cinco unidades, o motor do tipo 3 usa
quatro unidades e o motor do tipo 4 usa seis unidades. O fabricante do componente pode fornecer 8000
peças por dia. Os preços dos componentes para os respectivos tipos de motor são $60, $40, $25 e $30 por
motor.
Dualidade
4.1 Introdução
A cada modelo de PL, a partir de agora denominado Primal (P), corresponde um outro denominado Dual (D). O
relacionamento dos dois modelos é extremamente instigante e capaz de enriquecer a compreensão da Programação
Linear e da sua interpretação econômica.
No problema Primal busca-se a otimização dos nı́veis de atividades das variáveis de decisão, entendidas como as
variáveis reais do problema em análise. No problema Dual a preocupação se dá com recursos disponı́veis, avaliados
a seus preços sombra (preços duais). Desse modo, o presente capı́tulo está fortemente relacionado com o final do
anterior. Além disso, as soluções dos dois problemas estão de tal modo inter-relacionadas pois da solução ótima do
problema Primal é possı́vel reconhecer a solução do Dual. Inversamente, na solução ótima do Dual identificamos
a solução do Primal.
Inicialmente, mostraremos que o Dual é resultado de um problema de Programação Linear, e, por meio de
exemplos simples, apresentamos as propriedades do relacionamento entre os dois problemas. Seguem, sem de-
monstrações formais, mas por meio de apelos intuitivos, os teoremas básicos da dualidade, completando o capı́tulo
com a apresentação do Método Dual Simplex.
maneira:
n
X
Maximizar ou Minimizar f (x) = cj xj
i=1
n
X
Sujeito a aij xj = bi , i =1:m
i=1
xj ≥ 0, j = 1 : n.
As variáveis xj , j = 1 : n incluem as variáveis de sobra, de folga e artificiais, se houver.
A tabela 4.1 mostra como o problema dual é construı́do com base no problema primal.
Efetivamente, temos:
3. Os coeficientes da restrição (coluna) de uma variável primal definem os coeficientes do lado esquerdo da
restrição dual e seus coeficientes na função objetivo definem os coeficientes do lado direito;
4. Os coeficientes da função objetivo do problema dual são iguais aos coeficientes do lado direito das equações
de restrição do problema primal.
As regras para determinar o sentido da otimização (maximização ou minimização), o tipo da restrição (≤, ≥
ou =) e o sinal das variáveis duais estão na tabela 4.2.
Observe que o sentido da otimização no dual é sempre oposto ao do primal. Os exemplos a seguir demonstram
a utilização das regras de construção do problema dual e também que a definição dada anteriormente incorpora
todas as formas do primal.
Na forma padrão:
Do dual para o primal (ou o processo dual se considerarmos o sistema anterior como um primal):
Propriedade 2. “Se a restrição m do primal é uma igualdade (=), então a variável ym do dual é sem restrição de
sinal.”
Propriedade 3. “Se a restrição m do primal é maior que ou igual (≥), então a variável ym do dual é não positiva.”
Construindo o dual:
min f (y) = 3y1 − 4y2 + 9y3
S. a y1 + y3 ≥ 5
− y2 + 2y3 ≥ 2
y1 , y2 , y3 ≥ 0
Propriedade 4. “Se a variável xj do primal é sem restrição de sinal, então a restrição j do dual é uma igualdade
(=).”
Propriedade 5. “Se a variável xj do primal é não positiva, então a restrição j do dual é maior ou igual (≥).”
• Se a k-ésima restrição de um dos problemas tem folga não-nula, então a k-ésima variável do outro problema
é zero;
• Se a k-ésima variável de uma solução ótima de um dos problemas é positiva, a k-ésima restrição do outro é
satisfeita com variável de folga igual a zero.
fp (x) ≤ fd (y)
Em termos intuitivos, o problema primal (P), que transforma insumos em produtos, busca maximizar a receita
dos produtos, max fp (x). Já o problema dual (D) busca min fd (y), com a receita decorrente da venda das matérias-
primas e o seu mı́nimo seria o valor que tornaria sua venda tão atrativa quanto a sua transformação. Cabe relembrar
que, nessa interpretação, os custos administrativos e de transformação fı́sica são ignorados.
fp (x) = fd (y)
1. Se o primal é ilimitado (fp (x) =⇒ +∞), o dual não tem solução viável;
3. Se o dual é ilimitado (fd (y) =⇒ −∞), o primal não tem solução viável;
• Todos os elementos da linha objetivo são não negativos, ou seja, cj ≥ 0, para j = 1 : m. Esta condição é
denominada otimalidade primal ou solução dual factı́vel;
• A coluna b apresenta pelo menos um elemento negativo, isto é, a condição de não negatividade das variáveis
não é atendida. Diz-se que a solução primal é infactı́vel.
1. Seleção da variável a deixar a base: escolha uma das variáveis negativas, de preferência a mais negativa.
Seja br = min{bi para bi < 0}
Assim, a variável básica correspondente à linha r sai da base e a linha r é a linha do pivô.
2. Seleção da variável que entra na base: introduzir na base aquela variável cujo coeficiente na linha objetivo
atingir zero mais rapidamente, quando um múltiplo da linha r for somado à linha objetivo.
Podem ocorrer dois fatos:
(a) A avaliação da variável a entrar na base se restringe às variáveis não básicas que tem um coeficiente
negativo na linha r . A aplicação da lógica anterior conduz à regra dos coeficientes
ck cj
= max para ar j < 0
ar j j ar j
Assim, a variável xk entra na base. Podemos seguir para o passo 3.
(b) Caso ar j ≥ 0 para todo j = 1 : n, ou seja, a linha r não contém elementos negativos, então o problema
não tem solução factı́vel. Devemos parar então com a tentativa de resolução.
3. Achar uma nova solução básica em que a variável xk se torna básica. Isto equivale a efetuar um pivotea-
mento simplex em torno do elemento ar k . Vá para o passo 4.
4. Teste da Factibilidade Primal: se todos os bi , i = 1 : m forem não negativos a solução obtida é ótima,
então podemos parar; caso contrário, voltar ao passo 1.
Problemas de Minimização
Há duas formas de tratar problemas deste tipo. São elas:
Após colocar o problema na forma padrão escrevemos o quadro Simplex (Tabela 4.5).
Pela checagem das variáveis vemos que x2 entra, pois o aumento desta resulta em aumento de f (x). Sai x5 ,
uma vez que o teste de coeficiente só é possı́vel para esta (Tabela 4.6).
Chegamos no valor máximo de f (x) uma vez que nenhuma outra variável é propicia ao aumento de f (x) (os
coeficientes das variáveis x1 e x3 são positivos).
Então, f (x) = 2 e x = (0, 2, 0, 9, 0).
Na forma dual:
Após colocar na forma padrão temos o quadro Dual Simplex (a coluna b foi renomeada para identificar o
vetor b dual, assim bd ) – Tabela 4.7.
Como o caso é de minimização, buscaremos a variável mais positiva (para que o valor de f (y) tenha de ser
o mais negativo possı́vel), sendo que y2 entra na base. A variável que sai da base é y4 pois é a única na qual
podemos aplicar o teste do coeficiente. Após as operações elementares, temos a Tabela 4.8.
Aparentemente y4 poderia entrar na base, contudo os elementos de sua coluna são todos negativos (o mesmo
ocorre com y1 ). Neste caso, paramos os passos e chegamos na solução f (y) = 2 e y = (0, 1, 2, 0, 2).
3. Dê o Dual do problema a seguir numa tal forma que as variáveis Duais sejam não-negativas:
5. Resolver o problema Primal abaixo pelo Método Dual-Simplex, analisando e discutindo em seguida a solução
encontrada.
min f (x) = x1 + x2 + x3
S. a x1 − 2x2 + x3 ≤ 2
x1 + x2 + x3 ≤ 1
x1 , x2 , x3 ≥ 0
7. A BagCo produz jaquetas e bolsas de couro. Uma jaqueta requer 8m2 e uma bolsa, apenas 2m2 . Os requisitos
de mão-de-obra para os dois produtos são 12 e 5 horas, respectivamente. As disponibilidades semanais atuais
de couro e mão-de-obra estão limitadas a 1200m2 e 1850 horas. A empresa vende jaquetas e bolsas a $350 e
$120, respectivamente. O objetivo é determinar a programação de produção que maximize a receita lı́quida.
A BagCo está considerando uma expansão de produção. Qual é o preço máximo de compra que a empresa
deve pagar pelo couro adicional e para a mão-de-obra?
5.1 Introdução
A idéia dos Métodos de Pontos Interiores foi desenvolvida por Karmarkar, em 1984, quando ele publicou um
artigo que buscava a solução de um problema de Programação Linear (PL) através do interior da região viável.
Deste então, houve muitas modificações no método, permanecendo a idéia básica: a de caminhar pelo interior da
região viável .
Atualmente existem três classes de métodos: os que consideram apenas problemas no formato primal, outros
apenas no formato dual e, finalmente métodos que extraem informações dos dois problemas, conhecidos como
Métodos Primais-Duais. Esta última classe será abordada aqui, com base em [12].
5.2 Notação
A maior parte do desenvolvimento teórico de algoritmos para (PL) é feita para problemas com restrições do
tipo igualdade (problemas na forma padrão, como desenvolvido no Capı́tulo 3). No Capı́tulo 4 o denominamos
como Problema Primal (PP). O PL também pode ser formulado com restrições de desigualdades, que se chama
Problema Dual (PD). Os dois problemas (PP e PD) são relacionados por expressões simples, que permitem traduzir
métodos desenvolvidos em um formato para o outro (vide Capı́tulo 4).
Considere o problema no formato primal (ou padrão):
min cT x
(PP) S. a Ax = b
x ≥ 0
onde A ∈ Rn×n , b ∈ Rm e c, x ∈ Rn .
Suporemos que a matriz A tenha posto completo. O conjunto de soluções viáveis de (PP) é definido por:
P = {x ∈ Rn / Ax = b, x ≥ 0}
Associado ao (PP) temos o (PD), que consiste basicamente dos mesmos dados organizados de maneira dife-
rente:
max bT y
S. a AT y + z = c
(PD)
z ≥ 0
y irrestrito
onde y ∈ Rm e z ∈ Rn . Neste caso, já consideramos o problema dual no formato padrão pela adição da variável z
(variável de folga).
O conjunto de soluções viáveis do (PP) é dado por:
D = (y, z) ∈ Rm × Rn / AT y + z = c, z ≥ 0
D0 = (y, z) ∈ Rm × Rn / AT y + z = c, z > 0
A teoria da dualidade nos mostra a relação entre os problemas (PP) e (PD), ou seja, o conjunto de soluções
primais nos fornece informação sobre o conjunto de soluções duais e vice-versa. Por exemplo, dados quaisquer
vetores de soluções primais x para (PP) e (y, z) para (PD), temos:
bT y ≥ cT x.
A função objetivo dual fornece um limite inferior para a função objetivo primal, e a função primal fornece um
limite superior para o dual. As duas funções objetivo coincidem no valor, isto é: bT y∗ = cT x∗ se, e somente se x∗
resolve (PP) e (y∗ , z∗ ) resolve (PD).
Considere as condições de otimalidade, para esta classe de métodos, conhecidas como Condições de Karush-
Kuhn-Tucker ou (KKT), estabelecida pelo Teorema 2.
Teorema 2. Considere os problemas (PP) e (PD) acima. O vetor x∗ é uma solução ótima do problema (PP) e
(y∗ , z∗ ) é uma solução ótima do problema (PD) se, e somente se:
Do Teorema 2, temos que o vetor (x∗ , y∗ , z∗ ) é solução do sistema de equações (5.1) se, e somente se x∗ é
solução do (PP) e (y∗ , z∗ ) é solução do (PD). O vetor (x∗ , y∗ , z∗ ) é chamado de solução primal-dual.
O conjunto de soluções viáveis primais-duais e seu interior podem ser definidos como:
Ω = (x, y, z) / Ax = b, AT y + z = c, (x, z) ≥ 0
Ω0 = (x, y, z) / Ax = b, AT y + z = c, (x, z) > 0
respectivamente. Assumiremos Ω0 6= ∅.
XZe
com J sendo o Jacobiano de G. Desta forma, se xk+1 é solução da expansão acima, então vale J(xk )sk = −G(xk ),
com xk+1 = xk + sk . Portanto, o Método de Newton consiste em gerar os passos sk e usá-los para atualizar o
ponto xk .
Uma iteração completa do método de Newton pode ser escrita como
Na aplicação do Método de Newton surgem duas questões: (i) a necessidade de uma solução inicial e, (ii) a
necessidade de exercermos algum controle sobre os passos, já que ele pode convergir para soluções F (x, y, z) = 0
mas que não satisfaçam (x, y) > 0 (ditas soluções espúrias).
O item (i) será abordado na Seção 5.5.1; por isso, consideraremos aqui que já temos uma solução inicial viável.
O item (ii) é o responsável pelos diversos algoritmos que trabalham com a estrutura primal-dual. Cada um deles
possui uma maneira particular de limitar os passos de Newton, ou de alterar sua direção, mantendo a viabilidade
da solução.
Escrevendo uma iteração de Newton para a equação F (x, y, z) = 0, obtemos:
xk+1 xk + ∆xk xk
= y + ∆yk = yk − J−1 (x, y, z)F (x, y, z)
k+1 k
y (5.3)
zk+1 zk + ∆zk zk
ou ainda,
∆xk
∆yk = J−1 (x, y, z)F (x, y, z)
∆zk
∆zk
sendo:
A 0 0
J(x, y, z) = 0 AT I .
Z 0 X
Portanto, para obter uma iteração de Newton para a equação F (x, y, z) = 0, rescrevemos J(xk )sk = −G(xk )
como:
Axk − b
A 0 0 ∆xk
0 AT I ∆yk = − AT yk + zk − c
Z 0 X ∆zk X k Zk e
Se o ponto corrente (xk , yk , zk ) é estritamente viável (Axk = b, AT yk + zk = c e (x, z) > 0), então o sistema
acima toma a forma:
A 0 0 ∆xk 0
0 AT I ∆yk = 0
Z 0 X ∆zk −Xk Zk e
Os métodos primais-duais são variações do método de Newton obtidos a partir de modificações na maneira
de calcular (∆xk , ∆yk , ∆zk ), a direção de busca, e αk , o parâmetro que controla o tamanho do passo em cada
iteração. O valor de αk pode atuar no algoritmo de dois modos:
• Cuidando para que (x, z) permaneça “longe” das fronteiras do quadrante não negativo, (x, z) > 0. Direções
calculadas a partir de pontos próximos a este quadrante tendem a ser distorcidas levando a pouco, se algum,
progresso.
A trajetória central é um recurso interessante pois quando τ → 0, a equação (5.4) → equação (5.1). Então, se
C converge para algum ponto, deve ser para uma solução primal-dual do (PP). Desse modo, C atua como um guia,
evitando soluções espúrias pois mantém os produtos xi zi estritamente positivos, mas tendendo a zero à mesma
velocidade.
Mais ainda: a maioria dos algoritmos primais-duais tomam direções C com τ > 0, ou seja, direções dentro do
quadrante positivo definido por (x, z) > 0. Essa escolha de direções permite que passos maiores sejam dados em
relação às direções de Newton puras, sem violar a condição de positividade, que chamaremos de direção de busca.
Para descrever a direção de busca modificada, introduziremos um parâmetro de centralização σ ∈ [0, 1] e uma
métrica1 dual µ definida por:
n
1X xT z
µ= xi z i = , (5.5)
n n
i=1
Através do controle de σ e µ podemos gerar uma vizinhança da trajetória central em que os novos passos
calculados de acordo com a equação (5.6) tenham melhor progresso do que os passos de Newton puros.
Considere um conjunto estritamente viável H 0 :
Teorema 3. Suponha Ω0 6= ∅ e seja τ um número positivo. Então fτ tem um único mı́nimo local em H 0 , que
satisfaz as condições de trajetória central (5.4).
Retornando às equações de (5.6), podemos escrevê-la na forma de equações, como segue:
AT ∆y + ∆z = 0
A∆x = 0 (5.7)
Z∆x + X∆z = −XZe + σµe
Escrevendo a segunda equação de (5.7) e a equação (5.9) na forma matricial, com ∆z isolado (equação (5.8)):
" #" # " #
A 0 ∆x 0
= . (5.10)
−X−1 Z AT ∆y −σµX−1 e + Ze
Como X e Z são matrizes diagonais e não singulares, podemos isolar ∆x de (5.10), obtendo assim, um novo
sistema equivalente:
AZ−1 XAT ∆y = A Xe − σµZ−1 e
∆z = −AT ∆y (5.11)
−1 −1
∆x = −Xe + σµZ e−Z X∆z
O passo mais difı́cil é calcular a primeira equação de (5.11), mas o primeiro termo envolve uma matriz definida
positiva AD2 AT , onde D = Z−1/2 X1/2 , podendo então ser aplicada a Fatoração de Cholesky 2 para resolver o
sistema.
Estrutura Primal-Dual
Fase I
Fase II
AZ−1 A Xk e − σk µk Z−1
T k
k Xk A ∆y = k e
∆zk = −AT ∆yk (5.12)
∆xk = −Xk e + σk µk Z−1 −1
k e − Zk Xk ∆z
k
Passo 4: (Atualização)
xk+1 , yk+1 , zk+1 = xk , yk , zk + αk ∆xk , ∆yk , ∆zk
Na Fase I do algoritmo calculamos uma solução inicial para o problema e na Fase II, calculamos a direção de
busca e atualizamos a solução até obtermos a solução ótima.
modifica a função objetivo acrescentando um termo que (i) aumente muito seu valor quando determinada condição
de controle é violada e (ii) tende a zero quando nos aproximamos da solução ótima. Este termo é conhecido
usualmente de função de barreira ou função potencial.
Karmarkar usou uma função potencial para a Programação Linear sob a forma:
n
X
ρ log cT x − L − log xi
i=1
onde ρ = n + 1 e L é um limite inferior para o valor da função objetivo, provando sua convergência e resultados de
complexidade por mostrar que sua função diminui, pelo menos um valor constante em cada iteração. Por exemplo,
para o problema:
min x1 + x2
S. a x1 + x3 = 1
x2 + x4 = 1
x1 , x2 , x3 , x4 ≥ 0
cujo o tipo é um quadrado de lado 1 no plano (x1 , x2 ), a função de Karmarkar torna-se: Φ(x1 , x2 ) = 3 log(x1 +x2 )−
log x1 − log x2 . Observe a Figura 5.1 como a função decresce rapidamente na imediação do ótimo, x∗ = (0, 0).
0.5 1.5
0.4 1
1.5
1 0.5
0.5 0.3
0
-0.5 0
-1 0.2
-1.5 -0.5
0.5 0.1
0.4 -1
0 0.3
0.1 0.2 0 -1.5
0.2 0.3 0.1
0.4 0.50 0 0.1 0.2 0.3 0.4 0.5
Depois da publicação do algoritmo de Karmarkar, houve muitos avanços nos algoritmos que usam esta função;
porém a maioria das novas técnicas ainda baseava-se nos valores das variáveis primais. A partir de 1987 os
algoritmos passaram a utilizar de forma mais balanceada variáveis primais-duais. Nessa linha temos a função de
potencial primal-dual de Tanabe-Todd-Ye, definida por:
n
X
Φρ (x, y) = ρ log xT z − log xi zi (5.13)
i=1
Voltando a equação (5.13), faremos algumas modificações algébricas para extrairmos algumas propriedades de
Φρ . Primeiramente vamos somar e subtrair dois novos termos, como segue:
n
X
Φρ (x, y) = ρ log xT z − n log xT z − log xi zi + n log xT z − n log n + n log n.
i=1
De (5.14) percebemos que Φρ faz o balanceamento entre dualidade e centralidade. Se xT z é pequeno, favorecemos
xT z
a dualidade e se nenhum xi zi é muito menor do que a média µ = , favorecemos a centralidade.
n
Duas propriedades importantes podem ser então observadas:
xT z
1. Φρ → +∞ se xi zi → 0, para algum i , mas µ = não tende a zero;
n
2. Φρ → −∞ se, e somente se (x, y, z) → Ω0 .
De acordo com as condições de KKT, só estaremos no ótimo se xT z = 0. Portanto, é desejável que o método
aproveita a função de barreira de modo a forçar µ → 0.
A propriedade (1) é o efeito de barreira, pois para que µ → 0, todas as componentes de xT z devem ir a zero.
Caso só algumas tendam a zero, Φρ → +∞, funcionando! então como uma barreira.
n
X xi zi
Por outro lado, o termo − log xT z + n log n tem um limite inferior. Portanto, Φρ → −∞ se, e somente
i=1 n
se (ρ − n) log xT z → −∞, o que implica que xT z → 0. Então, o método de Redução de Potencial gera iterações
no sentido de levar µ → 0, usando informações fornecidas por estas duas propriedades.
Algoritmo RP
Fase I
Fase II:
n
Passo 3: (Cálculo da direção de busca) Seja σk = e resolva (5.12) para obter (∆xk , ∆yk , ∆zk ).
ρ
Passo 4: (Cálculo do tamanho do passo) Calcule:
min cT x + MP xn+1
S. a Ax + (b − Ax0 )xn+1 = b
(PPA) T 0 0 T
(A y + z − c) x + xn+2 = MD
(x, xn+1 , xn+2 ) ≥ 0
e
max bT y + MD ym+1
S. a AT y + (AT y0 + z0 − c)ym+1 + z = c
(PDA) (b − Ax0 )T y + zn+1 = MP
ym+1 + zn+2 = 0
(z, zn+1 , zn+2 ) ≥ 0
onde xn+1 e ym+1 são variáveis artificiais primal e dual, respectivamente, com seus coeficientes de custo artificiais
MP e MD . O coeficiente dessas variáveis na primeira restrição de (PPA) e na primeira de (PDA) correspondem
a uma medida de inviabilidade da apriximação inicial. A variável xn+2 corresponde à variável dual artificial ym+1 e
zn+1 , zn+2 são variáveis duais de folga correspondentes a xn+1 e xn+2 . Essas variáveis são necessárias para manter
a relação de dualidade entre dois problemas.
Fixando-se MP e MD com valores que dominam a função objetivo primal e dual, garantimos que a direção de
busca é dominada pela direção viável. Se um ponto viável existe, então durante o processo iterativo as variáveis
e
MD > (AT y + z0 − c)T x0 , (5.16)
0
1 − xn+1 = 0
0
(5.18)
xn+1 = 1
0
xn+2 = MD − (AT y0 + z0 − c)T x 0 ,
0
zn+1 = MP − (b − Ax0 )T y 0 , (5.20)
0
zn+2 = 1.
A partir daqui, buscamos as soluções de (PPA) e (PDA) de maneira que se relacionam com os problemas
originais (PP) e (PD), respectivamente, de acordo com o Teorema a seguir.
Teorema 4. Sejam x∗ e (y∗ , z∗ ) soluções ótimas dos problemas originais (PP) e (PD), respectivamente. Suponha
que:
MP > (b − Ax0 )T y0 ,
e
MD > (AT y + z0 − c)T x0 .
1. Uma solução viável (x, x n+1 , x n+2 ) de (PPA) é um ponto de mı́nimo se, e somente se x resolve (PP) e
x n+1 = 0.
2. Uma solução viável (y, y m+1 , z, z n+1 , z n+2 ) de (PDA) é um ponto de máximo se, e somente se (y, z) resolve
(PD) e y m+1 = 0.
Observe que este é exatamente o método do M-Grande, tradicionalmente usado em associação com o Simplex
e aqui adaptado para os métodos primais-duais.
krb k kAx − bk
= ≤ τ1
1 + kbk 1 + kbk
krc k kAT y + z − ck
= ≤ τ1 (5.21)
1 + kck 1 + kck
|cT x − bT y|
≤ τ1
1 + |cT x|
onde τ1 é a tolerância. Naturalmente outros critérios podem ser adotados em concordância com a aplicação a um
problema especı́fico.
Fase I
Passo 1: (Inicialização) Faça k = 0 e encontre (x0 , y0 , z0 ) ∈ Ω0 uma solução inicial e defina τ1 ≥ 0 uma tolerância
suficientemente pequena.
Fase II
Passo 2: (Otimalidade) Se
krb k kAx − bk
= ≤ τ1
1 + kbk 1 + kbk
krc k kAT y + z − ck
= ≤ τ1
1 + kck 1 + kck
|cT x − bT y|
≤ τ1
1 + |cT x|
então pare. A solução encontrada é ótima.
(xk )T zk
Passo 3: (Cálculo da direção de busca) Seja σk ∈ [0, 1] e µk = . Seja σk ∈ [0, 1]. Calcule:
n
AZ−1 A Xk e − σk µk Z−1
T k
k Xk A ∆y = k e
∆zk = −AT ∆yk
∆xk = −Xk e + σk µk Z−1 −1
k e − Zk Xk ∆z
k
Passo 4: (Atualização)
xk+1 , yk+1 , zk+1 = xk , yk , zk + αk ∆xk , ∆yk , ∆zk
6.1 Introdução
Como descrito em [2], problemas de Programação Linear Inteiro (PLI) pertencem a otimização discreta ou
combinatória pois algumas das variáveis fazem parte de um conjunto discreto, tipicamente, um subconjunto dos
números inteiros.
Um problema com variáveis inteiras e reais é denominada de Programação Linear Inteira Mista (PLIM) quando
tem a seguinte forma:
max f (x, y) = cx + dy
S. a Ax + Dy ≤ b
x ∈ Rn+
y ∈ Zp+
max f (x) = cx
S. a Ax ≤ b
x ∈ Zn+
e se todas as variáveis assumem valores 0 ou 1, tem-se um problema de Programação 0-1 ou Binária (PB), escrito
como:
max f (x) = cx
S. a Ax ≤ b
x ∈ Bn+
em que Bn+ representa o espaço dos vetores com n componentes binárias.
Os algoritmos de (PLI) são baseados na exploração do sucesso computacional da resolução de problemas de
Programação Linear (PL), uma vez que os problemas que tratam de soluções inteiras fazem uma busca dentro da
região factı́vel. Os algoritmos possuem três passos como estratégia de resolução, sendo:
1. Relaxar a região de soluções de PLI eliminando a restrição inteira imposta a estas variáveis e substituindo
qualquer variável binária y pela contı́nua 0 ≤ y ≤ 1. Neste passo, transformamos um problema linear inteiro
Capı́tulo 6. Programação Linear Inteira PL
2. Faz-se então a resolução do PL relaxado e identifica-se uma solução ótima contı́nua. A resolução desta etapa
pode ser através dos métodos já aprendidos anteriormente, como o Método Simplex.
3. Começando do ponto ótimo contı́nuo, adicionam-se restrições especiais que modifiquem iterativamente a
região de soluções de PL de maneira que, a certa altura, resultará em um ponto extremo ótimo que deverá
satisfazer os requisitos de integralidade.
Os algoritmos existentes desenvolvidos para PLI, executam a etapa 3 acrescentando restrições especiais. São
dois os métodos mais conhecidos: branch-and-bound (B&B) e planos de corte. Apresentaremos aqui uma in-
trodução ao algoritmo B&B.
A solução do problema (6.1) relaxado, ilustrado pela figura 6.1 (denominado como PL1), é dada pelos vértices
das duas restrições, ou seja, x1 = 3.75; x2 = 1.25 e f (x) = 23.75.
Como a solução ótima do problema relaxado não satisfaz a condição de integralidade, o algoritmo B&B modifica
a região de soluções de modo a identificar a solução ótima do problema de PLI. Primeiramente, selecionamos uma
das variáveis inteiras cujo valor ótimo em PL1 seja não inteiro. Selecionamos a variável x1 = 3.75, tomando
3 < x1 < 4 da região de soluções de PL1 com nenhum valor inteiro de x1 , podendo retirá-la da região total. Esse
passo faz surgir dois problemas de PL que são equivalentes ao PL1. A região criada é apresentada na figura 6.2,
elaborada como:
Se usarmos esta lógica para eliminar a condição de integralidade gerando regiões relaxadas impondo restrições
adequadas (que cercam a condição de valores inteiros para as variáveis), teremos PLs cujos pontos extremos ótimos
satisfaçam as restrições inteiras. Na verdade, resolveremos o PL1 lidando com uma sequência de PLs contı́nuos.
As novas restrições, x1 ≤ 3 e x1 ≥ 4 são mutuamente exclusivas, de modo que PL2 e PL3 nos “nós” 2 e 3
devem ser tratadas como PLs separadas, como mostra o esquema da figura 6.3.
Essa dicotomização dá origem ao termo ramificação no algoritmo B&B, sendo neste caso, x1 denominada de
variável de ramificação. Como observado, no esquema (figura 6.3) apresentamos a solução de cada ramificação,
entretanto, mostraremos como montar cada um dos PLs.
O PLI ótimo se encontra em PL2 ou em PL3. Em consequência, os dois subproblemas devem ser examinados
e escolhemos arbitrariamente PL2 para ser o primeiro:
1
PL1
x1 = 3.75, x2 = 1.25
f (x) = 23.75
x1 ≤ 3 x1 ≥ 4
2 3
PL2 PL3
x1 = 3, x2 = 2
f (x) = 23 x1 = 4, x2 = 0.83
Limite inferior f (x) = 23.33
Note que a solução de PL2 apresenta valores inteiros para as variáveis x1 e x2 , deste modo dizemos que o
problema é incumbente e que não precisa ser mais investigado, pois não pode dar nenhuma solução melhor para
o PLI com esta ramificação. Entretanto, não podemos ainda afirmar que esta solução é a melhor solução para o
problema original pois, o PL3 ainda pode fornecer um valor melhor para f (x).
Afirmamos apenas que f (x) = 23, encontrada em PL2, é o limite inferior do valor ótimo para a função
objetivo, isto é, qualquer subproblema não examinado que apresente um valor menor que este deve ser descartado
como não promissor. Já se ele produzir uma solução melhor, atualizamos o valor do limite inferior como sendo o
desta nova solução.
Como f (x) = 23.75 em PL1 e todos os coeficientes da função objetivo são inteiros, é impossı́vel, para este
caso, que PL3 produza uma solução inteira melhor com f (x) > 23, assim descartamos PL3.
O algoritmo B&B agora está completo porque ambas, PL2 e PL3, foram examinadas e descartadas (a primeira
por produzir uma solução inteira e a segunda por não ser capaz de melhorar tal solução). Assim, concluı́mos que a
solução ótima do PLI está associada com o limite inferior encontrado em PL2, ou seja, x1 = 3; x2 = 2 e f (x) = 23.
Agora poderemos mostrar mais sobre como funciona o algoritmo B&B. Baseado no problema do exemplo 25,
e se:
Se fizermos a alteração sugerida no item 1 e 2, os cálculos resultantes mudarão, como veremos a seguir. A
figura 6.4 mostra todos os subproblemas envolvidos.
A criação dos subproblemas PL4 e PL5 advém da solução não inteira de PL3. Temos então:
Agora, temos três subproblemas a serem examinados: PL2, PL4 e PL5. Suponha que optemos por examinar
PL5 em primeiro lugar. O PL5 não tem nenhuma solução e, em decorrência, está descartado. Em seguida,
1
PL1
x1 = 3.75, x2 = 1.25
f (x) = 23.75
x1 ≤ 3 x1 ≥ 4
2 3
PL2 PL3
x1 = 3, x2 = 2
f (x) = 23 x1 = 4, x2 = 0.83
Limite inferior f (x) = 23.33
x2 ≤ 0 x2 ≥ 1
4 5
PL4 PL5
x1 = 4.5, x2 = 0 Sem solução.
f (x) = 22.5
x1 ≥ 4 x1 ≤ 5
6 7
PL6 PL7
x1 = 4, x2 = 0 Sem solução.
f (x) = 20
examinamos PL4. A solução ótima é x1 = 4.5; x2 = 0 e f (x) = 22.5. O valor não inteiro de x1 leva a dois ramos
x1 ≤ 4 e x1 ≥ 5, e à criação dos subproblemas PL6 e PL7 com base em PL4.
Agora, os subproblemas PL2, PL6 e PL7 precisam ser examinados. Selecionando PL7, o problema não tem
nenhuma solução viável e, portanto, está descartado. Em seguida, selecionamos PL6, sendo que este problema dá
a primeira solução inteira (x1 = 4; x2 = 0 e f (x) = 20) e, assim, fornece o primeiro limite inferior para o valor
ótimo da função objetivo para PLI.
Ficamos ainda com PL2, que dá uma solução inteira melhor, como visto no exemplo. Deste modo, o limite
inferior é atualizado e nesse ponto, com todos os subproblemas interpretados, a melhor solução é a encontrada
para PL2. A sequência de solução apresentada na figura 6.4 (PL1 → PL3 → PL5 → PL4 → PL7 → PL6 → PL2)
é a pior hipótese de passos possı́veis para o problema do exemplo 25, pois foram percorridos todos os ramos antes
1. Selecione um PLi , o próximo subproblema a ser examinado. Resolva o PLi e tente interpretá-lo usando uma
das três condições:
• O valor ótimo de f (x) do PLi não pode dar um valor objetivo melhor do que o limite inferior atual;
• O PLi fornece uma solução inteira viável melhor do que o limite inferior atual;
• O PLi não tem nenhuma solução viável.
• Se o PLi for interpretado e uma solução for encontrada, atualize o limite inferior. Se todos os subpro-
blemas tiverem sido descartados, pare; o PLI ótimo está associado com o limite inferior finito atual. Se
não existir nenhum limite inferior finito, o problema não tem nenhuma solução viável. Senão, determine
i = i + 1, e repita a etapa 1 novamente.
• Se o PLi não for interpretada, vá para a etapa 2 e ramifique.
2. Selecione uma das variáveis inteiras xj , cujo valor ótimo xj∗ na solução do PLi seja não inteiro. Elimine a
região:
bxj∗ c < xj < bxj∗ c + 1
bxj∗ c ≥ xj e xj ≥ bxj∗ c + 1
As etapas dadas se aplicam a problemas de maximização. Para minimização, substituı́mos o limite inferior por
um limite superior (cujo valor inicial é f (x) = +∞).
1 Solução global: melhor solução para o problema.
2O Mátodo de Planos de Corte não serão tratados neste texto, porém a idéia do método é a de incorporar restrições que aproximem
a região relaxada ao conjunto de pontos inteiros factı́veis.
3 Métodos heurı́sticos são métodos (ou técnicas) sem um detalhado rigor matemático, podendo ser especı́fico para classes de
problemas.
4 Como exemplo, considere x = 3.8, assim bx ∗ c = 3 e o intervalo 3 < x < 4.
j j j
O algoritmo B&B pode ser estendido diretamente a problemas mistos (nos quais apenas algumas das variáveis
são inteiras). Se uma variável for contı́nua, simplesmente nunca a selecionamos como uma variável de ramificação.
Um subproblema viável fornece um novo limite para o valor dos coeficientes da função objetivo se os valores das
variáveis discretas forem inteiras e se o valor da função objetivo for melhor em relação ao limite atual.
Após a explicação e a sı́ntese do algoritmo Branch-and-Bound, vamos citar dois grandes tipo de problemas que
fazem uso do algoritmo para suas respectivas resoluções. O primeiro é o problema de circuitos entre cidades, no
qual um caixeiro-viajante faz suas vendas e entregas, isto é, o problema do caixeiro-viajante; o segundo é um
problema de alocação de recursos em um determinado espaço compartimentado, como uma mochila, constituindo
então, o problema da mochila.
n X
X
min f (x) = dij xij
i=1 j>i
X X
S. a xji + xij = 2 ,i =1:n
j<i j>i (6.3)
X X X X jnk
xij + xij ≥ 2 , S ⊂ N, 3 ≤|S|≤
2
i∈S j ∈S,
/ j>i i ∈S
/ j∈S, j>i
x ∈ Bn(n−1)/2
A função objetivo do problema (6.3) expressa a minimização da distância total da rota, a primeira restrição impõe
que cada cidade tenha somente uma cidade sucessora imediata e uma cidade predecessora imediata. A segunda
restrição elimina sub-rotas pois para cada conjunto S, existem no mı́nimo duas arestas entre as cidades de S e as
cidades não pertencentes a S. A cardinalidade
jnk de S é no mı́nimo 3 (três), pois um ciclo em um grafo não orientado
tem pelo menos 3 nós e no máximo , pois ao se eliminar ciclos com k nós, eliminam-se ciclos com n − k nós
2
(vide figura 6.5 (c)). A última restrição indica o tipo de variáveis.
A figura 6.5 apresenta possı́veis cenários de um TSP com 5 cidades, onde os circulos representam as cidades
e as linhas, conhecidas como arcos, as ligações entre estas cidades, neste caso abordado são rotas de duas vias
(simetria – ida e volta), como mostra a figura 6.5 (a). O item (b) apresenta uma possı́vel solução (ótima ou viável)
para este exemplo gráfico e o item (c) uma solução de subcircuitos (solução inviável).
5 O problema do caixeiro viajante aparece na literatura (estrangeira ou nacional) com a sigla TSP que é a abreviatura de traveling
salesman problem.
2 2
3 3
1 1
5 5
4 4
3
1
Defina as variáveis: (
1 se o produto j é selecionado
xj =
0 caso contrário
O problema é, então, formulado como:
n
X
max f (x) = pj xj
j=1
n
X (6.4)
S. a aj xj ≤ b
j=1
x ∈ Bn
A função objetivo do problema (6.4) expressa a maximização do retorno esperado, a primeira restrição indica que
o capital b não pode ser excedido e a última restrição representa o tipo de variáveis.
Esse problema é denominado problema da mochila devido à analogia do problema que envolve a decisão de
quais itens carregar em uma mochila sem exceder um dado limite de peso.
Exemplo 26. Considere um capital para investimento b = 100, n = 8 projetos e os seguintes vetores de parâmetros:
A função objetivo do problema (6.5) representa a maximização do lucro total, a primeira restrição garante que a
capacidade bi da mochila i não pode ser excedida, a segunda restrição indica que se o item j é escolhido, então ele
é colocado em um única mochila e a última restrição representa o tipo de variáveis.
x ∈ Bmn
y ∈ Bn
A função objetivo do problema (6.6) minimiza o número de mochilas. Note que o limitante superior do número
de mochilas é igual ao número de itens n. O conjuto de equações expresso pela primeira restrição asseguram que
cada item j é colocado em uma única mochila, o conjunto de equações expresso pela segunda restrição impõem
que se a mochila é usada, então sua capacidade b não pode ser excedida. Finalmente, as duas últimas restrições
indicam o tipo das variáveis.
6 Problemas de carregamento tridimensionais são complexos e usualmente resolvidos por métodos heurı́sticos.
(a) (c)
(b)
max f (x) = x1 + x2
S. a 2x1 + 5x2 ≤ 16
6x1 + 5x2 ≤ 27
x1 , x2 ≥ 0
x1 , x2 ∈ Z
2. Mostre graficamente que o seguinte problema de PLI não tem nenhuma solução viável e então verifique o
resultado usando B&B.
max f (x) = 2x1 + x2
S. a 10x1 + 10x2 ≤ 9
10x1 + 5x2 ≤ 1
x1 , x2 ≥ 0
x1 , x2 ∈ Z2+
max f (x) = x1 + x2
S. a −2x1 + 2x2 ≤ 3
7x1 + 3x2 ≤ 22
x1 x2 ∈ Z2+
(a) Graficamente.
(b) Pelo método branch-and-bound.
5. Um ecologista brasileiro, trabalhando na Amazônia, foi contratado para realizar a divisão de parte da floresta
em reservas florestais. Estudos recentes dividiram a floresta em dez regiões. O trabalho do ecologista
consiste em formar cinco reservas a partir dessas informações, observando o número de predadores e presas
que cada região contém. A tabela 6.2 mostra esses dados para cada região (em milhares). Os animais não
podem ser removidos de sua região e cada reserva deve conter entre 80 mil e 130 mil animais. Sabe-se que o
ideal é que o número de presas deve ser maior que o número de predadores em uma reserva, para garantir o
equilı́brio entre as espécies. Formule um problema para ajudar o ecologista a formar cinco reservas garantindo
o equilı́brio.
6. Um caminhão de entrega de óleo de uma empresa contém cinco compartimentos, com capacidade para 2700,
2800, 1100, 1800 e 3400 galões de combustı́veis, respectivamente. A empresa deve entregar três tipos de
combustı́veis A, B e C para um cliente. Parte da demanda pode não ser atendida, mas, neste caso, a empresa
deve arcar com os custos. As demandas, penalidades por galão não entregue e o número máximo de galões
de demanda não atendidas são descritas na tabela 6.3. Cada compartimento pode levar apenas um tipo de
combustı́vel. Formule o problema de carregar o caminhão de forma a minimizar os custos de não atendimento
da demanda.
7. Experimente colocar este problema em um software como o TORA/Solver/AMPL8 . Este problema foi proje-
tado para demonstrar o comportamento bizarro do algoritmo B&B até mesmo para problemas pequenos. Em
particular, observe como muitos subproblemas serão examinados antes do software achar o ótimo e quantos
são necessários para verificar a otimalidade. Seja o problema:
min f (y) = y
S. a 2(x1 + x2 + x3 + ... + x5 ) + y = 15
(a) Use a opção automática do TORA para mostrar que, embora a solução ótima seja encontrada após 9
subproblemas, mais de 25.000 subproblemas são examinados antes de confirmar a otimalidade.
(b) Mostre que o Solver exibe uma experiência semelhante à do TORA. No Solver, você pode observar a
mudança no número de ramos gerados (subproblemas) na parte inferior da planilha.
(c) Resolva o problema com o AMPL e mostre que a solução obtida instantaneamente com 0 iterações
simplex MIP e 0 nós B&B. A razão para esse desenpenho superior só pode ser atribuı́da às etapas
preparatórias executadas pelo AMPL e/ou pelo resolvedor CPLEX antes de resolver o problema.
7.1 Introdução
A aplicação bem sucedida da Programação Matemática envolve habilidades tanto em Matemática quanto em
Computação. Neste sentido, alguns softwares foram desenvolvidos para facilitar o uso desta importante ferramenta
de decisão. Para problemas de Programação Linear (PL) podemos contar com os softwares Microsoft Office
Excel
r (ou MS-Excel), Planilha Eletrônica do ambiente Open Office, lp solve (vide [9]), CPLEX (vide [5]), entre
outros. Abordaremos aqui as ferramentas para PL dos softwares Microsoft Office Excel e lp solve.
Para auxiliar na manipulação destes softwares26, tomemos o exemplo abaixo (7.1).
A coluna E (células E2:E4) e célula F7 contém as equações relativas às restrições R1, R2, R3 e função objetivo.
A tabela 7.1 mostra as funções do problema (7.1) e seu posicionamento nas células adequadas.
Na prática, basta que se digite a fórmula para a célula E2 e então copie para as demais células. Para fazer isso
corretamente, devem ser usadas as referências fixas $B$6, $C$6 e $D$6, que representam as variáveis x1 , x2 e x3 .
Para programas maiores é mais eficiente digitar (ou procurar no ı́cone de fórmulas):
=SOMARPRODUTO(B2:D2;$B$6:$D$6)
na célula E2 e copiar para as demais. Agora todos os parâmetros estão prontos para serem vinculados ao solver.
A figura 7.6 mostra a janela aberta após selecionar o ı́cone Solver. Primeiramente, define-se a função objetivo
– célula $F$7, o sentido da otimização – igual a “Máx”, e as células das variáveis – $B$6:$D$6.
Estas informações deixam claro para o Solver que as variáveis definidas pelas células $B$6, $C$6 e $D$6 são
determinadas pela maximização da função objetivo na célula $F$7.
A póxima etapa é estabelecer as restrições dos problemas clicando em Adicionar na caixa de diálogo Parâmetros
do Solver. A caixa Adicionar restrições será exibida, como mostra a figura 7.7 para facilitar a digitação dos
elementos das restrições:
Uma maneira de entrar com as restrições de não negatividade é clicar em Opções na caixa de diálogo Parâmetros
do Solver para acessar a caixa de diálogo Opções do Solver, como mostra a figura 7.8, selecionar Presumir não
negatividade. Pode também selecionar Presumir modelo linear.
Para resolver o problema, clique Resolver em Parâmetros do Solver. Uma nova caixa de diálogo, Resultado
do Solver dará o status da solução (figura 7.9). Se a montagem do problema estiver correta, o valor ótimo da
função objetivo aparecerá na célula $F$7 e os valores de x1 , x2 e x3 irão para as células $B$6, $C$6 e $D$6,
respectivamente.
Se o problema não tiver solução viável, o Solver emitirá a mensagem explı́cita “Solver não pode achar uma
solução viável”. Se o valor objetivo ótimo for ilimitado, o Solver emitirá uma mensagem ambı́gua “Os valores das
células de destino não convergem”. Em qualquer um dos casos, a mensagem indica que há algo errado com a
formulação do modelo.
A caixa de diálogo Resultados do Solver lhe dará oportunidade de requisitar mais detalhes sobre a solução,
incluindo o relatório de sensibilidade, como mostram as figuras 7.10, 7.11 e 7.12.
7.3 lp solve
O software lp solve é um solver para problemas de Programação Linear Inteira Mista, vide [9]. Como o primeiro
passo na resolução de um problema de Programação Inteira é a de relaxar a condição de integralidade das variáveis,
ou seja, resolver um problema de Programação Linear, sua aplicabilidade é direta em PL. O software lp solve é
livre (licensa LGPL), baseado no Método Simplex Revisado (para PL) e Branch-and-Bound (para Programação
Inteira).
Note que, este solver é exclusivo para problemas lineares, ou seja, as equações do problema devem ser de
primeira ordem. Por outro lado, o Excel Solver permite a resolução de problemas não lineares.
Este software foi desenvolvido por Michel Berkelaar na Eindhoven University of Technology. O trabalho de
Jeroen Dirks fez a transição da versão básica 1.5 para a versão completa 2.0. lp solve possui uma comunidade
via Yahoo group http://groups.yahoo.com/group/lp solve/, onde vc encontra as últimas fontes, executáveis
para plataforma comum, exemplos, manuais e mensagens de ajuda sobre o lp sove.
A instalação deste software é relativamente simples e pode ser feita através do site
http://sourceforge.net/projects/lpsolve/.
Após a instalação, em ambiente Windows, aparecerá um ı́cone na sua área de trabalho permitindo o acesso
direto. A figura 7.13 apresenta a tela inicial do solver.
Considere o problema (7.1), sua implementação é direta, como mostra a figura 7.14.
No menu superior, selecione a opção Action e Solve. A tecla F9 é o atalho deste comando, como apresentado
na figura 7.15.
A figura 7.16 mostra a mensagem de resolução do problema em questão.
As janelas apresentadas pelas figuras 7.16 e 7.17 mostram o problema em forma matricial e os valores das
variáveis após o processo de otimização, respectivamente.
111
lp solve Capı́tulo 7. O Uso de Excel e do lp solve para Problemas de Programação Linear
112
lp solve Capı́tulo 7. O Uso de Excel e do lp solve para Problemas de Programação Linear
113
lp solve Capı́tulo 7. O Uso de Excel e do lp solve para Problemas de Programação Linear
114
Referências Bibliográficas
[1] E. L. de Andrade. Introdução à Pesquisa Operacional: Métodos e Modelos para Análise de Decisão. Terceira Edição.
LTC, 2004.
[3] M. S. Bazaraa, J. J. Jarvis e H. D. Sherali. Linear Programming and Network Flows. Second Edition, John Wiley and
Sons, 1990.
[4] J. L. Boldrin, S. I. R. Costa, V. L. Figueiredo e H. G. Wetzler. Álgebra Linear. 3a Edição, Editora Harbra, 1980.
[6] G. B. Dantzig. Linear Programming and Extensions. Eleventh Edition, Princeton University Press, 1998.
[7] M. C. Goldbarg e H. P. L. Luna. Otimização Combinatória e Programação Linear. Editora Campus, 2000.
[10] D. G. Luenberger e Y. Ye. Linear and Nonlinear Programming. Third Edition, Spinger, 2008.
[12] L. A. Pinto. Métodos de Pontos Interiores para Programação Inteira. UNESP – Campus de São José do Rio Preto,
Dissertação de Mestrado, 1999.
[13] E. M. da Silva, E. M. da Silva, V. Gonçalves e A. C. Murolo. Pesquisa Operacional para os cursos de Economia,
Administraçao e Ciências Contbeis. Terceira Edição, Editora Atlas, 1998.
[15] R. J. Vanderbei. Linear Programming: Foundations and Extensions. Kluwer Academic Publishers, 1997.
115