Study/R
[R] LP, 선형계획법 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$solution |
python에서 구현하는 방법이 궁금하다면
2019/05/28 - [IT] - [python] LP, 선형계획법 python에서 구현