programacao linear.ppt [modo de compatibilidade] · fernando nogueira programação linear 3...

31
Fernando Nogueira Programação Linear 1 Programação Linear Programação Linear

Upload: ledien

Post on 16-Aug-2019

217 views

Category:

Documents


0 download

TRANSCRIPT

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,,

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:

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

≤+

≤+

≤−

+=

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

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

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 31

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