Universidade do Minho 2006 Investigação Operacional José António Oliveira – [email protected]...

70
Universidade do Minho 2006 Investigação Operacional José António Oliveira – [email protected] 1 Investigação Operacional Métodos de Programação Linear: Gráfica, Simplex (Mestrado) Engenharia Industrial http://dps.uminho.pt/pessoais/zan Universidade do Minho - Escola de Engenharia Departamento de Produção e Sistemas

Transcript of Universidade do Minho 2006 Investigação Operacional José António Oliveira – [email protected]...

Page 1: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

1

Investigação Operacional Métodos de Programação Linear: Gráfica, Simplex

(Mestrado)

Engenharia Industrialhttp://dps.uminho.pt/pessoais/zan

             

Universidade do Minho - Escola de EngenhariaDepartamento de Produção e Sistemas

                      

             

Page 2: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

2

Representação GráficaConsidere o seguinte problema de PL:

duas variáveis, permite a representação gráfica do problema

Page 3: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

3

Representação GráficaNão negatividade Uma restrição

Page 4: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

4

Representação GráficaDuas restrições

Page 5: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

5

Representação GráficaConjunto de restrições

Page 6: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

6

Representação GráficaEspaço de soluções

Page 7: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

7

Representação GráficaFunção objectivo:

família de rectas

Page 8: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

8

Representação Gráfica

Page 9: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

9

Soluções de modelos de PLConjunto das soluções admissíveis pode ser

–Vazio–Não vazio (Limitado ou Ilimitado)

Um modelo de PL pode–Ser impossível–Ser ilimitado–Ter soluções óptimas alternativas*–Ter uma única solução óptima

Os dois primeiros casos, normalmente, indicam que o modelo de PL está mal formulado ou houve erros na sua introdução, já que não é frequente existirem problemas de decisão "reais" sem alternativas ou com alternativas tão boas quanto desejarmos.* Tipicamente, o software para PL só identifica uma solução óptima.

Page 10: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

10

Soluções de modelos de PL

Page 11: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

11

Page 12: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

12

Page 13: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

13

Page 14: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

14

Page 15: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

15

Algoritmos para PL

Page 16: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

16

Algoritmos para PLSe tiver curiosidade em ter uma ideia do que é isto de teoria da complexidade, uma excelente introdução para leigos é feita em J. Buescu, “Quem quer ser milionário?”, em “O Mistério do Bilhete de Identidade e outras histórias – Crónicas das fronteiras da Ciência”, Gradiva, 4ª edição, 2002. Já agora, o problema de PL é um problema do tipo P (provado em 1979 devido ao método do Elipsóide) mas o algoritmo Simplex não é polinomial.

Page 17: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

17

Forma do modelo de PL

•Forma normal /estandardizada / padrão– Maximização;– Todas as restrições são equações;– Todas as variáveis são restringidas a serem não

negativas.

Page 18: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

18

Simplex

Page 19: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

19

SimplexConsidere um problema de maximização de lucro relacionado com duas actividades e três recursos. Na tabela seguinte são dados os consumos unitários de cada recurso (A, B e C) por actividade (1 e 2), a disponibilidade de cada recurso e o lucro unitário de cada actividade.Formule o problema através de um modelo de PL. 

Page 20: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

20

Simplex

• Temos 3 equações e 5 incógnitas (sistema de equações indeterminado).• Se fixarmos 2 variáveis a zero, temos 3 equações a 3 incógnitas e podemos determinar a solução desse sistema.

Page 21: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

21

Simplex

Page 22: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

22

Simplex

Page 23: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

23

Simplex

Page 24: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

24

Simplex

Page 25: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

25

Simplex

Page 26: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

26

Simplex

Page 27: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

27

Simplex

Page 28: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

28

Simplex

Page 29: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

29

Simplex

Page 30: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

30

Simplex

Page 31: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

31

SimplexProblema geral: n variáveis, m equações.Qualquer conjunto de m variáveis cujo sistema de equações tenha solução designa-se por base (exemplo, x3, x4, x5).

Dada uma base é fácil determinar a solução lhe está associada, basta fixar a 0 as variáveis que não fazem parte da base (variáveis não básicas, no exemplo dado x1 e x2) e resolver o sistema de equações para as restantes (variáveis básicas) - obtendo-se uma solução básicaex. x1=0, x2=0, x3=720, x4=880, x5=160

Page 32: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

32

Simplex

Page 33: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

33

Simplex

Page 34: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

34

Simplex

Page 35: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

35

Simplex

Page 36: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

36

Simplex

Page 37: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

37

Simplex

Page 38: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

38

Simplex

Page 39: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

39

Simplex

Page 40: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

40

Simplex

A cada ponto extremo corresponde uma solução básica admissível (sem coordenadas negativas) e vice-versa.

Page 41: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

41

Simplex•Uma solução básica pode ser admissível ou não admissível (no exemplo, A,B,G,F,I correspondem a bases admissíveis e C,H,E,D a bases não admissíveis). Para saber se a base é admissível ou não basta ver se as restrições de não negatividade são satisfeitas.•Já tínhamos chegado à conclusão de que se existe uma solução óptima finita, então há, pelo menos, um ponto extremo que é solução óptima. A cada ponto extremo está associada uma base admissível...•...então basta determinar todas as soluções básicas e o seu valor (na função objectivo) e ver qual é a solução que tem maior valor (problema de maximização).

Page 42: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

42

Simplex•Determinar a solução associada a uma base é fácil: resolver um sistema de m equações a m incógnitas (método de Gauss-Jordan).•Só há um "pequeno" problema, o número de bases pode atingir

•Por exemplo, para um problema com 100 variáveis e 10 restrições esse número é 1.73e+13. Com a folha de cálculo Excel (Microsoft Office 2003) já não se consegue determinar esse valor para um problema com 2000 variáveis e 250 restrições. O número de combinações é gigantesco para um problema pequeno!

!

! !n

mnC

n m m

Page 43: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

43

Simplex•Algoritmo Simplex:

– começa-se numa base e vê-se se ela corresponde à solução óptima (temos maneira de fazer isso?).

– Se for, temos a solução óptima. – Se não for, passamos para outra base (como?)

que pareça promissora (e como se vê isso?) e repetimos o procedimento.

•Não parece grande ideia, dado o número de bases ser tão grande... De facto, a análise (com base na teoria da complexidade) do comportamento do algoritmo simplex no pior caso não é muito simpática para este algoritmo (já foram construídos propositadamente problemas em que o simplex tinha de testar todas as bases!).

Page 44: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

44

Simplex A boa notícia é que, em problemas reais, o comportamento do algoritmo é muitíssimo melhor do que a análise para o pior caso da teoria da complexidade.•O algoritmo Simplex (na verdade, os algoritmos da classe de métodos Simplex, porque, na prática, há diferenças consideráveis entre os diferentes algoritmos que se baseiam nestas ideias) continua a ser largamente o mais utilizado na resolução de problemas de PL reais.

•O Simplex é um exemplo clássico de como, por vezes, a análise teórica do pior caso, não é adequada à classificação prática dos algoritmos.

Page 45: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

45

Simplex•No seguinte problema qual é a base que tem uma solução mais fácil de calcular?

Page 46: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

46

Simplex

•função objectivo: z-10x1-9x2-0x3-0x4-0x5=0•Os valores que aparecem nesta linha são denominados por custos reduzidos.•A que solução corresponde o quadro simplex apresentado?

Page 47: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

47

Simplex•Um quadro simplex que corresponda a uma solução básica admissível (primal) tem as seguintes características:

– Uma coluna correspondente a uma variável básica tem um 1 na linha associada à variável básica e zeros em todas as outras linhas (exemplo, a coluna de x5 tem um 1 na terceira linha - associada à variável x5 e zeros nas primeira e segunda linhas). Esta característica implica que as colunas das variáveis básicas formam uma matriz identidade.

– Na linha da função objectivo, todas as variáveis básicas têm coeficiente 0.

– Os termos independentes são sempre maiores ou iguais a zero (manter válida a não-negatividade).

Page 48: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

48

Simplex•A cada quadro simplex corresponde uma solução básica admissível imediatamente perceptível através das variáveis básicas e da coluna dos termos independentes.

– No exemplo, x3=200, x4=230, x5=70.

•A solução associada ao quadro simplex é óptima?

Page 49: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

49

Simplex•Não! Se se aumentar o valor de x1 ou x2 o valor de z aumenta (e pretende-se maximizar o valor de z). O que o coeficiente -10 de x1 (linha da função objectivo) significa é que por cada unidade de aumento de x1 o valor da função objectivo, aumenta 10 unidades (o sinal negativo é devido à mudança de membro efectuada inicialmente).•Em cada iteração do simplex passa-se (da base actual) para uma base adjacente (que se obtém da actual passando uma variável não básica a básica e uma variável básica a não básica - o número de variáveis básicas é constante).

Page 50: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

50

Simplex•Não! Se se aumentar o valor de x1 ou x2 o valor de z aumenta (e pretende-se maximizar o valor de z). O que o coeficiente -10 de x1 (linha da função objectivo) significa é que por cada unidade de aumento de x1 o valor da função objectivo, aumenta 10 unidades (o sinal negativo é devido à mudança de membro efectuada inicialmente).•Em cada iteração do simplex passa-se (da base actual) para uma base adjacente (que se obtém da actual passando uma variável não básica a básica e uma variável básica a não básica - o número de variáveis básicas é constante).•Qual a variável mais promissora para entrar na base?

Page 51: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

51

Simplex•A variável mais promissora é x1 (aumento de 10 unidades na função objectivo por unidade de aumento de x1, para x2 esse valor é 9 o que é pior já que se está a maximizar).

– Isto é uma decisão gulosa, míope… não garante que seja a melhor decisão.

– E se houver empate? (custos reduzidos iguais)

Page 52: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

52

Simplex

•Sendo assim x1 entra na base (passará a tomar um valor positivo)!

– Qual a variável que sai base?•Como o aumento do valor de x1 aumenta o valor da função objectivo, queremos aumentar o mais possível o seu valor.

– Qual é o limite?

Page 53: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

53

Simplex• Tem de haver um limite (ou melhor, se não houver um limite o problema é ilimitado, mas não é esse o caso do exemplo).

O que acontece às outras variáveis quando se aumenta o valor de x1

A variável x2 continua não básica (logo com valor igual a 0). As outras relacionam-se com x1 através das restrições.

Qual a variável que deve sair da base?

Page 54: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

54

Simplex

Page 55: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

55

Simplex

Page 56: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

56

SimplexColuna pivot

Page 57: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

57

SimplexColuna pivot

Page 58: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

58

A variável que sai da base é x5, a primeira que se anula (logo passa a não básica) quando se tenta aumentar x1 o mais possível.A razão entre o valor da coluna dos termos independentes e o valor da coluna da variável que vai entrar na base para todas as linhas (cujo valor seja positivo) e escolher a menor.

SimplexColuna pivot

Linha pivot

Page 59: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

59

(Na resolução primal) O elemento pivot nunca pode ser negativo.

SimplexColuna pivot

Linha pivot

Page 60: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

60

Se houver empate na saída?– escolha indiferente: algoritmo pode entrar em ciclo– escolhe-se a razão de maior divisor: sai x3

SimplexColuna pivot

Page 61: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

61

Simplex•Como obter o quadro correspondente à nova base?

– Cada linha corresponde a uma equação de um sistema, logo• pode-se multiplicar toda a linha por uma constante• pode-se somar duas linhas, substituindo uma delas pelo

resultado da soma, que o sistema de equações não se altera (só se altera a sua representação). No exemplo, a linha 3 (L3) é a linha pivot, fazendo as operações

L3 / 2 (para a linha L3) 5L3 + L4 (para a linha L4)-2L3+L2 (para a linha L2)-(5/2)L3+L1 (para a linha L1)

•obtém-se o quadro simplex correspondente à nova base

Coluna pivot

Page 63: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

63

PROGRAMAÇÃO LINEAR - PL• Fizemos uma iteração do algoritmo simplex primal:

1. Teste de optimalidade (a solução básica actual é óptima se todos oscoeficientes da função objectivo (custos reduzidos) são não negativos). Se a solução é óptima, parar. Se não, prosseguir com o passo 2.

2. Decidir qual a variável que entra na base (é aquela que tem ocoeficiente mais negativo na linha da função objectivo - em casode empate escolher a variável que “crescerá mais”. Se persistir o empate, escolher arbitrariamente). Prosseguir com o passo 3.

3. Decidir qual a variável básica que sai da base (é aquela que tem arazão do critério de saída mais pequena - excluindo as razõesnegativas; em caso de empate, escolher o maior elemento pivot. Se persistir o empate, escolher arbitrariamente). Se não houver nenhuma razão estritamente positiva o problema é ilimitado, parar. Se não, prosseguir para 4.

4. Actualizar o quadro simplex para a base actual e passar à iteraçãoseguinte (passo 1).

Page 64: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

64

Simplex

Page 65: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

65

Simplex• O quadro simplex obtido em qualquer iteração corresponde sempre a uma solução básica admissível e a um ponto extremo.• Quadro óptimo do exemplo (após duas iterações).

Page 66: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

66

Simplex• Soluções alternativas

– O que são?– Como se identifica a sua existência?

•Custo(s) reduzido(s) NULO(s) nas variáveis não básicas.

Page 67: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

67

Simplex• Degenerescência…

– O algoritmo simplex pode entrar em ciclo (se não forem tomadas as devidas previdências) por causa da existência de soluções básicas degeneradas (soluções em que há variáveis básicas com valor zero).

– A causa é a presença de restrições redundantes (que não são fáceis de detectar analiticamente...). De uma iteração para a seguinte, pode acontecer que a base seja diferente, mas o valor das variáveis de decisão seja o mesmo (uma básica com valor zero sai da base e uma não básica entre na base com valor zero).

Page 68: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

68

Simplex• Degenerescência…

– Na prática, o software actual tem implementadas formas de lidar com a degenerescência (através de regras mais sofisticadas do que escolher arbitrariamente a variável que entra na base em caso de empate).

– De qualquer maneira, em problemas muito degenerados, este fenómeno pode abrandar significativamente a execução do método.

Um só ponto extremo e duas bases!

Page 69: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

69

Simplex•Como obter um quadro simplex válido para um problema que tenha restrições de igualdade e/ou de maior ou igual?

– Note-se que, se o problema só tiver restrições de "menor ou igual", temos sempre uma base "à mão": a constituída pelas variáveis de folga - como no exemplo anterior.

– O ponto de solução nula pertence ao espaço de soluções válidas, e forma-se a base com as variáveis de folga.

Page 70: Universidade do Minho 2006 Investigação Operacional José António Oliveira – zan@dps.uminho.pt 1 Investigação Operacional Métodos de Programação Linear:

Universidade do Minho2006

Investigação OperacionalJosé António Oliveira – [email protected]

70

Simplex•Modelos (a) e (b) são equivalentes.

– O modelo (b) está na forma estandardizada e inclui uma variável de excesso (primeira restrição) e uma variável de folga (segunda restrição).

– Para a segunda linha é fácil encontrar uma variável básica inicial (tem coeficiente 1 na própria linha e 0 nas restantes).

– Qual a variável básica a associar à primeira linha? Não é claro. Não há nenhuma variável que tenha coeficiente 1 na própria linha e 0 nas restantes.

•Modifica-se o modelo por inclusão de variáveis artificiais ->vê-se isso na próxima aula