Fernando Nogueira Programação Linear 1
Programação LinearProgramação Linear
Fernando Nogueira Programação Linear 2
Exemplo Típico 1
Uma industria produz 2 produtos, I e II, sendo que cada produto
consome um certo número de horas em 3 máquinas A, B e C para ser
produzido, conforme a tabela:
O tempo de funcionamento máximo disponível das máquinas é:
O lucro obtido por cada produto I é $1,00 e por cada produto II é $1,50.
Quanto fabricar de cada produto de modo que seja obedecida a
capacidade operativa das máquinas com o maior lucro possível ?
Produto Tempo Máquina A Tempo Máquina B Tempo Máquina C
I 2 1 4
II 2 2 2
Máquina Máximo tempo disponível
A 160
B 120
C 280
Fernando Nogueira Programação Linear 3
Exemplo Típico 2
Uma padaria produz 2 bolos, I e II, sendo que cada bolo consome um
certa quantidade de açúcar, farinha e ovo, para ser produzido, conforme a
tabela:
O estoque disponível dos ingredientes é:
O lucro obtido por cada bolo I é $1,00 e por cada bolo II é $1,50.
Quanto produzir de cada bolo com o estoque de ingredientes disponível a
fim de obter o maior lucro possível ?
Bolo Açúcar (kg) Farinha (kg) Ovo (un)
I 2 1 4
II 2 2 2
Ingrediente Estoque
Açúcar 160 kg
Farinha 120 kg
Ovo 280 un
Fernando Nogueira Programação Linear 4
Exemplo Típico 3
Uma empresa aérea possui 2 tipos de aeronaves, I e II, sendo que cada
aeronave utiliza uma certa quantidade de pilotos, engenheiros de vôo e
comissários, para operar, conforme a tabela:
A empresa possui a seguinte disponibilidade de funcionários:
O lucro obtido por cada aeronave I é $1,00 e por cada aeronave II é
$1,50. Quantas aeronaves de cada tipo devem utilizadas de modo que
seja obedecida a disponibilidade de funcionários a fim de obter o maior
lucro possível ?
Aeronave Pilotos Engenheiros de vôo Comissários
I 2 1 4
II 2 2 2
Funcionário Disponibilidade
Piloto 160
Engenheiro de vôo 120
Comissário 280
Fernando Nogueira Programação Linear 5
Exemplos 1, 2 e 3 são diferentes, porém, a formulação para os 3
problemas é exatamente a mesma!
Programação Linear modela uma enorme quantidade de problemas.
Existem algoritmos para Programação Linear que garantem a obtenção
da solução ótima com “curto” tempo de processamento.
Nome “Programação Linear”
“Programação” vem da Programação de Atividades (militares)
“Linear” vem da formulação que se obtém (modelo é linear)
Fernando Nogueira Programação Linear 6
( )2121
x5.1xZx,xlucroMax +==
Função Objetivo
≥
≤+
≤+
≤+
0x,x
280x2x4
120x2x
160x2x2
21
21
21
21Máquina A
Máquina B
Máquina C
Prod. não negativa
Modelagem Matemática
Restrições
� x1 a quantidade do produto I a ser fabricada
� x2 a quantidade do produto II a ser fabricada
Em notação matricial
[ ]
=⇒=
2
1
122111
x
x.5.11ZxcZ
Função Objetivo
Restrições
≤
⇒≤
280
120
160
x
x.
24
21
22
bxA2
1
131223
Fernando Nogueira Programação Linear 7
Exemplo “Atípico”
O sistema estrutural abaixo é composto por 2 barras rígidas e 4 cabos.
Qual o máximo carregamento permitido nos pontos P1, P2, P3, P4 e P5
considerando as resistências admissíveis nos cabos e as dimensões das
barras?
Fernando Nogueira Programação Linear 8
54321 PPPPPZMax ++++=
≥
≤++
≤++
≤
++++
≤
++++
0P,P,P,P,P
200P4
3P
2
1P
4
1
250P4
1P
2
1P
4
3
300P4
1P
2
1P
4
3
4
3P
2
1P
4
1
100P4
1P
2
1P
4
3
4
1P
2
1P
4
3
54321
543
543
54321
54321
Fernando Nogueira Programação Linear 9
54321 PPPPPZMax ++++=
175P,0P,275P,75P,0P
Solução
0P,P,P,P,P
200P4
3P
2
1P
4
1
250P4
1P
2
1P
4
3
300P4
1P
2
1P
4
3
4
3P
2
1P
4
1
100P4
1P
2
1P
4
3
4
1P
2
1P
4
3
54321
54321
543
543
54321
54321
=====
≥
≤++
≤++
≤
++++
≤
++++
Fernando Nogueira Programação Linear 10
Interpretação Geométrica
A região fechada formada pelas restrições é sempre convexa e contém
todas as soluções possíveis ou viáveis: região das restrições.
Teorema Fundamental da Programação Linear
Uma vez que todas as equações e/ou inequações envolvidas são lineares,o valor ótimo da função-objetivo Z só pode ocorrer em um dos vérticesda região das restrições.
Fernando Nogueira Programação Linear 11
O Método Simplex (Dantzig, 1948)
�Considerações Iniciais
O Método Simplex é um algoritmo que sistematiza a solução de
problemas de P.L. de maneira eficiente computacionalmente (não é
força-bruta).
Seja m o número de equações e/ou inequações de restrição e n o número
de variáveis (incógnitas), tem-se:
2 problemas ocorrem na resolução de
1)A existência de desigualdades implica que a solução égeralmente um conjunto e não única.
2)A não necessariamente possui inversa ⇒ geralmente A não é quadrada.obs: o fato de A ser quadrada não garante a existência de inversa.
1nn111 xcZ = 1m1nnm bxA ≤
1m1nnm bxA ≤
( )nm ≠
( )>≥<≤ ou,,
George Dantzig (*1914, Portland,
Oregon, Estados Unidos ; †2005,
Palo Alto, California, Estados
Unidos).
Fernando Nogueira Programação Linear 12
Solução do Problema 1
�Transformar as desigualdades em igualdades através da introdução de
variáveis de folga (slack variables). Exemplo:
Solução do Problema 2
�Anular n variáveis. Uma vez que (n + m) é sempre maior que m,
sempre tem-se mais incógnitas de que equações, assim o sistema é sub-
determinado ⇒ infinitas soluções. No entanto, anulando n variáveis, o
sistema fica:
Quais n variáveis deve-se anular para obter solução ótima ???
0u,u,u,x,xcom
280ux2x4280x2x4
120ux2x120x2x
160ux2x2160x2x2
32121
32121
22121
12121
≥
=++⇔≤+
=++⇔≤+
=++⇔≤+
( ) ( ) 1m1mnmnm bxA =++
Tem-se então um sistema com
m equações e (n + m)
incógnitas:
1m1mmm bxA =
Fernando Nogueira Programação Linear 13
�O Método
Reescrevendo a função-objetivo e as inequações como equações:
Deve-se achar uma solução inicial viável qualquer. A maneira mais
simples para isto é “zerar” as variáveis de controle (x1 = x2 = 0). Com
isso, as variáveis de folga assumem valores máximos (u1 = 160, u2 = 120
e u3 = 280). Esta é uma solução viável (nenhuma restrição foi violada),
porém é a pior possível, pois Z = 0.
Pode-se classificar as variáveis do problema como:
�Variáveis Básicas: variáveis que compõem a solução em cada iteração.
�Variáveis Não-Básicas: variáveis que foram anuladas.
=++++
=++++
=++++
=−−−−−
280uu0u0x2x4
120u0uu0x2x
160u0u0ux2x2
0u0u0u0x5.1xZ
32121
32121
32121
32121
Fernando Nogueira Programação Linear 14
Partindo de uma solução inicial qualquer, o Método Simplex verifica se
existe uma outra solução que seja melhor que a solução atual. Isto se dá
através da análise da função-objetivo:
Fazendo , as derivadas parciais de Z em
relação as variáveis (de controle e de folga) fornecem a taxa de
crescimento de Z nas direções destas variáveis.
O fato acima permite deduzir que enquanto houver variáveis não-básicascom coeficientes negativos em a soluçãopoderá ser melhorada. Uma vez que o objetivo é maximizar Z, deve-seescolher dentre as variáveis não-básicas, aquela que possuir maior taxade variação (coeficiente mais negativo) para compor as variáveis básicas,no caso x2. Para isso, alguma variável básica terá que deixar a base paracompor as variáveis não-básicas. Qual variável deve deixar a base, ouseja, mudar do grupo das variáveis básicas para o grupo das variáveisnão-básicas ?
0u0u0u0x5.1xZ 32121 =−−−−−
32121 u0u0u0x5.1xZ ++++=
1x
Z
1
=∂
∂0
u
Z
2
=∂
∂0
u
Z
1
=∂
∂5.1
x
Z
2
=∂
∂0
u
Z
3
=∂
∂
0u0u0u0x5.1xZ 32121 =−−−−−
Fernando Nogueira Programação Linear 15
A medida que x2 (a variável que era não-básica e agora é variável básica)
aumenta, deve-se diminuir cada variável básica corrente correspondente
a uma linha na qual x2 tenha coeficiente positivo. Assim, quanto x2 pode
crescer antes que uma das variáveis básicas corrente atinja seu limite
inferior 0 (não viole nenhum restrição) ?
Com isso, conclui-se que quando x2 = 60, u2 = 0, e portanto, poderá ir
para o grupo das variáveis não-básicas.
básicanãoiávelvarépois,0x:obs
140x0uPara280uu0u0x2x4
60x0uPara120u0uu0x2x
80x0uPara160u0u0ux2x2
0u0u0u0x5.1xZ
1
2332121
2232121
2132121
32121
−=
=⇒==++++
=⇒==++++
=⇒==++++
=−−−−−
Antes Agora
Variáveis básicas u1,u2,u3 u1,x2,u3
Variáveis não-básicas x1,x2 x1,u2
Uma vez que x2 “entrou” na base e u2 “saiu” da base, faz-se necessário
então alterar os valores dos coeficientes do sistema de equações de
maneira equivalente. Este processo é obtido através do Método de
Gauss-Jordan (utiliza operações elementares à matriz aumentada de um
sistema até alcançar a forma escalonada reduzida).
Exemplo de forma escalonada reduzida: tabela simplex
Fernando Nogueira Programação Linear 17
João comprou 2 bananas e 3 laranjas e gastou R$13,00. Maria comprou 1
banana e 2 laranjas e gastou R$8,00. Qual o preço de uma banana (x) e
de uma laranja (y)? O sistema linear abaixo modela esse problema:
82
1332
=+
=+
yx)Maria
yx)João32 ==⇒ y,xSolução
1) Multiplicar uma linha por um escalar diferente de zero
2) Substituir uma linha pela sua soma com um múltiplo de outra linha
( )( ) 32844
2132321
=+×
=+×
yx)Maria
yx)João32 ==⇒ y,xSolução
Operações elementares
51
1332
−=−−+×−
=+
yx)MariaJoão
yx)João32 ==⇒ y,xSolução
Os sistemas são “diferentes”, mas a solução é a mesma!
Fernando Nogueira Programação Linear 18
Retomando o problema ao ponto inicial, pode-se montar a seguinte
tabela (Tabela Simplex):
Se o vetor [2 2 2 –1.5]t (correspondente a coluna de x2) transformar-se no
vetor [0 1 0 0]t (correspondente a coluna de u2), x2 estará pertencendo a
base e u2 sairá da base. Para realizar o Método de Gauss-Jordan é
necessário escolher o elemento pivô, o qual é obtido pela interseção da
coluna pivô com a linha pivô.
00005.11
28010024
12001021
16000122
buuuxx 32121
−−
}}
Restrições
função-objetivo
Fernando Nogueira Programação Linear 19
A coluna pivô é a coluna correspondente à variável que vai entrar na base
(x2 no caso) e a linha pivô é a linha na qual a interseção com a coluna
correspondente à variável que vai sair da base é igual a 1 (no caso a
interseção da 2 linha com a coluna correspondente a u2).
Realizando o Método de Gauss-Jordan a Tabela Simplex fica:
Esta tabela refere-se ao seguinte sistema:
900430041
16011003
600210121
4001101
buuuxx 32121
−
−
−
}}
Restrições
função-objetivo
=+−++
=++++
=+−++
=−+−−−
160uuu0x0x3
60u0u21u0xx21
40u0uux0x
90u0u43u0x0x41Z
32121
32121
32121
32121
}}
Restrições
função-objetivo
Fernando Nogueira Programação Linear 20
A Tabela Simplex anterior fornece a seguinte solução:
x1 = 0, x2 = 60, u1 = 40, u2 = 0, u3 = 160 e Z = 90.
Uma vez que x1 é uma variável não-básica e possui coeficiente negativo,
esta deverá entrar base e conseqüentemente u1 deverá sair da base. Com
esta alteração, a Tabela Simplex após o Método de Gauss-Jordan fica:
que corresponde ao seguinte sistema:1000214100
4012300
40012110
4001101
buuuxx 32121
−
−
−
}}
Restrições
função-objetivo
=++−++
=++−++
=+−++
=−++−−
40uu2u3x0x0
40u0uu21xx0
40u0uux0x
100u0u21u41x0x0Z
32121
32121
32121
32121
}}
Restrições
função-objetivo
Fernando Nogueira Programação Linear 21
A Tabela Simplex anterior fornece a seguinte solução:
x1 = 40, x2 = 40, u1 = 0, u2 = 0, u3 = 40 e Z = 100.
Uma vez que não existe variáveis não-básicas com coeficiente negativo a
solução não poderá mais ser melhorada, portanto, está solução é ótima.
Conclusão
Em P.L. existe maneiras de combinar n variáveis iguais a zero.
No exemplo, n = 2 e m = 3, que resulta em 10 soluções possíveis, o que
implica que seria necessário resolver 10 sistemas de equações (força-
bruta). No entanto, o Método Simplex resolveu apenas 2 sistemas de
equações (neste caso) e alcançou a solução ótima.
obs: combinação
( )
+
m
mn
( )⇒
−=
!yx!y
!x
y
x
Fernando Nogueira Programação Linear 22
Solução de um Modelo Geral de P.L. pelo Método Simplex
Até o momento
�Função-Objetivo deve ser maximizada
�Variáveis de controle não negativa
�Apresentam uma solução básica inicial
Quando uma ou mais dessas características não são satisfeitas, faz-senecessário determinar uma forma equivalente ⇒ mudar o modelo e não oalgoritmo.
1.Minimização
Se a função-objetivo é de minimização deve-se multiplica-lá por –1.
obs: restrições não são alteradas.
}
321321 xx4x3ZMaxxx4x3ZMin −+−=−⇒+−=
Simplex exige essas 3 características
Fernando Nogueira Programação Linear 23
2.Variável Livre ou Negativa
�Substituir a variável livre pela diferença de 2 outras não-negativas.
�Substituir a variável negativa por uma outra positiva com coeficiente -1.
≤
⇒
≥
≤+
≤++
++=
0x
livrex
0x
20x3x2
10xxx
xx2xZMax
3
2
1
21
321
321
≥
≤−+
≤−−+
−−+=
0x,x,x,x
20x3x3x2
10xxxx
xx2x2xZMax
6541
541
6541
6541
63
542
xx
xxx
Fazendo
−=
−=
3.Solução Básica Inicial
Se a restrição é do tipo faz-se necessário acrescentar uma variável de folga negativa.
Se a restrição é do tipo =, já tem-se um equação e, portanto, não é preciso acrescentarvariável de folga. No entanto, quando estes 2 casos ocorrem não é formada uma sub-matriz identidade automaticamente e, portanto, não origina uma solução básica inicial.
Exemplo:
0ucom,10ux10x 1111 ≥=−⇒≥
x3 negativa
Fernando Nogueira Programação Linear 24
⇒
≥
=++
≥++
≤−+
++=
0x,x,x
60x3xx2
20x2xx
10xxx2
xxxZMax
321
321
321
321
321
=++++
=−+++
=++−+
=−−−−−
60u0u0x3xx2
20uu0x2xx
10u0uxxx2
0u0u0xxxZ
21321
21321
21321
21321
000111
6000312
2010211
1001112
buuxxx 21321
−−−
−
−
}}
Restrições
função-objetivo
A Tabela Simplex fica:
Nota-se na Tabela Simplex que não existe uma sub-matriz identidade. Neste caso,
acrescenta-se Variáveis Artificiais (Auxiliares) nas linhas cujas as restrições são do tipo
ou = . O sistema fica:≥
Fernando Nogueira Programação Linear 25
0a,a,u,u,u,x,x,x
com
60aa0u0u0x3xx2
20a0auu0x2xx
10a0a0u0uxxx2
0a0a0u0u0xxxZ
32321321
3221321
3221321
3221321
3221321
≥
=++++++
=++−+++
=++++−+
=−−−−−−−
A Tabela Simplex fica:
00000111
601000312
200110211
100001112
baauuxxx 3221321
−−−
−
−
}}
Restrições
função-objetivo
Agora tem-se uma sub-matriz identidade, porém a2= 20 e a3 = 60.
O retorno ao modelo original deve ser feito com a eliminação das Variáveis Artificiais.
Isto é realizado através do Método do M Grande ou do Método da Função-Objetivo
Auxiliar.
Fernando Nogueira Programação Linear 26
Método da Função-Objetivo Auxiliar
Este método consiste em utilizar uma função-objetivo auxiliar W(a1,a2,...,ar) formada
pela soma das r Variáveis Artificiais ⇒W(a1,a2,...,ar) = a1 + a2 + ... + ar .
Uma vez que as Variáveis Artificiais podem ser escritas em função das Variáveis de
Controle e de Folga, pode-se sempre minimizar W(a1,a2,...,ar) até W(a1,a2,...,ar) = 0, o
que corresponde a a1= a2 = ... = ar = 0, fazendo então as Variáveis Artificiais
pertencerem ao grupo das Variáveis Não-Básicas. Com isso, obtém-se uma solução
viável para o problema podendo-se então abandonar a Função-Objetivo Auxiliar e as
Variáveis Artificiais. Exemplo:
Função-Objetivo Auxiliar
W(a2,a3) = a2 + a3
⇒
≥
=++
≥++
≤−+
++=
0x,x,x
60x3xx2
20x2xx
10xxx2
xxxZMax
321
321
321
321
321
0a,a,u,u,u,x,x,x
com
60aa0u0u0x3xx2
20a0auu0x2xx
10a0a0u0uxxx2
0a0a0u0u0xxxZ
32321321
3221321
3221321
3221321
3221321
≥
=++++++
=++−+++
=++++−+
=−−−−−−−
Dá 2o restrição
a2 = – x1 – x2 – 2x3 + u2 + 20
Dá 3o restrição
a3 = – 2x1 – x2 – 3x3 + 60
Fernando Nogueira Programação Linear 27
Substituindo a2 e a3 em W(a2,a3), fica:
Min W(a2,a3) = Max – W(a2,a3) = 3x1 + 2x2 + 5x3 – u2 – 80 = 0
que na forma de equação é – W(a2,a3) – 3x1 – 2x2 – 5x3 + u2 = – 80
A Tabela Simplex fica:
800010523
00000111
601000312
200110211
100001112
baauuxxx 3221321
−−−−
−−−
−
− }}
Restrições
função-objetivo
} função-objetivo
auxiliarApós 2 iterações (neste exemplo) do Método Simplex, a Tabela Simplex fica:
01100000
203
100003
23
1
203
211003
13
1
203
100013
13
2
303
100103
46
16
baauuxxx 3221321
−−
−−}}}
Restrições
função-objetivo
função-objetivo
auxiliar
Fernando Nogueira Programação Linear 28
A Tabela Simplex agora apresenta uma solução cuja as Variáveis Artificiais sãoVariáveis Não-Básicas (portanto, iguais a zero) e podem então ser desprezadas e oMétodo Simplex pode continuar sendo utilizado a fim de encontrar a solução ótima.
Considerações Finais
1.Problema de Degeneração
A saída de uma V.B. com valor nulo provoca o aparecimento de uma outra V.B. nulana próxima solução sem alteração do valor da Função-Objetivo. Neste caso a soluçãoé denominada degenerada, indicando que existe, no mínimo, uma restriçãoredundante. Se os coeficientes da Função-Objetivo retornam não negativos em algumaiteração, o caso não apresenta dificuldade. O problema surge quando as iteraçõeslevam a circuitos, sem caracterizar a solução ótima. Neste caso faz-se necessárioutilizar regras mais complexas, as quais não serão abordadas neste curso. Tal problemaé bastante raro em aplicações práticas.
Exemplo em que a degeneração não acarretou em circuito:
≥
≤+
≤+
+=
0x,x
4x2x
8x4x
x9x3ZMax
21
21
21
21
00093
41021
80141
buuxx 2121
−− 1804
904
3
012
102
1
204
114
1
buuxx 2121
−
−
182
32
300
02101
22
12
110
buuxx 2121
−
−
1 iteração 2 iteração
Fernando Nogueira Programação Linear 29
Exemplo em que a degeneração ocorreu temporariamente:
≥
≤+
≤+
≤−
+=
0x,x
8xx4
12x3x4
8xx4
x2x3ZMax
21
21
21
21
21
000023
810014
1201034
800114
buuuxx 32121
−−
−
6004
34
110
010120
401140
2004
14
11
buuuxx 32121
−
−
−
−
68
1108
500
02
102
110
421100
28
108
101
buuuxx 32121
−
−
−
217
81
85000
22
12
1010
4211002
38
38
1001
buuuxx 32121
−
−
−
1 iteração 2 iteração 3 iteração
Fernando Nogueira Programação Linear 30
Exemplo em que a degeneração acarretou em circuito:
≥
≤−−+
≤++−−
−−+=
0x,x,x,x
0x2x3
1xx
3
1
0x9xx9x2
x12xx3x2ZMax
4321
4321
4321
4321
00012132
01023
11
3
10019192
buuxxxx 214321
−−
−−
−−
0306001
01023
11
3
10919201
buuxxxx 214321
−
−−
−−
01213200
023
11
3
110
0919201
buuxxxx 214321
−−
−−
−−
0600130
023
11
3
110
0920191
buuxxxx 214321
−
−−
−−
03200121
013
1102
3
10920191
buuxxxx 214321
−−
−−
−−
0013060
013
1102
3
10019192
buuxxxx 214321
−
−−
−−
00012132
01023
11
3
10019192
buuxxxx 214321
−−
−−
−−
1 iteração 2 iteração 3 iteração
4 iteração 5 iteração 6 iteração
Fernando Nogueira Programação Linear 31
2.Solução Ilimitada
Ocorre quando a variável que entra na base não possui em sua coluna nenhumcoeficiente positivo, não sendo portanto possível determinar a linha pivô. Exemplo:
≥
≤+−
≥+
+=
0x,x
0xx
40xx
x0xZMax
21
21
21
21
3.Soluções Múltiplas
Se na solução ótima o coeficiente de um V.N.B. é zero, esta variável poderá entrar nabase sem alterar o valor da função objetivo, gerando outra solução ótima. Neste casoqualquer combinação linear dessas 2 soluções também será ótima. Exemplo:
≥
≤+
≤+
+=
0x,x
10x5x2
12x3x4
x10x4ZMax
21
21
21
21
Fernando Nogueira Programação Linear 32
4.Soluções Inviável
Se o problema de P.L. não possuir nenhuma solução viável, então o Método da Função-Objetivo Auxiliar (ou do M Grande) irá fornecer na solução final no mínimo umavariável artificial com valor diferente de zero, caso contrário, todas variáveis artificiaisserão nulas. Exemplo:
≥
≥+−
≥−
+=
0x,x
1xx
1xx
xxZMax
21
21
21
21
Fernando Nogueira Programação Linear 33
5.Lado Direito das Restrições Negativas
Solução Inicial: x1 = x2 = 0, u1 = -1 e u2 = -10 ⇒ Inviável, pois u1 e u2 são negativos.
Sempre que houver restrições cujo lado direito são negativos deve-se multiplicar ambosos lados destas restrições por –1.
Solução Inicial: x1 = x2 = u1 = u2 = 0, a1= 1, a2 = 10 ⇒ Viável.
≥
−=+++
−=+++
⇒
≥
−≤+
−≤+
0u,u,x,x
10uu0x5x2
1u0uxx
0x,x
10x5x2
1xx
2121
2121
2121
21
21
21
≥
=++−−−−
=++−−−−
≥
⇒≥−−
≥−−
⇒
≥
−≤+
−≤+
0a,a,u,u,x,x
10aa0uu0x5x2
1a0au0uxx
0x,x
10x5x2
1xx
0x,x
10x5x2
1xx
212121
212121
212121
21
21
21
21
21
21