programação linear i - técnico lisboa · programação linear mais complexos recorremos ao...

20
1 Fundamentos de Investigação Operacional Programação linear I João Carlos Lourenço [email protected] Ano lectivo 2011/2012 Leituras recomendadas: Nova, A.P., Lourenço, J.C., 2011, Apontamentos de Investigação Operacional, DEG, IST, Capítulo 2. Hillier, F.S., Lieberman, G.J., 2010. Introduction to Operations Research, 9th ed. McGraw-Hill, New York, Chapter 3. 2 O tipo mais comum de aplicação envolve o problema genérico de afectação de recursos limitados da melhor forma possível (ou seja, óptima) entre actividades que competem entre si. Programação linear: Para que serve? Utilização eficiente de recursos

Upload: vudieu

Post on 03-Oct-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

1

Fundamentos de Investigação Operacional

Programação linear I João Carlos Lourenço

[email protected]

Ano lectivo 2011/2012

Leituras recomendadas: •  Nova, A.P., Lourenço, J.C., 2011, Apontamentos de Investigação

Operacional, DEG, IST, Capítulo 2. •  Hillier, F.S., Lieberman, G.J., 2010. Introduction to Operations Research, 9th

ed. McGraw-Hill, New York, Chapter 3.

2

O tipo mais comum de aplicação envolve o problema genérico de afectação de recursos limitados da melhor forma possível (ou seja, óptima) entre actividades que competem entre si.

Programação linear: Para que serve?

Utilização eficiente de recursos

Page 2: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

2

3

•  A Programação Linear (PL) recorre a um modelo matemático para descrever o problema em causa.

•  O adjectivo linear significa que todas as funções matemáticas neste modelo têm de ser funções lineares.

•  A palavra programação não se refere a programação de computadores; mas é essencialmente um sinónimo para planeamento.

Programação linear: Características

4

Exemplo A empresa WYNDOR GLASS CO. produz produtos em vidro de alta qualidade, incluindo janelas e portas de vidro em três fábricas. A gestão de topo decidiu descontinuar produtos não rentáveis, libertando capacidade de produção para lançar dois novos produtos que têm um grande potencial de vendas. •  Produto 1: Uma porta de vidro com moldura em alumínio •  Produto 2: Uma janela com moldura em madeira

PL: O exemplo Wyndor Glass Co.

Page 3: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

3

5

Produto 1

PL: O exemplo Wyndor Glass Co.

Fábrica 1 Fábrica 2 Fábrica 3

Produto 2

Que combinação poderá ser mais

rentável?

6

Definição do problema: Determinar quais devem ser as taxas de produção dos dois produtos de modo a maximizar o lucro total, sujeito às restrições impostas pelas capacidades de produção disponíveis nas três fábricas. (Cada produto será produzido em lotes de 20, assim a taxa de produção é definida como o número de lotes a produzir por semana.)

PL: O exemplo Wyndor Glass Co.

Page 4: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

4

7

A equipa de IO identificou os dados que necessitam ser reunidos:

PL: O exemplo Wyndor Glass Co.

1.  Número de horas de tempo de produção disponível por semana em cada fábrica para estes novos produtos.

2.  Número de horas de tempo de produção usado em cada fábrica para cada lote produzido de cada novo produto.

3.  Lucro por lote produzido de cada novo produto.

8

PL: O exemplo Wyndor Glass Co.

Page 5: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

5

9

Formulação como um problema de programação linear:

PL: O exemplo Wyndor Glass Co.

Sejam

Então x1 e x2 são as variáveis de decisão do modelo.

O objectivo é escolher os valores de x1 e x2 de modo a

usando o lucro por lote referido na linha de baixo da Tabela 3.1 (que se mostrou no slide anterior).

x1 = número de lotes do produto 1 produzidos por semana x2 = número de lotes do produto 2 produzidos por semana Z = lucro total semanal (em milhares de dólares) obtidos com a produção destes dois produtos

Maximizar Z = 3x1 +5x2

10

PL: O exemplo Wyndor Glass Co.

Cada lote do produto 1 produzido por semana usa 1 hora de tempo de produção por semana na Fábrica 1, enquanto que só existem 4 horas por semana disponíveis.

=> x1 ≤ 4 A Fábrica 2 impõe a restrição 2x2 ≤ 12. O número de horas de tempo de produção utilizadas por semana na Fábrica 3 escolhendo x1 e x2 como as taxas de produção dos produtos será 3x1 + 2x2

=> 3x1 + 2x2 ≤ 18

Page 6: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

6

11

PL: O exemplo Wyndor Glass Co.

Na linguagem da programação linear, o problema consiste em escolher os valores de x1 e de x2 de modo a

Variáveis de decisão não negativas

Maximizar Z = 3x1 +5x2 ,

sujeito às restrições

e

12

PL: O exemplo Wyndor Glass Co.

Como este problema de programação matemática só tem duas variáveis de decisão nós podemos representá-lo graficamente tendo x1 e x2 como eixos.

Solução gráfica:

O primeiro passo consiste em identificar os valores de (x1, x2) que são permitidos pelas restrições. Para começar, veja-se que as restrições de não negatividade x1 ≥ 0 e x2 ≥ 0 obrigam (x1, x2) a situar-se no lado positivo dos eixos, ou seja, no primeiro quadrante. Depois, observe-se que x1 ≤ 4 significa que (x1, x2) não estar situado à direita da recta x1 = 4.

Page 7: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

7

13

PL: O exemplo Wyndor Glass Co.

De modo semelhante, a restrição 2x2 ≤ 12 (ou x2 ≤ 6) implica que a recta 2x2 = 12 deverá ser adicionada à fronteira da região permitida. A restrição final 3x1 + 2x2 ≤ 18 requer adicionar uma nova linha de fronteira 3x1 + 2x2 = 18 A região de valores permissíveis para (x1, x2), assinalada a cinzento no gráfico, é designada por região admissível.

14

PL: O exemplo Wyndor Glass Co.

O passo final consiste em escolher o ponto da região admissível que maximiza o valor de Z = 3x1 + 5x2. Podemos começar por tentativa e erro. Primeiro tentamos, arbitrariamente, Z = 10. Desenhando a recta 3x1 + 5x2 = 10 podemos ver que existem muitos pontos desta linha que estão dentro da região admissível. De seguida experimentamos 3x1 + 5x2 = 20, que também tem muitos pontos dentro da região. Notem que as duas rectas (Z = 10 e Z = 20) são paralelas

Page 8: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

8

15

PL: O exemplo Wyndor Glass Co.

Não se trata de uma coincidência, pois qualquer recta assim construída tem a forma Z = 3x1 + 5x2 para o valor escolhido de Z, o que implica que

x2 = – 3/5 x1 + 1/5 Z Esta última equação demonstra que o declive da recta é – 3/5 (uma vez o incremento de uma unidade em x1 corresponde a um incremento de – 3/5 em x2, enquanto que a intersecção da recta com o eixo x2 é 1/5 Z. O facto de o declive estar fixado em – 3/5 significa que todas as rectas construídas desta forma são paralelas.

16

PL: O exemplo Wyndor Glass Co.

Comparando as rectas 3x1 + 5x2 = 10 e 3x1 + 5x2 = 20, verificamos que a que tem o maior valor de Z (Z = 20) está mais para cima e mais afastada da origem do que a outra recta (Z = 10). Estas observações implicam que o nosso procedimento de tentativa e erro para construir rectas não envolve mais do que desenhar uma família de rectas paralelas que contenham pelo menos um ponto da região admissível e selecionar a recta que corresponda ao maior valor de Z.

Page 9: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

9

17

PL: O exemplo Wyndor Glass Co.

A recta paralela que contém o ponto (2, 6), indica que a solução óptima é x1= 2 e x2 = 6. A equação desta recta é 3x1 + 5x2 = 3(2) + 5(6) = 36 = Z, a qual indica que o valor óptimo de Z é 36. Depois do que vimos como é que podemos encontrar a solução óptima de uma forma expedita?

18

PL: O exemplo Wyndor Glass Co.

Este procedimento é referido como o método gráfico de programação linear. Pode ser utilizado para resolver qualquer problema de programação linear com duas variáveis de decisão. Já será mais difícil, mas possível, utilizar este método para resolver problemas com três variáveis de decisão, mas não mais de três. Quando temos problemas de programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo A equipa de IO utilizou esta abordagem para encontrar a melhor solução, x1= 2 e x2 = 6, com Z = 36. Esta solução indica que a empresa Wyndor Glass Co. deverá produzir os produtos 1 e 2 com as taxas de produção de 2 lotes por semana e 6 lotes por semana, respectivamente, de que resultará um lucro total de 36 mil dólares por semana. De acordo com o modelo, nenhuma outra combinação de produção dos dois produtos será mais rentável.

Page 10: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

10

19

O modelo de PL: Terminologia

Um modelo de PL coloca o problema em termos da decisão acerca dos níveis de actividade, em que x1, x2, . . . , xn são designadas por variáveis de decisão. Os valores de cj, bi, e aij (com i = 1, 2, . . . , m e j = 1, 2, . . . , n) são as constantes (inputs) do modelo, que também são designados por parâmetros do modelo.

(Uma) forma normalizada do modelo (Hillier and Lieberman) Este problema genérico de afectar recursos a actividades pode ser formulados através de um modelo matemático. Em particular, este modelo servirá para encontrar os valores de x1, x2, . . . , xn de modo a maximizar sujeito às restrições e

20

O modelo de PL: Terminologia

Page 11: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

11

21

O modelo de PL: Terminologia

Qualquer situação cuja formulação matemática se adeque a este modelo é um problema de programação linear. Verifique-se que o modelo para o problema Wyndor Glass Co. se adequa à forma normalizada, com m = 3 e n = 2. A terminologia usual para um problema de programação linear pode agora ser sumarizada. A função a ser maximizada, c1x1 + c2x2 + … + cnxn, é designada por função objectivo. As limitações (ou constrangimentos) são normalmente referidas como restrições. As primeiras m restrições (aquelas que são função de todas as variáveis ai1x1 + ai2x2 + ainxn no primeiro termo) são designadas como restrições funcionais (or restrições estruturais). As restrições xj ≥ 0 são chamadas restrições de não negatividade (ou condições de não negatividade).

22

O modelo de PL: Terminologia

Outras formas

O modelo precedente não se ajusta à forma natural de alguns problemas lineares. Outras formas legítimas são as seguintes: 1.  Minimizar a função objectivo ao invés de a maximizar:

2.  Algumas restrições funcionais utilizarem uma inequação com sinal de maior ou igual:

3.  Algumas restrições funcionais em forma de equação:

4.  Algumas variáveis de decisão sem a restrição de não negatividade:

Qualquer problema que combine algumas ou todas estas formas com partes do modelo precedente continua a ser um problema de programação linear.

ai1x1 + ai2x2 ++ ainxn ≥ bi para alguns valores de i.

Minimizar Z = c1x1 + c2x2 ++ cnxn .

ai1x1 + ai2x2 ++ ainxn = bi para alguns valores de i.

x j para alguns valores de j.

Page 12: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

12

23

O modelo de PL: Terminologia

Terminologia para as soluções do modelo Quaisquer valores definidos para as variáveis de decisão (x1, x2, . . . , xn) constituem uma solução, independentemente de ser ou não uma solução desejável ou admissível (possível). Diferentes tipos de soluções são identificadas utilizando adjectivos apropriados.

Um solução admissível (possível) é uma solução que satisfaz todas as restrições. Um solução não admissível (impossível) é uma solução que viola pelo menos uma restrição.

No exemplo, os pontos (2, 3) e (4, 1) na figura são soluções admissíveis (possíveis) enquanto que os pontos (–1, 3) e (4, 4) são soluções não admissíveis. A região admissível (assinalada a cinzento na figura) corresponde ao conjunto de todas as soluções admissíveis.

24

O modelo de PL: Terminologia

Um problema pode não ter soluções admissíveis

Page 13: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

13

25

O modelo de PL: Terminologia

Se existirem soluções admissíveis, o objectivo da programação linear é encontrar a melhor solução admissível, medida pelo valor da função objectivo do modelo. Uma solução óptima é uma solução admissível que tem o melhor valor na função objectivo.

A maior parte dos problemas só terá uma solução óptima. Contudo, é possível terem mais do que uma. Como é o caso ilustrado na figura à esquerda. Tal como neste caso, qualquer problema que tenha múltiplas soluções óptimas terá infinitas soluções óptimas, cada uma delas com o mesmo valor óptimo.

26

O modelo de PL: Terminologia

Outra possibilidade é um problema não ter soluções óptimas. Isso somente poderá ocorrer se (1) não tiver soluções admissíveis (2) as restrições não impedirem que o valor da função objectivo melhore (Z) infinitamente. O último caso é referido como um problema não limitado.

Como ilustração, esse caso poderá ocorrer caso as duas restrições funcionais forem erradamente apagadas no exemplo, como se ilustra na figura à esquerda.

Page 14: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

14

27

O modelo de PL: Terminologia

Um tipo de solução que tem um papel-chave no algoritmo simplex é o chamado ponto extremo da região admissível. Relação entre soluções óptimas e

pontos extremos : Considere qualquer problema de programação linear com soluções admissíveis e uma região admissível limitada. O problema tem de ter soluções em pontos extremos e pelo menos uma solução óptima. Adicionalmente, a melhor solução admissível de um ponto extremo será uma solução óptima. Consequentemente, se um problema tem uma única solução óptima, essa solução será um ponto extremo. Se o problema tiver múltiplas soluções óptimas, pelo menos duas delas são pontos extremos.

28

O modelo de PL: Assunções

Assunção da proporcionalidade (função objectivo e restrições funcionais) A contribuição de cada actividade para o valor da função objectivo Z é proporcional ao nível da actividade xj, tal como é representada pelo termo cjxj na função objectivo. De forma semelhante, a contribuição de cada actividade para o membro esquerdo de cada restrição funcional é proporcional ao nível da actividade xj, tal como é representada pelo termo aijxj na restrição.

Page 15: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

15

29

O modelo de PL: Assunções

Assunção da aditividade Todas as funções de um modelo de programação linear (seja a função objectivo ou a função constante no membro esquerdo de uma restrição funcional) é a soma das contribuições individuais das respectivas actividades.

30

O modelo de PL: Assunções

Assunção da divisibilidade (está relacionada com os valores permitidos para as variáveis de decisão) As variáveis de decisão podem tomar num problema de programação linear podem tomar qualquer valor incluindo valores não inteiros, que satisfaçam as restrições funcionais e as restrições de não negatividade.

Assunção da certeza (está relacionada com os parâmetros do modelo, designadamente, com os coeficientes da função objectivo cj, os coeficientes das restrições funcionais aij, e com os termos independentes das restrições funcionais bi) Assume-se que o valor atribuído a cada parâmetro de um problema de programação linear é uma constante conhecida.

Page 16: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

16

31

O modelo de PL: Assunções

As assunções em perspectiva Um modelo matemático é uma representação simplificada de um problema real. Valores aproximados e assunções simplificativas são geralmente requeridas para se obter um modelo tratável. Adicionar demasiados pormenores e precisão pode tornar o modelo demasiado complexo para permitir uma análise útil do problema. Tudo o que é realmente necessário é que exista uma alta correlação entre a predição do modelo e o que deverá efectivamente ocorrer no problema real. É muito comum em aplicações reais de programação linear que quase nenhuma das quatro assunções seja completamente cumprida. Exceptuando talvez a assunção da divisibilidade, podem encontrar-se pequenas disparidades. Isto é especialmente verdade para a assunção da certeza, pelo que a análise de sensibilidade normalmente compensa a violação desta assunção.

32

Formular e resolver problemas de PL com o Excel

Formular e resolver o exemplo da Wyndor Glass Co. LP no Excel

Nota: Existe um solver grátis para o Excel 2011 para Mac. Pode ser descarregado da página da Frontline Solvers: http://www.solver.com/mac/mac-solvers.htm

Page 17: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

17

33

Formular e resolver problemas de PL com o Excel

34

Formular e resolver problemas de PL com o Excel

Page 18: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

18

35

Formular e resolver problemas de PL com o Excel

36

Formular e resolver problemas de PL com o Excel

Page 19: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

19

37

Formular e resolver problemas de PL com o Excel

38

Formular e resolver problemas de PL com o Excel

Page 20: Programação linear I - Técnico Lisboa · programação linear mais complexos recorremos ao algoritmo simplex. Conclusão do exemplo

20

39

Formular e resolver problemas de PL com o Excel

40

Formular e resolver problemas de PL com o Excel