-
[R] LP, 선형계획법 R에서 구현Study/R 2019. 5. 28. 14:15
먼저 선형 계획법에 대한 개념이 궁금하시다면 이전 글을 확인해주세요
2019/05/28 - [IT] - [분석/통계] LP, 선형계획법
예를 들어 아래와 같은 문제가 있다면!
[문제] 어떤 작전부대의 편성을 계획하고 있다.
이때 이 작전에 효과적인 전투원은 A, B, C 세 가지 타입이 있다.
각 타입의 전투원은 작전을 수행할 때 A타입은 10포인트, B타입은 8포인트, C타입은 9포인트의 효과를 실현할 것으로 기대된다.
부대는 각 타입의 전투원을 몇 명씩 편성해야 작전 효과를 극대화할 수 있을까?
이때 훈련비용(단위: 천만원)은 각 타입 별로 단위 당 2, 3, 1이 소요되며, 합계 1,000을 초과할 수 없다.
전투 준비시간(단위: 시간)은 각각 5, 6, 6이 소요되며, 합계 2,400을 초과할 수 없다.
전투참가가능 총인원은 700명을 초과할 없다.
또한 본부에서는 특별 명령을 통하여 B타입의 전투원은 160명 이상을 편성하라고 지시하였다.
목적함수
Max. Z = 10x1 + 8x2 +9x3
제약조건
s. t. 2x1 + 3x2 + x3 <= 1000
5x1 + 6x2 + 6x3 <= 2400
x1 + x2 + x3 <= 700
x2 >= 160
x1 >= 0,
x3 >= 0아래와 같이 구현해주시면 됩니다!
install.packages(lpSolve) # 왠지 모르겠눈데 다운로드 안됨 툴에서 설치해야함
library("lpSolve")
# 목적식 (의 계수)
z <- c(10, 8, 9)
# 제약식의 좌변 (계수)
A <- matrix(c(2, 3, 1,
5, 6, 6,
1, 1, 1,
0, 1, 0,
1, 0, 0,
0, 0, 1),
nrow=6, byrow=TRUE)
# 제약식의 우변 (해)
B <- c(1000, 2400, 700, 160, 0, 0)
# 제약식의 부등호
dir <- c("<=", "<=", "<=", ">=", ">=", ">=")
# 최적해
opt <- lp(direction="max", # 목적식 조건
objective.in = z, #목적식의 계수
const.mat = A, # 제약식의 좌변
const.dir = dir, # 제약식의 부등호
const.rhs = B, # 제약식의 우변
all.int = T)
# 결과
opt
# 결정변수
opt$solutionpython에서 구현하는 방법이 궁금하다면
2019/05/28 - [IT] - [python] LP, 선형계획법 python에서 구현
'Study > R' 카테고리의 다른 글
[R] R에서 ODBC를 이용하여 mssql 연동 (2) 2019.05.27 [R] R에서 MicroSoft R 사용하기 (2) 2019.05.27