AULA 5: MODELAGEM MATEMÁTICA DE PROBLEMAS LINEARES
PPGEC/UFF
Verifique ao final desta aula se você é capaz de:
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.
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\)
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.
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.
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)\}\)
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 |
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.
Origem: 1-Recife e 2-Manaus; Destinos: 5-São Paulo e 6-Rio de Janeiro
Transbordo: 3-Campinas e 4-Vitória
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)\}\)
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 |
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.
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\).
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)\}\)
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 |
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)
solucaoSuccess: 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
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)
solucaoSuccess: 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 |
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.
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.
Mestrado em Engenharia Civil/UFF