A companhia PetrusNortel atua no setor petroquímico e possui duas plantas. Uma delas é responsável pela produçãoo de polímeros e está localizada em Recife. A outra está localizada em Manaus, sendo responsável pela produçãoo de resina. A fim de reduzir os custos logísticos, os produtos sofrem uma etapa de transbordo em um dos centros de distribuiçãoo, localizados em São Paulo e no Rio de Janeiro. A partir dos centros de distribuição, os produtos são transportados para os clientes finais, localizados em Belo Horizonte, Joinville e Porto Alegre.
A capacidade de produçãoo das fábricas é de 500 unidades em Manaus e 300 em Recife.
A demanda dos consumidores de Belo Horizonte, Joinville e Porto Alegre é de 200, 250 e 350, respectivamente.
Os custos unitários de transporte, das fábricas para os pontos de transbordo e dos pontos de transbordo para os consumidores finais, estão representados nas tabelas abaixo respectivamente.
library(flextable)
custos_cd = data.frame(Fabrica = c("Manaus", "Recife"),
SP = c(8, 7),
RJ = c(10, 6))
custos_cons = data.frame(CD = c("Sao Paulo", "Rio de Janeiro"),
BH = c(2, 1),
JV = c(3, 4),
POA = c(4, 5))
flextable(custos_cd)
Fabrica | SP | RJ |
Manaus | 8 | 10 |
Recife | 7 | 6 |
flextable(custos_cons)
CD | BH | JV | POA |
Sao Paulo | 2 | 3 | 4 |
Rio de Janeiro | 1 | 4 | 5 |
Assim, tem-se que:
\(x13\) = peças transportadas da fábrica de Manaus para o CD de São Paulo.
\(x14\) = peças transportadas da fábrica de Manaus para o CD do Rio de Janeiro.
\(x23\) = peças transportadas da fábrica de Recife para o CD de São Paulo.
\(x24\) = peças transportadas da fábrica de Recife para o CD do Rio de Janeiro.
\(x35\) = peças transportadas do CD de São Paulo para o consumidor de Belo Horizonte.
\(x36\) = peças transportadas do CD de São Paulo para o consumidor de Joinville.
\(x37\) = peças transportadas do CD de São Paulo para o consumidor de Porto Alegre.
\(x45\) = peças transportadas do CD do Rio de Janeiro para o consumidor de Belo Horizonte.
\(x46\) = peças transportadas do CD do Rio de Janeiro para o consumidor de Joinville.
\(x47\) = peças transportadas do CD do Rio de Janeiro para o consumidor de Porto Alegre.
A função objetivo busca minimizar o custo total de transporte: \(min z = 8x13 + 10x14 + 7x23 + 6x24 + 2x35 + 3x36 + 4x37 + 1x45 + 4x46 + 5x47\)
R1 \(x13 + x14 = 500\) (Fábrica de Manaus)
R2 \(x23 + x24 = 300\) (Fábrica de Recife)
R3 \(x35 + x45 = 200\) (Consumidor de Belo Horizonte)
R4 \(x36 + x46 = 250\) (Consumidor de Joinville)
R5 \(x37 + x47 = 350\) (Consumidor de Porto Alegre)
R6 \(x13 + x23 = x35 + x36 + x37\) (CD de São Paulo) -> \(x13 + x23 - x35 - x36 - x37 = 0\)
R7 \(x14 + x24 = x45 + x46 + x47\) (CD do Rio de Janeiro) -> \(x14 + x24 - x45 - x46 - x47 = 0\)
\(xij \geq 0, i = 1, 2, 3; j = 1, 2, 3\)
######## Carregar pacotes lpSolve#################
suppressMessages(require(lpSolve))
######## Dados do problema #######################
# coeficientes na função objetivo
func.objetivo <- c(8, 10, 7, 6, 2, 3, 4, 1, 4, 5)
# coeficientes nas restrições.
library(readxl)
restricoes <- read_excel("~/POSCIVIL/TEORIA2/SIMPLEX/restricoes.xlsx")
coeficientes.restricoes <- rbind(restricoes$R1,
restricoes$R2,
restricoes$R3,
restricoes$R4,
restricoes$R5,
restricoes$R6,
restricoes$R7)
# sinal das restrições. Deve obedecer a ordem da matriz de coeficientes
direcao.restricoes <- c("=", "=", "=", "=", "=", "=", "=")
# limite das restrições. Deve obedecer a ordem da matriz de coeficientes
limites.restricoes <- c(500, 300, 200, 250, 350, 0, 0)
######## Solução ###############
solucao.problema <- lpSolve::lp(direction = "min",
objective.in = func.objetivo,
const.mat = coeficientes.restricoes,
const.dir = direcao.restricoes,
const.rhs = limites.restricoes,
all.int=T)
######### Resultado #############
# valor da função objetivo na solução
solucao.problema$objval
[1] 8250
# Valores para as variáveis de escolha que geram máximo ou mínimo dependendo do problema
solucao.problema$solution
[1] 500 0 0 300 0 150 350 200 100 0
Após rodar o algoritmo, chega-se a solução ótima do valor total de R$ 8250,00.
Para isso é necessário que:
Todas as 500 peças produzidas em Manaus saiam para o CD de São Paulo
Todas as 300 peças produzidas em Recife saiam para o CD do Rio de Janeiro
Ao chegar nos Centros de Distribuição, Sao Paulo enviará:
150 peças para Joinville;
e 350 peças para Porto Alegre, atendendo assim a sua demanda.
Já o CD do Rio de Janeiro enviará:
FÁVERO, Luiz Paulo. Pesquisa Operacional para curso de engenharia / Luiz Paulo Fávero, Patrícia Belfiore. - Rio de Janeiro: Elsevier, 2013.