Capítulo 2: Programação Linear

Propaganda
Capı́tulo 2
Programação Linear
2.1
Introdução
Modelos lineares de otimização aos quais eventualmente se incorporam restrições de integralidade das variáveis de decisão são os mais utilizados em planejamento. Quando do surgimento do método Simplex para Programação Linear,
argumentava-se que modelos lineares não seriam adequados para representar problemas reais, uma vez que quase todos os problemas de interesse possuiam caracterı́sticas não–lineares. Entretanto, o método Simplex tornou possı́vel resolver
problemas relativamente grandes (em termos de número de variáveis e restrições),
o que nenhum outro método era capaz à época. Uma melhor compreensão das potencialidades e limitações da modelagem linear levou a inúmeras aplicações práticas
do método.
Rapidamente constatou-se que a aplicabilidade da modelagem linear poderia
ser substancialmente espandida se fosse possı́vel tratar problemas com variáveis de
decisão restritas a valores inteiros ou binários (0 ou 1), o que permitiria incorporar à
modelagem de problemas de planejamento um tipo importante de não–linearidade.
Desenvolvimentos nesta linha deram origem às Programações Inteira, Inteira/Mista
e Combinatória, cujos métodos podem ser vistos como extensões dos métodos da
Programação Linear.
A modelagem linear e a solução de problemas de produção por meio do método
Simplex são os principais objetivos deste capı́tulo. Por conveniência, modelos com
variáveis de decisão inteiras ou binárias são também considerados; métodos adequados para tratar estes modelos serão discutidos a partir do Capı́tulo 3.
2.2
Hipóteses básicas
Uma empresa pode ser vista como um sistema que transforma recursos em
produtos por meio de métodos ou tecnologias adequadas. Tipicamente os recursos
consistem de matérias–primas, força de trabalho (homens/hora), disponibilidade de
equipamentos e bens intermediários, adquiridos de outras empresas. Os produtos
9
10
Capı́tulo 2. Programação Linear
podem ser bens ou serviços acabados para consumo, ou intermediários, a serem
comercializados com outras empresas.
Certas hipóteses são necessárias para que modelos lineares representem adequadamente problemas de produção.
Proporcionalidade
Modelos lineares adotam a hipótese de que se o custo de produção de uma
unidade (custo unitário) de um produto j é cj , então xj unidades do produto custam cj xj . Se pj é o preço unitário de venda do produto j, então xj unidades do
produto são vendidas por pj xj . Na modelagem linear, se a produção de uma unidade do produto j consome aij unidades do recurso i, então xj unidades do produto
consomem aij xj do recurso i.
A hipótese de proporcionalidade pode deixar de corresponder à realidade.
Exemplo: o custo (preço) unitário de produção (venda) pode decrescer a partir de
um significativo aumento da quantidade produzida (vendida).
Aditividade
Pela hipótese da aditividade, se os custos unitários de produção de dois produtos, j e k, são cj e ck , respectivamente, então o custo total para produzir xj e
xk unidades dos produtos é cj xj + ck xk , o mesmo aplicando-se ao valor total de
venda de produtos. Se a produção de uma unidade do produto j e de uma unidade
do produto k consomem aij e aik unidades do recurso i, respectivamente, então o
consumo total do recurso i é aij xj + aik xk .
A hipótese de aditividade implica que produtos podem ser produzidos independentemente. Pode deixar de ser válida se houver interação entre produções.
Exemplo: dois produtos utilizam um mesmo recurso com diferentes eficiências
Divisibilidade
Significa que as variáveis de decisão podem assumir qualquer valor real, isto
é, valores fracionários (não–inteiros) representam decisões viáveis.
A hipótese de divisibilidade pode ser adotada quando as variáveis de decisão
significam, por exemplo, quanto produzir de cada produto, e produtos não–acabados
durante um perı́odo de produção (dia, semana, mês, ano, etc.) podem ser acabados
no perı́odo seguinte. Entretanto, se significarem quantidades de produtos para
entregas em datas pré–determinadas, variáveis de decisão assumindo apenas valores
inteiros podem ser necessárias.
Existem ainda situações nas quais deve-se selecionar que produtos produzir
dentro de uma lista de produtos possı́veis. Para indicar seleção ou atribuição, usa-se
geralmente variáveis de decisão binárias: valores iguais a 1 indicam que os custos
de produção e recursos utilizados pelos produtos assim selecionados devem ser con-
2.3. Modelos lineares
11
tabilizados; valores iguais a 0 indicam exatamente o contrário.
Determinismo
Os parâmetros presentes no modelo – custos, preços unitários, recursos –
são precisamente conhecidos. Assume-se que eventuais incertezas quanto a estes
parâmetros foram eliminadas e que dispõe-se de um modelo determinı́stico equivalente.
A hipótese de determinismo costuma ser afetada pelo perı́odo de planejamento.
Em perı́odos longos, as previsões de demandas e recursos tornam-se mais imprecisas,
dificultando a determinação de custos de produção e preços de venda de produtos.
2.3
Modelos lineares
As hipóteses de proporcionalidade e aditividade levam a modelos de otimização integralmente representados por funções lineares. Uma função z = z(x) é
linear nas variáveis de decisão x1 , x2 , . . . , xn quando existem coeficientes α1 , α2 ,
. . . , αn tais que
z(x) = α1 x1 + α2 x2 + · · · + αn xn .
Supondo que x1 , x2 , . . . , xn são as quantidades produzidas de n produtos e
c1 , c2 , . . . , cn são os custos unitários de produção associados, então o custo total
de uma empresa pode ser expresso por meio da função linear
zc (x) = c1 x1 + c2 x2 + · · · + cn xn .
A rigor, zc (x) é o custo total variável (com as quantidades produzidas) da
empresa. Geralmente existe uma segunda parcela de custo, chamada de custo total
fixo, incorrido pela empresa independentemente das quantidades produzidas, que
deve ser somado a zc para se obter o custo total de produção. Entretando, a
existência de custos fixos não gera dificuldades para a solução de problemas de
programação linear.
De forma análoga, a receita total e o lucro total da empresa são expressos
pelas funções lineares
zr (x) = p1 x1 + p2 x2 + · · · + pn xn
e
zl (x) = zr (x) − zc (x),
respectivamente. As funções zc , zr e zl são exemplos de funções–objetivos para
problemas de produção modelados por meio da abordagem linear.
As hipóteses de proporcionalidade e aditividade permitem que as restrições do
problema sejam representadas por equações e/ou inequações lineares nas variáveis
de decisão. Especificamente, se aij denota a quantidade de um recurso i utilizado
12
Capı́tulo 2. Programação Linear
para produzir uma unidade do produto j, e bi é a quantidade total disponı́vel do
recurso, então a escolha das quantidades a produzir deve respeitar a desigualdade
ai1 x1 + ai2 x2 + · · · + ain xn ≤ bi .
Deve haver uma desigualdade deste tipo para cada tipo de recurso utilizado.
Se bi , i = 1, 2, . . . , m denotarem as quantidades totais de m recursos disponı́veis
e o objetivo do problema for maximizar a receita total decorrente da produção da
empresa, então o problema de otimização linear correspondente será dado por
maximizar z = c1 x1 +
c 2 x2 + · · · +
c n xn
sujeito a
a
x
+
a
x
+
·
·
·
+
a
≤ b1 ,
11
1
12
2
1n xn
a
x
+
a
x
+
·
·
·
+
a
x
≤ b2 ,
21
1
22
2
2n
n
(2.1)
..
..
..
..
.
.
.
.
am1 x1 + am2 x2 + · · · + amn xn ≤ bm ,
x1 ≥ 0,
x2 ≥ 0,
...,
xn ≥ 0.
No problema (2.1) adota-se a hipótese da divisibilidade: as variáveis de decisão
são quaisquer reais não–negativos. Formulações similares, mas envolvendo diferentes
interpretações para variáveis de decisão e restrições a serem satisfeitas são muito
freqüentes em programação linear.
Exemplo 2.1 (Problema da dieta) O chamado problema da dieta foi o primeiro
problema linear formulado e resolvido com o uso de métodos de programação linear.
Assume-se que estejam disponı́veis n diferentes alimentos (carne, leite, ovos, suco
de laranja, . . . ) e que o custo unitário do i-ésimo alimento é ci , i = 1, 2, . . . , n. A
dieta deve atender a exigências diárias mı́nimas de m diferentes nutrientes (vitaminas, proteı́nas, carboidratos, . . . ). Os nı́veis mı́nimos de nutrientes são representados por bj , j = 1, 2, . . . , m; supõe-se que cada alimento i possui aij unidades do
nutriente j por unidade do alimento i. Se as quantidades totais (não-negativas) dos
n alimentos forem representadas por x1 , x2 , . . . , xn , o problema da dieta assume a
forma
minimizar
c 1 x1 +
c 2 x2 + · · · +
c n xn
sujeito a
a
x
+
a
x
+
·
·
·
+
a
≥ b1 ,
11
1
12
2
1n xn
a
x
+
a
x
+
·
·
·
+
a
x
≥ b2 ,
21
1
22
2
2n
n
..
..
..
..
.
.
.
.
a
x
+
a
x
+
·
·
·
+
a
x
≥
bm ,
m1 1
m2 2
mn n
x1 ≥ 0,
x2 ≥ 0,
...,
xn ≥ 0.
A formulação do problema da dieta pode ser refinada de várias maneiras. É
possı́vel, por exemplo, que a solução de mı́nimo custo seja tal que poucos alimentos
(apenas os mais baratos) façam parte da dieta diária. Uma forma de evitar a
saturação do indivı́duo com uma dieta muito simples é incorporar restrições com
valores máximos para as quantidades de alimentos, isto é, incorporar restrições de
desigualdade do tipo xi ≤ x̄i , i = 1, 2, . . . , n. A nova dieta será, provavelmente,
mais diversificada, embora também mais cara do que a original.
2.4. Forma padrão
13
Uma hipótese mais realista seria imaginar que as quantidades dos alimentos
devem ser determinadas na forma de porções (porções de carne, porções de arroz,
. . . ), ao invés de quantidades arbitrárias de alimentos. (As primeiras aplicações do
problema da dieta visavam oferecer uma dieta diária de baixo custo para o Exército
Americano e a dieta deveria ser servida em porções.) Se levarmos em conta esta
hipótese, o problema passa a envolver variáveis de decisão inteiras não-negativas. 2
2.4
Forma padrão
Para modelos de programação linear é possı́vel estabelecer uma formulação
matemática geral conhecida como forma padrão: qualquer problema de programação linear pode ser convenientemente manipulado e colocado nesta forma. A
partir de uma forma padrão torna-se mais fácil desenvolver e implementar métodos
como o Simplex, a ser discutido neste capı́tulo. A forma padrão de um problema
de programação linear é a seguinte:
minimizar z = c1 x1
sujeito a
a11 x1
a21 x1
am1 x1
x1 ≥ 0,
+
+
+
..
.
c 2 x2
a12 x2
a22 x2
+
+
+
..
.
···
···
···
+
+
+
..
.
c n xn
a1n xn
a2n xn
+
am2 x2
x2 ≥ 0,
+
···
...,
+
amn xn
xn ≥ 0.
=
=
..
.
b1 ,
b2 ,
=
bm ,
(2.2)
As constantes ci , bj e aij , i = 1, 2, . . . , n, j = 1, 2, . . . , m caracterizam um
problema particular de programação linear. Um problema na forma padrão (2.2)
possui n variáveis de decisão, m restrições de igualdade e a função–objetivo deve
ser minimizada. Assume-se ainda que bj ≥ 0 para j = 1, 2, . . . , m
Procedimentos simples podem ser adotados para se chegar à forma padrão de
um problema de programação linear qualquer.
Variáveis de excesso
Suponha que o problema linear original apresenta uma restrição de desigualdade do tipo
aj1 x1 + aj2 x2 + · · · + ajn xn ≥ bj .
A restrição de desigualdade pode ser substituı́da por uma restrição de igualdade introduzindo-se uma variável adicional xn+1 , não-negativa, conhecida como
variável de excesso:
aj1 x1 + aj2 x2 + · · · + ajn xn − xn+1 = bj .
Introduz-se tantas variáveis de excesso quantas forem as restrições do tipo
”≥” presentes no modelo original. Um novo conjunto de variáveis será formado
pelas variáveis de decisão originais mais as variáveis de excesso.
14
Capı́tulo 2. Programação Linear
Variáveis de folga
Suponha agora que o problema linear original apresenta uma restrição de
desigualdade do tipo
aj1 x1 + aj2 x2 + · · · + ajn xn ≤ bj .
A restrição de desigualdade pode ser substituı́da por uma restrição de igualdade introduzindo-se uma variável adicional xn+1 , não-negativa, conhecida como
variável de folga:
aj1 x1 + aj2 x2 + · · · + ajn xn + xn+1 = bj .
Do mesmo modo, introduz-se tantas variáveis de folga quantas forem as restrições do tipo ”≤” presentes no modelo original. O novo conjunto de variáveis será
formado pelas variáveis de decisão originais mais as eventuais variáveis de excesso
e de folga.
Variáveis livres
Pode ocorrer da formulação original do problema apresentar uma ou mais
variáveis de decisão irrestritas ou livres, isto é, sem sinal definido. Entretanto, a
forma padrão exige variáveis não–negativas. Essa dificuldade pode ser contornada
reescrevendo-se cada variável livre xj como a diferênça de duas outras variáveis
não-negativas, xj1 e xj2 , ou seja
xj = xj1 − xj2 .
A idéia é que qualquer quantidade (positiva, nula ou negativa) pode ser representada como a diferênça de duas quantidades não-negativas. Faz-se então a
substituição de cada variável livre por uma diferênça de variáveis não-negativas e
incorpora-se as novas variáveis à lista de variáveis de decisão do problema.
Não-negatividade dos bj ’s
Por razões a serem detalhadas oportunamente, exige-se que as constantes b j ,
j = 1, 2, . . . , m nos lados direitos das restrições do problema (2.2) sejam todas nãonegativas. Esta exigência pode ser atendidad multiplicando-se por −1 ambos os
lados de todas restrições tais que bj < 0. O resultado são novas restrições com lados
direitos positivos.
Problemas de maximização
Certos problemas de programação linear envolvem maximizar funções–objetivos, como a receita de uma empresa. O objetivo do problema se expressaria como
maximizar z(x) = p1 x1 + p2 x2 + · · · + pn xn ,
sujeito às restrições.
(2.3)
2.5. Exemplos ilustrativos
15
Assuma que x? = (x?1 , x?2 , . . . , x?n ) é uma solução ótima para o problema (2.3).
Da otimalidade de x? conclui-se que
z(x? ) ≥ z(x)
para toda solução viável x. Neste caso,
−z(x? ) ≤ −z(x)
e x? é também uma solução ótima para o problema de minimizar −z(x) sujeito
às mesmas restrições. Portanto, a substituição de maximizar por minimizar, seguida da troca dos sinais dos coeficientes da função–objetivo, fornece problemas
equivalentes do ponto de vista das variáveis de decisão. Os valores absolutos das
funções–objetivos serão iguais, porém com sinais trocados.
Constante na função–objetivo
A soma de uma constante qualquer a uma função objetivo não altera o problema do ponto de vista das variáveis de decisão. De fato, se x? é uma solução
ótima para o problema de minimizar
z(x) = c1 x1 + c2 x2 + · · · + cn xn ,
sujeito às restrições, então x? também é uma solução ótima para o problema de
minimizar z(x) + c0 , sendo c0 uma constante qualquer, uma vez que
z(x? ) + c0 ≤ z(x) + c0
para toda solução viável x. Constantes em funções–objetivos geralmente surgem da
consideração de custos fixos ou de reformulações visando formas padrões. Podem
ser desconsideradas para a obtenção de soluções ótimas e então somadas aos valores
ótimos das funções–objetivos.
2.5
Exemplos ilustrativos
Embora seja possı́vel colocar qualquer problema de programação linear na
forma padrão (2.2), não existe um procedimento sistemático para obter o modelo de
otimização básico do problema. Uso criterioso das hipóteses e treinamento exaustivo
são essenciais para se ganhar habilidade em modelagem de problemas de produção.
Exemplo 2.2 Uma joalheria produz dois diferentes tipos de estojos de madeira
para jogos de xadrez. O primeiro, menor, requer 3 horas de trabalho de torneamento; o segundo, maior, requer 2 horas. A empresa possui 4 tornos operados por
trabalhadores treinados, os quais trabalham, cada, 40 horas por semana. O estojo
menor demanda 1 kg de madeira; o maior demanda 3 kg. A empresa pode obter no
máximo 200 kg de madeira por semana. Os lucros unitários da empresa são de $20 e
$5 por unidade de estojo maior e menor, respectivamente. Deseja-se prescrever um
16
Capı́tulo 2. Programação Linear
programa de produção que vise maximizar o lucro total da empresa com a venda
dos estojos.
Sejam x1 e x2 as quantidades (não–negativas) de estojos de menor e maior
dimensões, respectivamente, produzidas durante uma semana. Para obter uma
restrição sobre horas trabalhadas, observa-se que a empresa possui 4 operadores
que trabalham, cada, 40 horas por semana nos tornos. Portanto, a empresa dispõe
de 160 horas de torneamento por semana. Dadas as diferentes quantidades de horas
necessárias para tornear os estojos, obtém-se a restrição de capacidade
3x1 + 2x2 ≤ 160.
A segunda restrição de capacidade, envolvendo as quantidades de madeira
utilizadas por unidade de estojos e a disponibilidade semanal de madeira para
produção, é dada por
x1 + 3x2 ≤ 200.
O modelo de otimização para a empresa então seria
maximizar z = 5x1 + 20x2
sujeito a
3x1 + 2x2 ≤ 160,
x1 + 3x2 ≤ 200,
com x1 ≥ 0 e x2 ≥ 0. Para obter a forma padrão do problema, introduz-se duas
variáveis de folga adicionais, x3 e x4 , transforma-se maximizar em minimizar e
trocam-se os sinais dos coeficientes da função–objetivo. O problema resultante será
minimizar −z = −5x1 − 20x2
sujeito a
3x1 +
2x2 + x3
= 160,
x1 +
3x2
+ x4 = 200,
com x1 ≥ 0, x2 ≥ 0, x3 ≥ 0 e x4 ≥ 0.
As hipóteses de proporcionalidade, aditividade e divisibilidade, implı́citas na
descrição textual do problema, tornaram mais simples sua formulação matemática.
Na prática, um operador de torno provavelmente levaria mais tempo para tornear
as primeiras unidades de estojos dos que as subseqüentes. Com a hipótese de proporcionalidade, assume-se tempos iguais para todas as unidades de um mesmo tipo.
Além disto, não são considerados os tempos necessários para ajustes dos tornos
(desligamento, limpeza, instalação de novas ferramentas, religamento) quando estes passam a tornear estojos de tipos diferentes. Com a hipótese da aditividade,
assume-se que os tempos de ajustes podem ser desprezados, e os tempos de torneamento efetivos, simplesmente somados. Finalmente, como se trata da produção
semanal da empresa e não existem prazos para entrega de estojos, estojos nãoacabados numa semana podem ser acabados na semana seguinte, o que valida a
hipótese de divisibilidade.
2
Exemplo 2.3 Um fazendeiro utiliza no mı́nimo 400 kg de ração especial por dia.
A ração é uma mistura de milho e soja com as composições indicadas na tabela 2.1.
2.5. Exemplos ilustrativos
17
Tabela 2.1: Dados do problema de dieta.
kg/kg de alimento
Alimento Proteı́na
Fibra
Custo ($/kg)
Milho
0.09
0.02
0.60
Soja
0.60
0.06
1.80
Um mı́nimo de 30% e um máximo de 5% da quantidade total de alimento
consumida por dia são estabelecidos para as quantidades totais de proteı́na e fibra
presentes na dieta. O fazendeiro deseja determinar a mistura de milho e soja que
produz uma dieta diária de mı́nimo custo.
Sejam x1 e x2 as quantidades (não–negativas) em kg de milho e soja na dieta
diária procurada pelo fazendeiro. Como no mı́nimo 400 kg de ração são utilizados,
x1 + x2 ≥ 400.
A prescrição para consumo de proteı́nas implica numa restrição do tipo
0.09x1 + 0.60x2 ≥ 0.30(x1 + x2 ),
ou ainda
0.21x1 − 0.30x2 ≤ 0.
Do mesmo modo, para fibra,
0.02x1 + 0.06x2 ≤ 0.05(x1 + x2 ),
ou seja,
0.03x1 − 0.01x2 ≥ 0.
O modelo linear de otimização para a
minimizar z = 0.60x1
sujeito a
0.21x1
0.03x1
x1
dieta diária seria
+ 1.80x2
− 0.30x2
− 0.01x2
+
x2
≤
≥
≥
0,
0,
400,
com x1 ≥ 0 e x2 ≥ 0. A forma padrão do problema é obtida introduzindo-se uma
variável de folga na primeira restrição e variáveis de excesso na segunda e terceira
restrições.
2
Exemplo 2.4 Um restaurante fast–food vende dois tipos de sanduı́ches. Os sanduı́ches utilizam 120 g e 90 g de carne, respectivamente. O restaurante abre as
portas com 90 kg de carne em estoque, mas pode comprar mais carne a $0.50/kg,
preço que inclui o custo de entrega. Qualquer excesso de carne no final do dia é
doado para uma instituição de caridade. Os lucros do restaurante com os sanduı́ches
são de $0.20 e $0.15 por unidade, respectivamente; o restaurante não espera vender
mais do que 900 sandı́ches por dia. Quantos sanduı́ches de cada tipo o restaurante
deveria produzir para maximizar seu lucro diário?
18
Capı́tulo 2. Programação Linear
Sejam x1 e x2 as quantidades (não–negativas) de sanduı́ches dos tipos 1 e 2 a
serem produzidas. Se o restaurante se mantiver dentro do limite de 90 kg de carne
por dia, então
0.12x1 + 0.09x2 ≤ 90.
Porém, o restaurante pode adquirir mais carne, e, neste caso,
0.12x1 + 0.09x2 ≥ 90.
A princı́pio, não se sabe qual das alternativas será mais vantajosa para o restaurante: operar com folga ou excesso de carne. Uma solução é introduzir uma
variável adicional x3 , livre, representando quantidade de carne, e escrever a restrição sobre utilização de carne como
0.12x1 + 0.09x2 + x3 = 90.
A variável x3 pode ser representada como a diferênça de variáveis não–negativas:
x3 = x31 − x32 . A restrição é então reescrita como
0.12x1 + 0.09x2 + x31 − x32 = 90.
Se x3 ≥ 0, o restaurante opera com folga de carne e o lucro total será
0.20x1 + 0.15x2 . Por outro lado, se x3 < 0, o restaurante incorrerá num custo adicional por comprar carne. Por motivos que serão detalhados quando da discussão
do método Simplex, as variáveis x31 e x32 não poderão assumir valores positivos
simultâneamente. Neste caso, se x3 < 0, então x31 = 0 e x32 > 0, de tal forma que
o lucro total do restaurante pode ser escrito como
0.20x1 + 0.15x2 − 0.50x32 .
O modelo linear de otimização para o restaurante seria
maximizar z = 0.20x1 + 0.15x2
− 0.50x32
sujeito a
0.12x
+
0.09x
+
x
x32
1
2
31 −
x1 +
x2
=
≤
90,
900,
com x1 ≥ 0, x2 ≥ 0, x31 ≥ 0 e x32 ≥ 0. Para obter a forma padrão do problema,
deve-se introduzir uma variável de folga na última restrição, substituir maximizar
por minimizar, e trocar os sinais dos coeficientes da função–objetivo.
2
Exemplo 2.5 Um banco precisa formular uma polı́tica de empréstimos envolvendo
uma quantia máxima de $12 milhões. A tabela 2.2 apresenta os parâmetros utilizados nos diferentes tipos de empréstimos com os quais o banco opera.
Tabela 2.2: Parâmetros utilizados pelo banco.
Tipo de
Taxa
Probabilidade
Empréstimo de Juros
de default
Pessoal
0.140
0.10
Automotivo
0.130
0.07
Habitacional
0.120
0.03
Agrı́cola
0.125
0.05
Comercial
0.100
0.02
2.5. Exemplos ilustrativos
19
Probabilidade de default significa probabilidade de que o empréstimo não seja
recuperado, e que portanto também não renda juros. A concorrência com outras
instituições financeiras obriga o banco a alocar no mı́nimo 40% dos recursos para
empréstimos agrı́colas e comerciais. Para apoiar a indústria civil da região, os recursos alocados para empréstimos habitacionais devem corresponder a, no mı́nimo,
50% dos recursos alocados para empréstimos pessoais, automotivos e habitacionais.
A polı́tica de banco estabelece que razão entre o montante total de empréstimos
default e o total de empréstimos deve ser de 0.04. O objetivo do banco é distribuir
os recursos disponı́veis entre as diferentes formas de empréstimos de forma a obter
o maior lucro possı́vel, entendido como a diferênça entre a receita total decorrente
de juros e o montante total perdido por default.
As quantidades (não–negativas) abaixo representam os montantes (em milhões)
a serem empregados em cada tipo de empréstimo.
x1 :
x2 :
x3 :
x4 :
x5 :
pessoais;
automotivos;
habitacionais;
agrı́colas;
comerciais.
Como o máximo disponı́vel para empréstimos é $12 (em milhões),
x1 + x2 + x3 + x4 + x5 ≤ 12.
Empréstimos agrı́colas e comerciais devem representar no mı́nimo 40% do
máximo disponı́vel:
x4 + x5 ≥ 4.8.
Empréstimos habitacionais devem corresponder a no mı́nimo 50% dos empréstimos pessoais, automotivos e habitacionais:
x3 ≥ 0.50(x1 + x2 + x3 ),
ou seja,
0.50x1 + 0.50x2 − 0.50x3 ≤ 0.
A polı́tica da empresa quanto a empréstimos default pode ser expressa como
0.10x1 + 0.07x2 + 0.03x3 + 0.05x4 + 0.02x5
≤ 0.04.
x1 + x 2 + x 3 + x 4 + x 5
(2.4)
O numerador de (2.4) é quanto o banco espera perder com a alocação de
recursos. A desigualdade (2.4) é equivalente a
0.06x1 + 0.03x2 − 0.01x3 + 0.01x4 − 0.02x5 ≤ 0.
O lucro total do banco é dado por
z = 0.14(0.90x1 ) + 0.13(0.93x2 ) + 0.12(0.97x3 ) + 0.125(0.95x4 )
+ 0.10(0.98x5 ) − (0.10x1 + 0.07x2 + 0.03x3 + 0.05x4 + 0.02x5 )
(2.5)
20
Capı́tulo 2. Programação Linear
A primeira parcela do lado direito de (2.5) é quanto o banco espera receber
de juros sobre os empréstimos; a segunda parcela contabiliza a perda devida a
empréstimos default. A função–objetivo (2.5) pode ser simplificada para
z = 0.026x1 + 0.0509x2 + 0.0864x3 + 0.06875x4 + 0.078x5 .
O modelo linear de otimização para o problema do banco seria
maximizar z = 0.026x1 + 0.0509x2 + 0.0864x3 + 0.06875x4 + 0.078x5
sujeito a
0.06x1 + 0.03x2 − 0.01x3 + 0.01x4 − 0.02x5
0.50x1 + 0.50x2 − 0.50x3
x4 + x 5
x1 + x 2 + x 3 + x 4 + x 5
≤ 0,
≤ 0,
≥ 4.8,
≤ 12,
com x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0 e x5 ≥ 0. A forma padrão do problema é
facilmente obtida introduzindo-se variáveis de folga na primeira, segunda e quarta
restrições, uma variável de excesso na terceira restrição, alterando-se maximizar
para minimizar, e trocando-se os sinais dos coeficientes da função–objetivo.
2.
2.6
Modelos com variáveis inteiras
Alguns modelos importantes de planejamento exigem que parte ou todas as
variáveis de decisão sejam variáveis inteiras, isto é, variáveis que podem assumir
somente valores inteiros. Como caso especial, variáveis binárias assumem apenas
os valores inteiros 0 ou 1. Costuma-se referir a um modelo linear com variáveis
inteiras como um modelo de programação linear inteira, embora, rigorosamente
falando, um modelo deste tipo não seja mais linear. Um modelo de programação
linear inteira é puro se contém somente variáveis inteiras; misto, se parte das
variáveis assume valores inteiros e a parte complementar, reais.
Certos modelos de programação linear inteira podem ser abordados por meio
do método Simplex, na qual a hipótese de divisibilidade é adotada, e ainda assim
obter-se decisões ótimas inteiras. Além disso, quando o modelo linear exibe certas propriedades estruturais, é possı́vel obter soluções ótimas inteiras por meio de
métodos especializados de programação linear, discutidos no Capı́tulo 3 do curso.
No caso geral será necessário utilizar métodos especı́ficos para resolver problemas
de programação linear inteira. Alguns destes métodos, os mais simples e gerais, são
tratados no Capı́tulo 4 do curso.
A modelagem de problemas de planejamento que envolvam variáveis inteiras
será introduzida neste capı́tulo.
Exemplo 2.6 Uma empresa de planejamento de transportes urbanos está analisando a implantação de um novo sistema de transporte de massa por ônibus. Um
estudo inicial visa determinar a quantidade mı́nima de ônibus que devem ser colocados em operação para atender a demanda de passageiros. Após coletar informações,
o engenheiro de tráfego da empresa observou que o número mı́nimo de ônibus necessários para atender a demanda varia conforme a hora do dia, como ilustra a
figura 2.1, permanecendo constante a cada perı́odo de 4 horas, ou turnos. Cada
2.6. Modelos com variáveis inteiras
21
ônibus deve começar a circular no inı́cio de um dos turnos indicados e permanecer
circulando por 8 horas consecutivas. Deseja-se determinar a quantidade mı́nima de
ônibus em operação por dia que atenda a demanda de passageiros.
Uma primeira abordagem seria imaginar três perı́odos de oito horas (dois
turnos), de 8h às 16h, de 16h às 24h e de 24h às 8h, e definir x1 , x2 e x3 como os
números de ônibus começando o circular nos inı́cios destes perı́odos. O modelo de
otimização correspondente seria: minimizar
z = x1 + x2 + x3
sujeito a
x1 ≥ 10,
x2 ≥ 12
e x3 ≥ 8,
com x1 , x2 e x3 representando variáveis inteiras não-negativas. O número mı́nimo
de ônibus por dia seria 30. Entretanto, a abordagem adotada introduz uma restrição
que o problema original não possui, uma vez que os ônibus podem começar a circular
nos inı́cios de quaisquer turnos.
PSfrag replacements
No. de Ônibus
12
12
10
8
8
7
4
4
24
4
4
8
12
16
20
24 Hora do Dia
Figura 2.1: Demanda de ônibus por turnos.
Sejam então 1, 2, 3, 4, 5 e 6 ı́ndices indicativos dos turnos começando às 24h,
4h, 8h, 12h, 16h e 20h. Seja xi o número de ônibus que começam a circular no inı́cio
do turno i = 1, 2, 3, 4, 5, 6. Aos ônibus x1 que começam a circular às 24h somam-se
os ônibus que começam às 20h, e para atender a demanda do turno de 4 horas que
começa às 24h, deve-se impor que
x1 + x6 ≥ 4.
Procedendo da mesma maneira nos turnos subseqüentes de 4 horas, obtém-se
o seguinte modelo de otimização para o problema da empresa de transportes:
minimizar z = x1 + x2 + x3 + x4 + x5 + x6
sujeito a
x1 + x6 ≥ 4,
x1 + x2 ≥ 8,
x2 + x3 ≥ 10,
(2.6)
x
+
x
≥
7,
3
4
x4 + x5 ≥ 12,
x5 + x6 ≥ 4,
22
Capı́tulo 2. Programação Linear
com x1 , x2 , x3 , x4 , x5 e x6 variáveis inteiras não-negativas. (Observe que a forma
padrão da programação linear não se aplica a problemas com variáveis inteiras.) É
possı́vel mostrar que por meio do modelo (2.6), chega-se ao número mı́nimo de 26
ônibus em circulação por dia.
2
Exemplo 2.7 Cinco projetos estão sendo avaliados num horizonte de planejamento
de três anos. A tabela 2.3 fornece as receitas esperadas de cada projeto, juntamento
com o gasto previsto e o capital disponı́vel para investimento por ano. Os valores
encontram-se em $ milhões. Deseja-se determinar quais projetos devem ser executados no horizonte de 3 anos de forma obter a maior receita possı́vel.
O problema se resume a determinar se um projeto será ou não executado, o
que pode ser convenientemente representado por uma variável binária: para i =
1, 2, 3, 4, 5, define-se

 1, se o projeto i é executado,
xi =

0, caso contrário.
Tabela 2.3: Parâmetros dos cinco projetos.
Despesa Anual
Projeto 1
2
3
Receita
1
5
1
8
20
2
4
7
10
40
3
3
9
2
20
4
7
4
1
15
5
8
6
10
30
Capital 25 25
25
O modelo de programação linear inteira a ser utilizado para determinar que
projetos executar seria
maximizar z = 20x1 + 40x2 + 20x3 + 15x4 + 30x5
sujeito a
5x1 + 4x2 + 3x3 + 7x4 + 8x5 ≤ 25,
(2.7)
x1 + 7x2 + 9x3 + 4x4 + 6x5 ≤ 25,
8x1 + 10x2 + 2x3 + x4 + 10x5 ≤ 25,
com x1 , x2 , x3 , x4 e x5 variáveis binárias. É interessante notar que existem 25 = 32
maneiras de se atribuir valores iguais a 0 ou 1 para x1 , x2 , x3 , x4 e x5 , e assim obter
diferentes soluções para o problema. Um método simples, que funcionaria para o
modelo (2.7) seria:
1. Determine todas as possı́veis combinações de x1 , x2 , x3 , x4 e x5 :
{(0, 0, 0, 0, 0), (1, 0, 0, 0, 0), . . . , (1, 1, 1, 1, 1)};
2.6. Modelos com variáveis inteiras
23
2. Dentre as combinações obtidas, descarte as que não sejam viáveis, como por
exemplo, (1, 1, 1, 1, 1);
3. Dentre as combinações viáveis, obtenha uma – pode existir mais de uma –
que forneça o maior valor para z.
Este tipo de estratégia, chamada de solução por enumeração, é claramente
limitada a modelos que apresentem um pequeno número de variáveis binárias. 2
Exemplo 2.8 Três companhias telefônicas estão disputando sua preferência para
chamadas de longa distância. Os serviços oferecidos pelas companhias envolvem
um custo fixo mensal – assinatura – e um custo variável por minuto, resumidos na
tabela 2.4.
Tabela 2.4: Custos em $ por companhia.
Companhia Mensal Por Minuto
1
16
0.25
2
25
0.21
3
18
0.22
Você utiliza uma média de 200 minutos em chamadas de longa distância por
mês, não paga a assinatura da companhia caso não faça nenhuma chamada por meio
dela, e pode distribuir livremente suas chamadas entre as três companhias. Como
você deve utilizar os serviços das companhias de forma a minimizar o valor da sua
conta telefônica mensal?
O modelo para este problema envolve custos fixos e custos variáveis, que precisam ser refletidos nas variáveis de decisão. Sejam então x1 , x2 e x3 as quantidades
em minutos utilizadas com ligações por meio das companhias 1, 2 e 3. Defina
também, para i = 1, 2, 3,

 1, se xi > 0,
yi =

0, se xi = 0.
As variáveis binárias y1 , y2 e y3 indicam em que situação os custos fixos das
companhias devem ser levados em conta. Uma maneira de garantir que y i = 1 se
xi > 0 é definindo um número positivo M suficientemente grande e introduzindo a
desigualdade
xi ≤ M yi , i = 1, 2, 3.
Como x1 ≤ 200, i = 1, 2, 3, uma escolha conveniente é M = 200. (Valores
menores introduziriam restrições adicionais no modelo.) O modelo de otimização
que você deveria utilizar seria
minimizar z = 0.25x1 + 0.21x2 + 0.22x3 + 16y1 + 25y2 + 18y3
sujeito a
x1 + x2 + x3 = 200,
x1 ≤ 200y1 ,
(2.8)
x
≤
200y
,
2
2
x3 ≤ 200y3 ,
24
Capı́tulo 2. Programação Linear
com x1 , x2 e x3 , variáveis não-negativas, e y1 , y2 e y3 , variáveis binárias. O modelo de programação inteira (2.8) é misto, pois envolve variáveis reais e inteiras
(binárias). Existem 23 = 8 combinações de valores para y1 , y2 e y3 ; somente
(0, 0, 0) não é viável. Como para cada combinação viável (2.8) transforma-se num
modelo de programação linear, uma estratégia de solução seria: resolva os problemas de programação linear viáveis e determine a solução ótima que forneça o menor
valor. Como comentado anteriormente, estratégias de enumeração são limitadas a
problemas com poucas variáveis binárias.
2
Exemplo 2.9 O departamento responsável pela segurança de uma universidade
está discutindo a instalação de telefones públicos em localizações apropriadas do
campus. O departamento deseja instalar o menor número de telefones possı́vel,
mas de forma que cada uma das ruas principais seja atendida por no mı́nimo um
telefone. A figura 2.2 é um mapa com as principais ruas do campus, indicadas por
letras de A a K. Como o departamento deve alocar os telefones ?
Um telefone localizado em cruzamentos de ruas serve a no mı́nimo duas ruas.
Como existem 8 cruzamentos, numeradas de 1 a 8 na figura 2.2, no máximo 8 telefones serão necessários. É conveniente entãoPSfrag
definirreplacements
as seguintes variáveis binárias:
para i = 1, 2, . . . , 8,

 1, se um telefone é instalado no cruzamento i,
xi =

0, caso contrário.
1
2
A
3
B
K
I
G
F
H
E
6
5
C
4
J
D
7
8
Figura 2.2: Mapa do campus – principais ruas.
No mı́nimo um telefone deve atender cada uma das 11 ruas, identificadas por
A, B, . . . , K. Para atender a rua A, por exemplo, é possı́vel instalar um telefone
no cruzamento 1 ou no cruzamento 2. Uma maneira de indicar esta restrição é por
meio da desigualdade
x1 + x2 ≥ 1.
2.7. Solução gráfica de problemas lineares
25
Restrições similares são obtidas para cada uma das ruas do compus. O modelo
de programação linear inteira que o departamento de segurança do campus deve
resolver é
minimizar z = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8
sujeito a
x1 + x2 ≥ 1, (A)
x2 + x3 ≥ 1, (B)
x
(C)
4 + x5 ≥ 1,
x
+
x
≥
1,
(D)
7
8
x
+
x
≥
1,
(E)
6
7
(2.9)
x
+
x
≥
1,
(F )
2
6
x1 + x6 ≥ 1, (G)
x
(H)
4 + x7 ≥ 1,
x
+
x
≥
1,
(I)
2
4
x
+
x
≥
1,
(J)
5
8
x3 + x5 ≥ 1, (K)
com x1 , i = 1, 2, . . . , 8, variáveis binárias. Problemas da forma (2.9) são chamados
de problemas de cobertura. Um problema geral de cobertura apresenta zeros ou
uns como coeficientes dos lados esquerdos das restrições, restrições do tipo ”≥ 1” ,
e eventualmente custos não unitários. No modelo (2.9) admite-se implicitamente
que os custos de instalação dos telefones são iguais.
2
2.7
Solução gráfica de problemas lineares
Problemas de programação linear com até duas variáveis de decisão podem ser
representados e resolvidos graficamente. Embora limitada, a representação gráfica
permite evidenciar propriedades e as diversas situações que podem ser encontradas ao se resolver problemas com um número maior de variáveis. Para efeito de
exposição, considere o seguinte problema de programação linear:
maximizar z = x1 + 2x2
sujeito a
x1 + x2 ≤ 8,
(2.10)
−x
+ 2x2 ≤ 4,
1
2x1 − x2 ≤ 12,
com x1 ≥ 0 e x2 ≥ 0.
Considere o plano x1 × x2 , com os eixos das abcissas e das ordenadas representando possı́veis valores para as variáveis de decisão x1 e x2 . Cada uma das
restrições descreve uma região do plano. Para obter a região associada à restrição
x1 + x2 ≤ 8, descreve-se inicialmente a reta x1 + x2 = 8, que passa pelos pontos
(0, 8) e (8, 0). A reta x1 + x2 = 8 divide o plano em dois semiplanos, x1 + x2 ≤ 8 e
x1 +x2 ≥ 8. A região x1 +x2 ≤ 8 corresponde ao semiplano que contém a origem do
plano, pois 0 + 0 ≤ 8. Repete-se o procedimento para todas as restrições presentes
no modelo. A interseção das regiões descritas pelos semiplanos representa a região
viável do problema, ilustrada na figura 2.3.
PSfrag replacements
26
Capı́tulo 2. Programação Linear
x2
8
x1 + x 2 = 8
−x1 + 2x2 = 4
6
4
24
2x1 − x2 = 12
c
z = 16
3
−4
0
1 2
4
6 20
8
z = 12
x1
3
z=8
z=4
z=0
z = −4
Figura 2.3: Representação gráfica do problema (2.10).
A região viável possui infinitos pontos e, em princı́pio, qualquer um deles pode
ser uma solução ótima do problema. Para determinar qual deles produz o maior
valor para z, usa-se o fato de que x1 +2x2 = z descreve uma famı́lia de retas paralelas
de inclinação −0.5 parametrizada pelo valor de z. Diferentes valores de z levam
a diferentes pontos de cruzamento com os eixos x1 e x2 . Retas correspondentes a
valores selecionados de z encontram-se representadas na figura 2.3. Para determinar
o sentido de crescimento de z, utiliza-se o conceito de gradiente de uma função
num ponto. O vetor gradiente de qualquer função diferenciável z = z(x) de n
variáveis num ponto x = (x1 , x2 , . . . , xn ), denotado por ∇z(x), é o vetor formado
pelas primeiras derivadas parciais da função no ponto considerado:
∂z(x) ∂z(x)
∂z(x)
∇z(x) =
.
,
, ... ,
∂x1
∂x2
∂xn
O vetor gradiente indica o sentido de maior crescimento da função no entorno
do ponto considerado. Observa-se que o vetor gradiente de uma função linear,
z = c 1 x1 + c 2 x2 + · · · + c n xn ,
é constante e dado por
c = (c1 , c2 , . . . , cn ).
No caso do exemplo ilustrativo, c = (1, 2). O sentido do gradiente está indicado
na figura 2.3. O vetor gradiente é ortogonal a qualquer reta que descreva um valor
para a função objetivo. Dois vetores x, y de n componentes são ortogonais se o seu
2.7. Solução gráfica de problemas lineares
27
produto escalar, definido por
x 1 y1 + x 2 y2 + · · · x n yn ,
é igual a zero. Sejam então x, y dois pontos quaisquer pertencentes à reta correspondente a um valor z = z0 para a função objetivo. Neste caso, x1 +2x2 = y1 +2y2 = z0 ,
e portanto
(x1 − y1 ) + 2(x2 − y2 ) = 0,
indicando que os vetores c e x − y, este último sobre a reta associada a z 0 , são
ortogonais.
A maximização do valor da função-objetivo no problema (2.10) pode ser conduzida da seguinte forma: percorre-se a região viável do problema no sentido do
gradiente (aumentando continuamente o valor da função-objetivo) até que a fronteira da região seja eventualmente atingida. O valor máximo da função-objetivo na
região viável é dado pelo valor da reta que toca a fronteira, no caso z ? = 12. Qualquer ponto pertencente à reta de valor z ? = 12 que também pertença à fronteira
é uma solução ótima do problema. No caso do exemplo ilustrativo (2.10), existe
apenas uma solução ótima, x? = (4, 4).
Se o objetivo do problema (2.10) fosse, ao invés de maximizar, minimizar
o valor de z, adotar-se-ia a direção contrária à do gradiente – aquela de maior
decrescimento da função. O valor mı́nimo da função-objetivo seria z ? = 0, obtido
no ponto x? = (0, 0). As análises de situações mais gerais, a seguir, aplicam-se
também a problemas de minimização.
Soluções ótimas únicas e múltiplas
A resolução gráfica do problema (2.10) conduz a uma solução ótima única.
Entretanto, é possı́vel que exista mais de uma solução ótima para um dado problema
de programação linear. Considere novamente o problema (2.10), mas suponha que
a função-objetivo foi alterada para
z = x1 + x2 .
O procedimento gráfico sugerido fará então com que a reta correspondente ao
maior valor de z toque a fronteira em múltiplos pontos sobre a reta x1 + x2 = 8.
O valor máximo da função-objetivo será z ? = 8 e qualquer ponto no segmento de
reta que liga os pontos (4, 4) e (20/3, 4/3) é uma solução ótima do problema.
Problemas ilimitados
Nos exemplos tratados até o momento foi possı́vel obter valores máximos limitados para a função-objetivo por meio de uma ou mais soluções ótimas. Existem
situações, quase sempre decorrentes de formulações inadequadas do problema, nas
quais não é possı́vel limitar superiormente o valor da função-objetivo. Suponha que
as restrições x1 + x2 ≤ 8 e 2x1 − x2 ≤ 12 do problema (2.10) são removidas, como
ilustra a figura 2.4. A região viável torna-se aberta na direção do gradiente, e
28
Capı́tulo 2. Programação Linear
PSfrag replacements
sempre será possı́vel obter um valor para a função objetivo maior do que o anterior.
Um problema linear com essa caracterı́stica é chamado de ilimitado. O valor de z
tende a +∞ e não é possı́vel caracterizar uma solução ótima para o problema.
x2
8
1
6
−x1 +x12x+2 x=2 4= 8
4
2
−4
0
2x1 − x2 = 12
c
z = 16
2
4
6
z = 12
x1
8
z = 8−4
20
z=4
3
4
3
z=0
Figura 2.4: Representação gráfica – problema ilimitado.
Problemas inviáveis
Diz-se que um problema de programação linear é viável se existe pelo menos
um ponto que satisfaz todas as restrições do problema, ou seja, se a região viável
do problema é não-vazia. Caso contrário, diz-se que o problema é inviável. Todos
os exemplos discutidos até agora referem-se a problemas viáveis. Entretanto, formulações inadequadas podem levar a problemas inviáveis. Considere, por exemplo,
o problema (2.10) com os sinais da segunda e terceira restrições lineares invertidos:
maximizar z = x1
sujeito a
x1
−x
1
2x1
+
+
+
−
2x2
x2
2x2
x2
≤
≥
≥
8,
4,
12,
(2.11)
com x1 ≥ 0 e x2 ≥ 0. Esta modificação é suficiente para tornar o problema (2.11)
inviável: a interseção dos semiplanos gerados pelas três restrições é vazia, como
ilustra a figura 2.5.
PSfrag replacements
2.8. Revisão de álgebra linear e matrizes
29
x2
8
x1 + x 2 = 8
−x1 + 2x2 = 4
6
4
24
2x1 − x2 = 12
c
z = 16
3
−4
0
1 2
4
6 20
8
z = 12
x1
3
z = 8−4
z=4
z=0
Figura 2.5: Representação gráfica – problema inviável.
Propriedade fundamental da programação linear
A interseção das restrições do problema (2.10) descreve um polı́gono, com
pontos extremos e arestas conhecidas. A região viável de um problema com
mais de duas variáveis seria descrita por um poliedro. Os cinco pontos extremos
da região viável do problema (2.10) são (0, 0), (0, 2), (4, 4), (20/3, 4/3), (6, 0). Cinco
arestas ligam estes pontos extremos.
A análise gráfica do problema (2.10) sugere que soluções ótimas podem ser
caracterizadas de duas formas: como um ponto extremo ou como um conjunto de
pontos sobre uma aresta da região viável. Mas, mesmo neste último caso, pelo menos
uma solução ótima é um ponto extremo da região viável. Esta conclusão pode ser
generalizada: se um problema de programação linear qualquer tiver soluções viáveis
ótimas, uma delas será um ponto extremo da região viável. Assim, embora a região
viável do problema geralmente contenha uma infinidade de pontos, para resolvêlo basta analisar um número finito de pontos extremos. Para resolver (2.10), por
exemplo, bastaria calcular z nos pontos extremos da região viável e declarar solução
ótima aquele que produzisse o maior valor. O método Simplex para programação
linear nada mais é do que uma busca orientada de soluções ótimas como pontos
extremos da região viável do problema considerado.
2.8
Revisão de álgebra linear e matrizes
Interpretações geométricas como as apresentadas na seção anterior são úteis,
mas naturalmente limitadas a problemas com duas ou três variáveis de decisão, no
máximo. Em dimensões maiores é necessário generalizar noções como as de ponto
30
Capı́tulo 2. Programação Linear
e reta, e adotar uma representação adequada para os problemas tratados. Nesta
seção são revistos os principais conceitos de álgebra linear e matrizes aplicáveis ao
estudo de programação linear.
Cada conjunto x = (x1 , x2 , . . . , xn ) de valores possı́veis para as variáveis de
decisão de um problema linear pode ser visto como um vetor do espaço linear R n ,
o que se denota como x ∈ Rn . As quantidades x1 , x2 , . . . , xn são as componentes
do vetor x. Dois vetores x, y ∈ Rn são iguais se xi = yi para todo i = 1, 2, . . . , n.
A soma de vetores e a multiplicação de um vetor por um escalar são definidas
no Rn como
x + y = (x1 + y1 , x2 + y2 , . . . , xn + yn ),
αx = (αx1 , αx2 , . . . , αxn ),
α ∈ R.
O vetor nulo do Rn é o vetor composto por n valores reais iguais a zero:
0 = (0, 0, . . . , 0).
A distinção entre o vetor nulo do Rn e o real zero será estabelecida pelo contexto. A notação xji será empregada para representar a i-ésima componente de um
vetor xj . Vetores podem ser representados graficamente associando-se as componentes do vetor a eixos cartesianos. O vetor nulo é representado na intersecção
dos eixos, denominada de origem, e um vetor qualquer, como um segmento orienPSfrag replacements
tado a partir da origem. A figura 2.6 ilustra as operações de soma e produto por
2
escalar no R .
x2 + y 2
x2
x
y2
0
αx
x+y
x
y
x1
y1 x 1 + y 1
(α > 1)
0
Figura 2.6: Operações básicas com vetores do R2 .
Combinação linear
Seja C = {x1 , x2 , . . . , xk } um conjunto qualquer de k vetores do Rn . Sejam
ainda α1 , α2 , . . . , αk escalares reais quaisquer. Uma expressão da forma
α1 x 1 + α 2 x 2 + · · · + α k x k
é chamada de combinação linear dos vetores de C, e resulta num vetor do R n .
Observe o emprego das operações de soma, dois-a-dois, e de multiplicação de vetores
por escalares, introduzidas anteriormente.
2.8. Revisão de álgebra linear e matrizes
31
Exemplo 2.10 Assuma k = 2, x1 = (1, 0, −1), x2 = (−4, 1, 2), α1 = 1 e α2 = −2.
Então
α1 x1 + α2 x2 = 1 · (1, 0, −1) + (−2) · (−4, 1, 2) = (−3, −2, −5).
2
.
Uma combinação linear de vetores pode ser representada graficamente deslocando-se α2 x2 para a extremidade de α1 x1 , e assim sucessivamente, até deslocar-se
αk xk para a de αk−1 xk−1 . A ligação da origem com a extremidade deslocada de
αk xk resulta no vetor gerado pela combinação linear.
Dependência linear
Seja C = {x1 , x2 , . . . , xk } um conjunto qualquer de k vetores do Rn . Diz-se
que C é linearmente dependente se existem escalares α1 , α2 , . . . , αk , não todos
nulos, tais que
k
X
αj xj = α1 x1 + α2 x2 + · · · + αk xk = 0.
(2.12)
j=1
Se a igualdade (2.12) for verdadeira somente se α1 = α2 = . . . = αk = 0,
diz-se então que C é linearmente independente.
Exemplo 2.11 Assuma k = 2, x1 = (1, 0, −1) e x2 = (−4, 1, 2). A partir de (2.12),
obtém-se
α1 x1 + α2 x2 = (α1 − 4α2 , α2 , −α1 + 2α2 ) = (0, 0, 0).
Da igualdade de vetores, chega-se ao sistema de equações
α1 − 4α2 = 0,
(2.13)
α2 = 0,
−α1 + 2α2 = 0.
(2.14)
(2.15)
Como a única solução possı́vel para o sistema (2.13)-(2.15) é α 1 = α2 = 0, o
conjunto C = {(1, 0, −1), (−4, 1, 2)} é linearmente independente.
2
Se um conjunto de vetores é linearmente independente, costuma-se dizer que
os vetores do conjunto são linearmente independentes.
Base e dimensão
Um conjunto C = {x1 , x2 , . . . , xk }, com xj ∈ Rn , j = 1, 2, . . . , k, é uma base
do R se C é linearmente independente e qualquer vetor do Rn pode ser escrito
como uma combinação linear dos vetores de C. Diz-se neste caso que o conjunto C
gera o Rn .
n
32
Capı́tulo 2. Programação Linear
Exemplo 2.12
(a) O conjunto C = {(1, 0, 0), (0, 1, 0} é linearmente independente, mas nem todos
os vetores do R3 podem ser escritos como combinações lineares dos vetores de C,
como por exemplo x = (0, 0, 1). Logo, C não é uma base do R3 ;
(b) O conjunto C = {1, 0), (0, 1), (1, 1)} não é linearmente independente, mas gera
o R2 . Dado um vetor qualquer x = (x1 , x2 ), basta definir os escalares α1 = x1 ,
α2 = x2 e α3 = 0 para obter x como combinação dos vetores de C:
x = x1 (1, 0) + x2 (0, 1) + 0(1, 1).
Entretanto, C não é uma base do R2 ;
(c) Os conjuntos C = {(1, 0, 0), (0, 1, 0), (0, 0, 1)} e C = {(1, 0), (0, 1)} são bases do
R3 e R2 , do mesmo modo que C = {(1, 0, 0), (1, 1, 0), (0, 1, 1)} e C = {(1, 1), (0, 1)}.
2
Seja C = {x1 , x2 , . . . , xk } uma base do Rn . Então para um dado x ∈ Rn
existem escalares α1 , α2 , . . . , αk tais que
x = α 1 x1 + α 2 x2 + · · · α n xk .
Os escalares α1 , α2 , . . . , αk são chamados de representação de x na base
C. A representação de um vetor varia conforme a base considerada, como ilustra a
figura 2.7.
β1 y 1
α1 x 1
PSfrag replacements
x
y1
x1
x2
0
α2 x 2
y 2 β2 y 2
Figura 2.7: Diferentes representações para um vetor do R2 .
É possı́vel mostrar que a representação de um vetor numa dada base é única,
e que todas as bases possuem exatamente o mesmo número de vetores. O conjunto
de n vetores
C = {(1, 0, . . . , 0), (0, 1, . . . , 0), . . . , (0, 0, . . . , 1)}
2.8. Revisão de álgebra linear e matrizes
33
é chamado de base canônica do Rn . É linearmente independente e qualquer vetor
pode ser escrito como combinação linear dos seus vetores. A representação de um
vetor qualquer x na base canônica é α1 = x1 , α2 = x2 , . . . , αn = xn , se confundindo
com o próprio vetor.
Uma vez que o número de vetores na base canônica é igual a n, e dado que
todas as bases devem conter o mesmo número de vetores, conclui-se que todas as
bases do Rn possuem n vetores. A dimensão de um espaço linear é igual ao número
de vetores nas suas bases. Portanto, a dimensão do Rn é igual a n.
Produto escalar e norma
O produto escalar de dois vetores x, y ∈ Rn é o escalar definido como
hx, yi = x1 y1 + x2 y2 + · · · + xn yn .
Dois vetores x, y ∈ Rn são ortogonais se hx, yi = 0. Um vetor x ∈ Rn é
ortogonal a um conjunto qualquer de vetores C = {x1 , x2 , . . . , xk } se hx, xj i = 0
para todo j = 1, 2, . . . , k.
A norma euclidiana de um vetor x ∈ Rn é o escalar definido por
kxk = x21 + x22 + · · · + x2n
1/2
.
O ângulo θ no intervalo [0, π] formado por dois vetores não-nulos x, y ∈ R n
pode ser definido como
hx, yi
.
cos θ =
kxk kyk
Conjuntos poliedrais
Seja c ∈ Rn e α ∈ R um vetor não-nulo e um escalar qualquer, respectivamente.
O conjunto dos pontos
H = {x ∈ Rn : c1 x1 + c2 x2 + · · · + cn xn = α}
é chamado de hiperplano. Hiperplanos assumem as formas conhecidas de retas e
planos no R2 e R3 , respectivamente. Cada hiperplano determina dois semi-espaços
no Rn :
H− = {x ∈ Rn : c1 x1 + c2 x2 + · · · + cn xn ≤ α}
e
H+ = {x ∈ Rn : c1 x1 + c2 x2 + · · · + cn xn ≥ α}.
A intersecção de um número finito de semi-espaços descreve um poliedro no
Rn . A figura 2.8 ilustra poliedros (polı́gonos) no R2 descritos por semi-espaços
(semiplanos). As regiões determinadas pelos subespaços estão indicadas por setas.
Um poliedro pode ser aberto (figura 2.8(a)) ou fechado (figura 2.8(b)), dependendo
dos semi-espaços considerados.
34
Capı́tulo 2. Programação Linear
Poliedros podem ser caracterizados por meio dos seus pontos extremos,
como x1 , x2 e x3 nas figuras 2.8(a) e 2.8(b), e direções extremas, como d1 e d2
na figura 2.8(a).
x2
PSfrag replacements
x3
x2
d2
y
x
x
1
d
x3
x
1
x1
y
(a)
(b)
Figura 2.8: Poliedros no R2 descritos por semi-espaços.
Poliedros são conjuntos convexos, no sentido de que se x e y são vetores
quaisquer contidos num poliedro, então o vetor
x = λx + (1 − λ)y,
λ ∈ [0, 1],
chamado de combinação convexa de x e y, também pertence ao poliedro, qualquer
que seja λ ∈ [0, 1]. As combinações convexas de dois vetores descrevem um segmento
de reta cujas extremidades são os vetores, como ilustra a figura 2.8.
Matrizes
Uma matriz é qualquer arranjo retangular de números. Se o retângulo possui
m linhas e n colunas, diz-se que a matriz tem dimensão m × n. O conjunto das
matrizes reais de dimensão m × n é denotado por Rm×n . Uma matriz A ∈ Rm×n
genérica seria


a11 a12 · · · a1n
 a21 a22 · · · a2n 


A= .
..  .
..
..
 ..
.
. 
.
am1
am2
···
amn
Uma matriz A ∈ Rm×n pode também ser denotada como A = {aij }. Duas
matrizes A, B ∈ Rm×n são iguais se aij = bij para todo i = 1, 2, . . . , m e todo
j = 1, 2, . . . , n. A matriz 0 ∈ Rm×n é a matriz composta apenas por elementos
nulos.
2.8. Revisão de álgebra linear e matrizes
35
Vetores
Casos especiais importantes são as matrizes linha e coluna, obtidas quando
m = 1 e n = 1, respectivamente. Vetores do Rn podem ser vistos como matrizes
x ∈ R1×n ou x ∈ Rm×1 . Neste curso, vetores são representados por matrizes-colunas
e referenciados na forma usual, x ∈ Rn .
Operações básicas
A soma (subtração) de matrizes A, B ∈ Rm×n é a matriz definida por
A ± B = {aij ± bij }.
A soma de matrizes é comutativa (A+B = B +A) e associativa ((A+B)+C =
A + (B + C)).
O produto de uma matriz A ∈ Rm×n por um escalar α ∈ R é a matriz
definida por
αA = {αaij }.
O produto de matriz por escalar é comutativo (αA = Aα), associativo ((αβ)A =
α(βA)) e distributivo ((α + β)A = αA + βA, α(A + B) = αA + αB.)
O produto de matrizes A ∈ Rm×n e B ∈ Rn×p , de dimensões compatı́veis,
é a matriz C ∈ Rm×p definida por
C = AB = {cik =
n
X
aij bjk }.
j=1
O produto de matrizes não é comutativo, isto é, AB 6= BA, em geral, mesmo
quando os dois produtos são possı́veis. O produto de matrizes é associativo ((AB)C =
A(BC)) e distributivo com relação a soma de matrizes (A(B + C) = AB + AC).
A transposta de uma matriz A ∈ Rm×n é a matriz de dimensão n × m
denotada como AT e definida por
AT = {aji }.
Inversa e determinante
Se m = n, diz-se que a matriz é quadrada ou de ordem n. A diagonal principal de uma matriz quadrada de ordem n é formada pelos elementos
a11 , a22 , . . . , ann . Diz-se que uma matriz quadrada é diagonal se os elementos fora
da diagonal são todos nulos. Uma matriz diagonal de ordem n importante é a
matriz identidade:


1 0 ··· 0
 0 1 ··· 0 


.
I= . . .
. . ... 

 .. ..
0
0
···
1
36
Capı́tulo 2. Programação Linear
Dada uma matriz A de ordem n, se existir uma matriz B, também de ordem
n, tal que
AB = BA = I,
então que B é a matriz inversa de A. Existindo, a inversa de A é única. É comum
representar a inversa de A como A−1 .
O menor ij de uma matriz quadrada A de ordem n é a submatriz denotada
por Aij obtida deletando-se a i-ésima linha e a j-ésima coluna de A. O determinante de A é o escalar representado como det A ou | A |, definido recursivamente
da seguinte forma: se n = 1, então
det A = a11 .
Se n = 2,
det A = a11 a22 − a21 a12 .
Se n > 2, seleciona-se qualquer linha i e então
det A = (−1)i+1 ai1 (det Ai1 ) + (−1)i+2 ai2 (det Ai2 )+
· · · + (−1)i+n ain (det Ain ).
(2.16)
Download