운송 문제는 선형 프로그래밍 수업에서 가르치는 고전적인 문제 중 하나입니다. 간단히 말해서 문제는 특정 수요를 가진 특정 고객 세트가 특정 용량을 가진 다른 공급 업체 세트 ( "공급")에 의해 충족되어야한다는 것입니다. 운송 문제에 대한 자세한 설명은 다음과 같습니다. 이것을 읽으십시오 : https://econweb.ucsd.edu/~jsobel/172aw02/notes8.pdf.
R에서 사용할 수있는 lpSolve 패키지는 운송 문제를 모델링하고 해결하는 데 사용할 수 있습니다.
어떻게하는지 보여 드리겠습니다. 3 개의 공급자가 4 명의 고객을 만족시키려는 문제를 정의합니다. 공급 업체는 각각 100, 300, 400 개의 용량을 가지고 있습니다. 고객은 각각 100, 100, 200 및 400을 요구합니다. 또한 공급자 j가 고객 i를 공급하는 비용은 가능한 모든 조합에 대해 정의되고 비용 매트릭스에 명시됩니다.
이 정보를 사용하여 R의 lpSolve 패키지로 운송 문제를 모델링하고 해결할 수 있습니다.
먼저 모델링 파트를 준비합니다.
library(lpSolve)
# 비용 매트릭스 지정
cost.mat <- matrix(nrow=3,ncol=4)
cost.mat[1,] <- 1:4
cost.mat[2,] <- 4:1
cost.mat[3,] <- c(1,4,3,2)
# 이것은 최소화 문제입니다
direction = "min"
# 용량은 초과 할 수 없습니다.
row.signs <- rep("<=",3)
row.rhs <- c(100,300,400)
# 수요가 충족되어야 함
col.signs <- rep(">=",4)
col.rhs <- c(100,100,200,400)
그런 다음 문제를 해결합니다.
# lp 객체 해결 및 할당
solution <- lp.transport(cost.mat = cost.mat,
direction = direction,
row.signs = row.signs,
row.rhs = row.rhs,
col.signs = col.signs,
col.rhs = col.rhs)
"최적"비용을 검토해 보겠습니다.
solution
## Success: the objective function is 1400
운송 문제에 대한 최적의 솔루션을 검토해 보겠습니다 (즉,이 문제에 대한 최적의 재료 흐름).
solution$solution
## [,1] [,2] [,3] [,4]
## [1,] 0 100 0 0
## [2,] 0 0 200 100
## [3,] 100 0 0 300
할당 자 문제는 또 다른 고전적인 문제이며 여기에서 R에서 어떻게 해결했는지 확인할 수 있습니다. 비용 최소화 생산 일정-lp.assign을 사용하여 lpSolve로 할당 문제 해결
최적화 및 시뮬레이션을 전문으로하는 산업 엔지니어 (R, Python, SQL, VBA)
Leave a Reply