R로 선형계획문제 푸는 법
개요
lpSolve
패키지를 사용하면 된다1. 행렬 꼴로 나타난 선형계획문제의 를 넣어서 쓴다.
코드
간단한 예제로써 에서 위와 같은 최대화 문제를 풀어보자. 생새우초밥집에서는 이 문제를 심플렉스 메소드를 써서 손으로 풀어보았고 그 답 를 알고 있다. 이 선형계획문제는
위와 같은 꼴에서 , , 이므로 다음과 옮겨 적고 풀 수 있다. f.obj
는 , f.con
은 , f.rhs
는 다.
library(lpSolve)
f.obj <- c(1, 1)
f.con <- matrix(c(-1, 1,
1, 0,
0, 1), nrow = 3, byrow = TRUE)
f.dir <- c("<=",
"<=",
"<=")
f.rhs <- c(1,
3,
2)
lp("max", f.obj, f.con, f.dir, f.rhs)
lp("max", f.obj, f.con, f.dir, f.rhs)$solution
그 결과는 우리가 이미 알고 있던 것처럼 3 2
다.
> lp("max", f.obj, f.con, f.dir, f.rhs)
Success: the objective function is 5
>
> lp("max", f.obj, f.con, f.dir, f.rhs)$solution
[1] 3 2
환경
- OS: Windows
- R: v4.1.2
- lpSolve v5.6.15