A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

PESQUISA OPERACIONAL PARA A ENGENHARIA DE PRODUÇÃO II **Aula Básica de GAMS** Profa. Vitória Pureza 1º Semestre Aulas 5 e 6.

Apresentações semelhantes


Apresentação em tema: "PESQUISA OPERACIONAL PARA A ENGENHARIA DE PRODUÇÃO II **Aula Básica de GAMS** Profa. Vitória Pureza 1º Semestre Aulas 5 e 6."— Transcrição da apresentação:

1 PESQUISA OPERACIONAL PARA A ENGENHARIA DE PRODUÇÃO II **Aula Básica de GAMS** Profa. Vitória Pureza 1º Semestre Aulas 5 e 6

2 Roteiro Implementação passo a passo de um modelo de programação matemática Alguns detalhes de implementação Brook, Kendrick & Meeraus (1992)

3 Um Modelo de Transporte Min 132x 11 + 87x 12 + 97x 13 + 103x 14 + 85x 21 + 91x 22 + 19x 23 + 215x 24 + 106x 31 + 89x 32 + 100x 33 + 98x 34 sujeito a: x 11 + x 12 + x 13 + x 14 ≤ 135 x 21 + x 22 + x 23 + x 24 ≤ 56 Restrições de suprimento x 31 + x 32 + x 33 + x 34 ≤ 93 x 11 + x 21 + x 31 ≥ 62 x 12 + x 22 + x 32 ≥ 83 Restrições de demanda x 13 + x 23 + x 33 ≥ 39 x 14 + x 24 + x 34 ≥ 91 x ij ≥ 0  i=1,2,3;  j=1,2,3,4Restrições de sinal Variáveis de decisão: x ij = unidades de produto enviados da fábrica i ao cliente j

4 ÍNDICES i = fábricas j = clientes DADOS DE ENTRADA a i = suprimento do produto pela fábrica i (unidades) b j = demanda do cliente j pelo produto (unidades) c ij = custo unitário de transporte de i para j ($/unidade) j1234 b(j)62833991 i123 a(i)1355693 c(i,j)j i1234 11328797103 2859119215 31068910098

5 Variáveis de decisão x ij = unidades de produtos produzidos pela fábrica i e enviados ao cliente j onde x ij ≥ 0,  i=1..3,  j=1..4. Restrições Capacidade da fábrica i: Demanda do cliente j: Função objetivo

6 Sets i fabricas /fab1, fab2, fab3/ j clientes /cli1, cli2, cli3, cli4/; Parameter a(i) capacidade da fabrica i /fab1 135 fab2 56 fab3 93/ b(j) demanda do cliente j /cli1 62 cli2 83 cli3 39 cli4 91/; Table c(i,j) custos unitarios de suprimento do cliente j pela fabrica i cli1cli2 cli3cli4 fab1 132 87 97 103 fab2 85 91 19 215 fab3 106 89 100 98; Variables x(i,j) quantidade de produto enviado pela fabrica i para o cliente j z custo total em $; Positive variable x; Equations custo funcao objetivo capacidade(i) limite de capacidade da fabrica i demanda(j) necessidade de suprimento do cliente j; custo.. z =e= sum((i, j), c(i,j)*x(i,j)); capacidade(i).. sum(j,x(i,j)) =l= a(i); demanda(j).. sum(i,x(i,j)) =g= b(j); model transp1 /all/; solve transp1 using lp minimizing z; display x.l, x.m; IMPLEMENTAÇÃO EM GAMS DO MODELO DE TRANSPORTE x*=(x 11 *, x 12 *,..., x 34 *) MÉTODO

7 Sets i fabricas /fab1, fab2, fab3/ j clientes /cli1, cli2, cli3, cli4/; Texto para documentação Equivalente a i={fab1, fab2, fab3} É também válido: i={fab1*fab3} Equivalente a i={fab1, fab2, fab3} É também válido: i={fab1*fab3} Correspondem aos índices algébricos das representações do modelo Correspondem aos índices algébricos das representações do modelo

8 Dados de Entrada: Parameter Parameter a(i) capacidade da fabrica i /fab1 135 fab2 56 fab3 93/ b(j) demanda do cliente j /cli1 62 cli2 83 cli3 39 cli4 91/; Declara a existência do parâmetro “a” e de seu domínio em i Declara a existência do parâmetro “a” e de seu domínio em i Texto para documentação Designa o valor de “a” para cada i. A lista deve estar entre / / e os pares i e a(i) precisam estar separados por vírgula ou em linhas diferentes Designa o valor de “a” para cada i. A lista deve estar entre / / e os pares i e a(i) precisam estar separados por vírgula ou em linhas diferentes

9 Dados de Entrada: Scalar Scalar v penalidade sobre unidade faltante /160/; Declara a existência do escalar (parâmetro sem domínio) “v” Declara a existência do escalar (parâmetro sem domínio) “v” Texto para documentação Designa o valor de “v”

10 Dados de Entrada: Table Table c(i,j) custos unitarios de suprimento do cliente j pela fabrica i cli1 cli2 cli3 cli4 fab1 132 87 97 103 fab2 85 91 19 215 fab3 106 89 100 98; Declara a existência da tabela “c” e seu domínio em i e j Declara a existência da tabela “c” e seu domínio em i e j Texto para documentação Designa o valor de “c” a cada i (linha) e j (coluna) Designa o valor de “c” a cada i (linha) e j (coluna)

11 Dados de Entrada: Designação Direta Table d(i,j) distancia entre fabrica i e cliente j em km cli1 cli2 cli3 cli4 fab1 61 43 45 52 fab2 43 47 9 106 fab3 53 45 50 46; Scalar h custo unitário de transporte por km /5/; Parameter c(i,j) custo unitário de transporte entre fabrica i e cliente j; c(i,j) = h*d(i,j); c(‘fab1’, ‘cli4’) = 100; Designa o valor de “c” a cada i e j Designa o valor de “c” a elementos específicos i e j do domínio Designa o valor de “c” a elementos específicos i e j do domínio Declara a existência do parâmetro “c” e seu domínio em i e j Declara a existência do parâmetro “c” e seu domínio em i e j Texto para documentação Suponha que os custos unitários de transporte c(i,j) precisem ser calculados pela distância entre i e j e por um custo unitário por quilômetro percorrido...

12 Declaração de Variáveis: Variables Variables x(i,j) quantidade de produto enviado da fabrica i para o cliente j z custo total em $; Positive variable x; Declara a variável de transporte x para cada par (i,j) Declara a variável de transporte x para cada par (i,j) Designa a variável z para receber o valor da função objetivo (sem domínio) Designa a variável z para receber o valor da função objetivo (sem domínio) Declara o tipo da variável x (o domínio é omitido) Declara o tipo da variável x (o domínio é omitido)

13 Tipos de Variáveis A variável z que recebe o valor da fo (quantidade a ser otimizada) é do tipo free A declaração para variáveis do tipo free pode ser omitida TIPODOMÍNIO FREE [- , +  ] POSITIVE [0, +  ] NEGATIVE [- , 0] BINARY{0,1} INTEGER{0, 1,...,100}

14 Declaração da Fo e Restrições: Equations Equations custo funcao objetivo capacidade(i) limite de capacidade da fabrica i demanda(j) necessidade de suprimento do cliente j; Declara o nome da função objetivo (custo ) - sem domínio Declara o nome da função objetivo (custo ) - sem domínio Declara o nome das restrições (capacidade e demanda) e seus domínios Declara o nome das restrições (capacidade e demanda) e seus domínios

15 Operações de Somatória sum(j, x(i,j)) sum( (i,j), c(i,j)*x(i,j) ) ? sum( i, sum(j, c(i,j)*x(i,j) ) ) ? Argumento da somatória Índice da somatória Equivalente a

16 Operador Condicional ($) sum( (i) $ (ORD(i) le 4), x(i) ) Significa: “Se a ordem de i for menor ou igual a 4”. Ou seja, considera apenas os termos x(i) dos 4 primeiros “i” na somatória Significa: “Se a ordem de i for menor ou igual a 4”. Ou seja, considera apenas os termos x(i) dos 4 primeiros “i” na somatória Operador condicional: limita o domínio de i na operação para os valores que satisfazem a condição que se segue Operador condicional: limita o domínio de i na operação para os valores que satisfazem a condição que se segue

17 Operador Alias Set i fabricas /fab1, fab2, fab3/ Alias (i,j); Cria um set j com os mesmos elementos do set i. Ou seja, Set j fabricas /fab1, fab2, fab3/) Cria um set j com os mesmos elementos do set i. Ou seja, Set j fabricas /fab1, fab2, fab3/)

18 Designação de Equations custo.. z =e= sum((i, j), c(i,j)*x(i,j)); capacidade(i).. sum(j,x(i,j)) =l= a(i); demanda(j).. sum(i,x(i,j)) =g= b(j); Operadores relacionais Nome e domínio da equation seguido de “..” e um espaço Nome e domínio da equation seguido de “..” e um espaço

19 Observações Importantes Para cada um dos três elementos do domínio i temos uma desigualdade “capacidade” Para cada um dos quatro elementos do domínio j temos uma desigualdade “demanda” Ou seja, com apenas duas linhas, são criadas 3+4 desigualdades

20 Observações Importantes O operador “=“ é usado em designações diretas e o operador “=e=“ é usado na designação de equations Uma designação direta dá o valor desejado ao parâmetro ANTES do problema ser resolvido Uma designação de equation descreve uma relação desejada mas que só pode ser satisfeita DEPOIS do problema ser resolvido OPERADORES RELACIONAIS =l=≤ =g=≥ =e==

21 Declaração Model model transp1 /all/; Comando para definição do modelo a ser resolvido Comando para definição do modelo a ser resolvido Nome do modelo Conjunto de equations que compõem o modelo Conjunto de equations que compõem o modelo

22 Declaração Solve solve transp1 using lp minimizing z; Comando para resolução do modelo Comando para resolução do modelo Especifica o solver (método) a ser utilizado: programação linear Especifica o solver (método) a ser utilizado: programação linear Especifica o tipo de otimização a ser realizada Especifica o tipo de otimização a ser realizada Especifica a variavel que recebe o valor da fo Especifica a variavel que recebe o valor da fo

23 Solvers SOLVERS lpProgramação linear nlpProgramação não-linear mipProgramação linear inteira mista minlpProgramação não-linear inteira mista rminlpProgramação linear inteira mista relaxada mcpProblemas de complementaridade mista cnsSistemas não-lineares restritos

24 Comando Display display x.l, x.m; Pede a impressão de resultados específicos Pede a impressão de resultados específicos Valores das variáveis básicas x(i,j) Valores das variáveis básicas x(i,j) Valores dos custos marginais das variáveis x(i,j) Valores dos custos marginais das variáveis x(i,j)

25 Listagem ---- 41 VARIABLE x.L quantidade de produto enviado pela fabrica i para o cliente j cli1 cli2 cli3 cli4 fab1 83.000 43.000 fab2 17.000 39.000 fab3 45.000 48.000 ---- 41 VARIABLE x.M quantidade de produto enviado pela fabrica i para o cliente j cli1 cli2 cli3 cli4 fab1 21.000 52.000 fab2 30.000 138.000 fab3 7.000 60.000

26 Exercícios 1.Implemente e resolva os exercícios da lista 2. No exercício 2 da lista 2, resolva o modelo do lucro total das duas fábricas.

27 2.Implemente e resolva o exemplo de problema multi-período da aula 4 (produção de barcos). 3.Para o exemplo do exercício 2, considere que a reavaliação da demanda e do planejamento ocorra a cada 2 trimestres. Simule o planejamento com horizonte rolante por 3 avaliações (a cada avaliação, um modelo GAMS deve ser resolvido).

28 Variáveis de Decisão: x t = número de barcos produzidos no trimestre t em horas regulares (  t=1..4) y t = número de barcos produzidos no trimestre t em horas extras (  t=1..4) I t = número de barcos em estoque no trimestre t (  t=1..4) sujeito a: x t ≤ 40  t=1..4 (capacidade de produção com horas regulares) I t-1 + x t + y t = d t + I t  t=1..4 (balanço de estoque) I 0 = 10 (estoque inicial) x t, y t, I t ≥ 0  t=1..4 (sinal)


Carregar ppt "PESQUISA OPERACIONAL PARA A ENGENHARIA DE PRODUÇÃO II **Aula Básica de GAMS** Profa. Vitória Pureza 1º Semestre Aulas 5 e 6."

Apresentações semelhantes


Anúncios Google