Teoria de Decisão I

AULA 5: MODELAGEM MATEMÁTICA DE PROBLEMAS LINEARES

Profa. Luciane Alcoforado

PPGEC/UFF

Objetivos

Verifique ao final desta aula se você é capaz de:

  • Desenvolver modelos matemáticos de otimização linear para as situações problema apresentadas (Si).
  • Gerar soluções para as situações problema apresentadas (Ap).
  • Validar os modelos elaborados por meio da análise das soluções obtidas (An).

Roteiro da Aula

  • Revisão de modelagem do problema de transporte
  • Modelo de problema de transporte com transbordo.
  • Modelo de roteamento de veículos

Modelo Clássico de Transporte

Contexto: Duas usinas fornecedoras de vigas metálicas localizam-se hipotéticamente em Recife e Manaus. Obras em São Paulo e Rio de Janeiro possuem para a próxima semana uma demanda de 50 e 100 peças de viga W respectivamente. O estoque das mesmas em Recife e Manaus é de 40 e 150 respectivamente. Considerando o custo de transporte de cada peça enviada entre as cidades sejam: Recife-São Paulo (R$200,00); Manaus-São Paulo (R$300,00); Recife-Rio de Janeiro (R$280,00) Manaus-Rio de Janeiro (R$350,00). Elabore o modelo de transporte de custo mínimo.

Solução

Critério de Otimalidade: Minimizar o custo do transporte das peças.

Definição das variáveis de decisão:

\(x_{ij}\): número de peças enviadas da cidade de origem \(i\) para a cidade de destino \(j\), \(i=1 (Recife),2(Manaus)\) e \(j=\) 1(São Paulo), 2(Rio de Janeiro)

Função Objetivo:

min \(z=200x_{11} + 280x_{12} + 300x_{21} + 350x_{22}\)

Restrições

\[\begin{gather*} R1: x_{11} + x_{12} \space \le \space 40 \space (Oferta \space de \space peças \space O1)\\ R2: x_{21} + x_{22} \space \le \space 150 \space (Oferta \space de \space peças \space O2)\\ R3: x_{11} + x_{21}\space \ge \space 50 \space (Demanda \space da \space cidade \space 1)\\ R4: x_{12} + x_{22} \space \ge \space 100 \space (Demanda \space da \space cidade \space 2)\\ \end{gather*}\]

\(x_{ij} \ge 0, \space \forall i,j=1,2\)

Pontos de transbordo

Um ponto de transbordo é uma facilidade como centro de distribuição, terminal, porto marítimo ou fábrica que pode conectar as origens e destinos, com o objetivo de reduzir os custos logísticos.

G O1 O1 T1 T1 O1->T1 T2 T2 O1->T2 Tk Tk O1->Tk O2 O2 O2->T1 O2->T2 O2->Tk On On On->T1 On->T2 On->Tk D1 D1 T1->D1 D2 D2 T1->D2 Dm Dm T1->Dm T2->D1 T2->D2 T2->Dm Tk->D1 Tk->D2 Tk->Dm

Considere pontos de transbordo

Suponha agora que a oferta de 1-Recife e 2-Manaus seja enviada até um ponto de transbordo localizado em 3-Campinas e de lá é entregue ao cliente final. Agora o custo de envio de cada peça de 1-Recife ou 2-Manaus para 3-Campinas é de R$150,00 por peça e, cada trecho de 3-Campinas para 4-São Paulo ou 5-Rio de Janeiro é respectivamente R$80,00 e R$100,00 por peça.

G 1 1 3 3 1->3 2 2 2->3 4 4 3->4 5 5 3->5

Modelo com transbordo

Critério de Otimalidade: Minimizar o custo do transporte das peças.

Definição das variáveis de decisão:

\(x_{ij}\): número de peças enviadas do ponto \(i\) para o ponto\(j\), tal que \(i=1,..,3\) e \(j=3, ...,5\) sendo 1-Recife, 2-Manaus, 3-Campinas, 4-São Paulo e 5-Rio de Janeiro.

Função Objetivo:

min \(z=150x_{13} + 150x_{23} + 80x_{34} + 100x_{35}\)

Restrições

\[\begin{gather*} R1: x_{13} \space \le \space 40 \space (Oferta \space de \space peças \space O1)\\ R2: x_{23} \space \le \space 150 \space (Oferta \space de \space peças \space O2)\\ R3: x_{34} \space \ge \space 50 \space (Demanda \space da \space cidade \space 1)\\ R4: x_{35} \space \ge \space 100 \space (Demanda \space da \space cidade \space 2)\\ R5: x_{13} + x_{23} - x_{34} - x_{35} \space = \space 0 \space (Equilibrio \space do \space tranbordo \space 1)\\ \end{gather*}\]

\(x_{ij} \ge 0, \space \forall (i,j) \in \{(1,3), (2,3),(3,4),(3,5)\}\)

Solução com transbordo e sem transbordo

Success: the objective function is 36500 
[1]  40 110  50 100
Var Quant_pecas
x13 40
x23 110
x34 50
x35 100
Success: the objective function is 45800 
[1]  40   0  10 100
Var Quant_pecas
x11 40
x12 0
x21 10
x22 100

Exercício

Considere o mesmo problema de envio de peças, considerando dois pontos de transbordo, 3-Campinas e 4-Vitória e os destinos 5-São Paulo ou 6-Rio de Janeiro, com o custo de transporte (R$) \(c_{ij}\) de cada peça dado por \(c_{13}=c_{23}=150\); \(c_{14}=100\); \(c_{24}=180\);\(c_{35}=80\);\(c_{36}=100\);\(c_{45}=130\); \(c_{46}=50\).

Apresente o modelo completo e sua solução ótima.

Rede

Origem: 1-Recife e 2-Manaus; Destinos: 5-São Paulo e 6-Rio de Janeiro

Transbordo: 3-Campinas e 4-Vitória

G 1 1 3 3 1->3 4 4 1->4 2 2 2->3 2->4 5 5 3->5 6 6 3->6 4->5 4->6

Modelo com transbordo

Critério de Otimalidade: Minimizar o custo do transporte das peças.

Definição das variáveis de decisão:

\(x_{ij}\): número de peças enviadas do ponto \(i\) para o ponto\(j\), tal que \(i=1,..,4\) e \(j=3, ...,6\) sendo 1-Recife e 2-Manaus, 3-Campinas, 4-Vitória, 5-São Paulo e 6-Rio de Janeiro.

Função Objetivo:

min \(z=150x_{13} + 150x_{23} + 100x_{14} + 180x_{24} + 80x_{35} + 100x_{36} + 130x_{45} + 50x_{46}\)

Restrições

\[\begin{gather*} R1: x_{13} + x_{14} \space \le \space 40 \space (Oferta \space de \space peças \space O1)\\ R2: x_{23} + x_{24} \space \le \space 150 \space (Oferta \space de \space peças \space O2)\\ R3: x_{35} + x_{45} \space \ge \space 50 \space (Demanda \space da \space cidade \space 1)\\ R4: x_{36} + x_{46} \space \ge \space 100 \space (Demanda \space da \space cidade \space 2)\\ R5: x_{13} + x_{23} - x_{35} - x_{36} \space = \space 0 \space (Equilibrio \space do \space tranbordo \space 1)\\ R6: x_{14} + x_{24} - x_{45} - x_{46} \space = \space 0 \space (Equilibrio \space do \space tranbordo \space 2)\\ \end{gather*}\]

\(x_{ij} \ge 0, \space \forall (i,j) \in \{(1,3), (2,3),(1,4), (2,4),(3,5),(3,6), (4,5),(4,6)\}\)

Solução com dois pontos de transbordo

1-Recife, 2-Manaus, 3-Campinas, 4-Vitória, 5-São Paulo e 6-Rio de Janeiro.

Success: the objective function is 31300 
[1]   0  50  40  60  50   0   0 100
Var Quant_pecas
x13 0
x23 50
x14 40
x24 60
x35 50
x36 0
x45 0
x46 100

Roteamento de Veículos

Envolve determinar as rotas mais eficientes para um conjunto de veículos que devem atender a uma série de locais de destino, chamados de clientes, levando em consideração diversas restrições. O objetivo é minimizar os custos totais, como o tempo de viagem, distância percorrida, custo de combustível, etc.

A rede de transporte

Deseja-se partir do ponto 1 e chegar ao ponto 6 ao menor custo possível. Sabendo que \(c_{12}=c_{13}=c_{14}=10\); \(c_{25}=5\); \(c_{26}=6\); \(c_{35}=c_{36}=5\); \(c_{45}=c_{46}=1\); \(c_{52}=5\); \(c_{54}=0\).

G 1 1 2 2 1->2 3 3 1->3 4 4 1->4 5 5 2->5 6 6 2->6 3->5 3->6 4->5 4->6 5->2 5->4

Modelo de roteamento

Critério de Otimalidade: Minimizar o custo da rota.

Definição das variáveis de decisão:

\(x_{ij}\): 1 se o trecho (i,j) faz parte da rota e 0 em caso contrário. \((i,j) \in \{(1,2),(1,3),(1,4), (2,5),(2,6),(3,5),(3,6), (4,5), (4,6), (5,2),(5,4)\}\)

Função Objetivo:

min \(z=10x_{12}+10x_{13}+10x_{14}+5x_{25}+6x_{26}\) \(+5x_{35}+5x_{36}+1x_{45}+1x_{46}+5x_{52}+0x_{54}\).

Restrições

\[\begin{gather*} R1: x_{12}+x_{13}+x_{14} \space = \space 1 \space (Saída \space da \space Origem \space 1)\\ R2: x_{26}+x_{36}+x_{46} \space = \space 1 \space (Chegada \space no \space destino \space 6)\\ R3: x_{12}+ x_{52} - x_{25} - x_{26}\space = \space 0 \space (Equilibrio \space no \space ponto \space 2)\\ R4: x_{13}- x_{35} - x_{36} \space = \space 0 \space (Equilibrio \space no \space ponto \space 3)\\ R5: x_{14}+ x_{54} - x_{45} - x_{46}\space = \space 0 \space (Equilibrio \space no \space ponto \space 4)\\ R6: x_{25}+ x_{35}+ x_{45} - x_{52} - x_{54}\space = \space 0 \space (Equilibrio \space no \space ponto \space 5)\\ \end{gather*}\]

\(x_{ij} \in \{0,1\}, \space \forall (i,j) \in \{(1,2),(1,3),(1,4), (2,5),(2,6),(3,5),(3,6),\) \((4,5), (4,6), (5,2),(5,4)\}\)

Solução

Rota de custo mínimo: 1-4-6

Success: the objective function is 11 
 [1] 0 0 1 0 0 0 0 0 1 0 0
Trecho Ação
x12 0
x13 0
x14 1
x25 0
x26 0
x35 0
x36 0
x45 0
x46 1
x52 0
x54 0

Código 1 R

Exercício com dois pontos de transbordo

library(lpSolve) #precisa instalar o pacote caso não tenha
coef.objetivo = c(150,150,100,180,80,100,130,50)
x=paste0("x",c(13,23,14,24,35,36,45,46))
        R1 = c(1, 0, 1, 0, 0, 0, 0, 0)
        R2 = c(0, 1, 0, 1, 0, 0, 0, 0)
        R3 = c(0, 0, 0, 0, 1, 0, 1, 0)
        R4 = c(0, 0, 0, 0, 0, 1, 0, 1)
        R5 = c(1, 1, 0, 0,-1,-1, 0, 0)
        R6 = c(0, 0, 1, 1, 0, 0,-1,-1)
restricoes = rbind(R1,R2,R3,R4,R5,R6)
b = c(40, 150, 50, 100, 0,0)
sinal = c("<=","<=",">=",">=" ,"=", "=")
solucao = lpSolve::lp(direction = "min",
                      objective.in = coef.objetivo,
                      const.mat = restricoes, 
                      const.dir = sinal, 
                      const.rhs = b, all.int = T)
solucao
Success: the objective function is 31300 
solucao$solution
[1]   0  50  40  60  50   0   0 100
knitr::kable(data.frame(Var=x,Quant_pecas=solucao$solution))
Var Quant_pecas
x13 0
x23 50
x14 40
x24 60
x35 50
x36 0
x45 0
x46 100

Código 2 R

Roteamento de veículos

library(lpSolve) #precisa instalar o pacote caso não tenha
coef.objetivo = c(10,10,10,5,6,5,5,1,1,5,0)
x=paste0("x",
     c(12,13,14,25,26,35,36,45,46,52,54))
R1 = c(1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0)
R2 = c(0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0)
R3 = c(1, 0, 0,-1,-1, 0, 0, 0, 0, 1, 0)
R4 = c(0, 1, 0, 0, 0,-1,-1, 0, 0, 0, 0)
R5 = c(0, 0, 1, 0, 0, 0, 0,-1,-1, 0, 1)
R6 = c(0, 0, 0,-1, 0,-1, 0,-1, 0, 1, 1)
restricoes = rbind(R1,R2,R3,R4,R5,R6)
b = c(1, 1, 0,0,0,0)
sinal = c("=","=","=","=" ,"=", "=")
solucao = lpSolve::lp(direction = "min",
                      objective.in = coef.objetivo,
                      const.mat = restricoes, 
                      const.dir = sinal, 
                      const.rhs = b, all.int = T)
solucao
Success: the objective function is 11 
solucao$solution
 [1] 0 0 1 0 0 0 0 0 1 0 0
knitr::kable(data.frame(Trecho=x,Ação=solucao$solution))
Trecho Ação
x12 0
x13 0
x14 1
x25 0
x26 0
x35 0
x36 0
x45 0
x46 1
x52 0
x54 0

Leitura e atividade Complementar

Leia o artigo

https://periodicos.uff.br/anaisdoser/article/view/62501/36529

Elabore um problema de roteamento, apresentando a modelagem e a solução ótima, para um contexto da engenharia civil.

Organize a apresentação deste problema para a próxima aula.

Revise

  • Terminou? Revise os conceitos e modelos das aulas anteriores, incluindo o caderno de modelagem. Prepare-se para a avaliação parcial desta unidade.

  • Revise os conceitos sobre modelagem.

  • Revise as hipóteses dos modelos de otimização linear.

  • Revise os itens necessários que um modelo deve conter.

  • Refaça todos os modelos propostos em aula.