Rで線形計画問題を解く方法
📂最適化理論Rで線形計画問題を解く方法
概要
lpSolve
パッケージを使えばよい。行列の形で表示された 線形計画問題 のA,b,c を入力して使用する。
コード
Maximizesubject to−x1x1x1++x2x2x2≤≤≤132
簡単な例として、x1,x2≥0 のような最大化問題を解いてみよう。生エビ寿司店ではこの問題を シンプレックス法 を使って手作業で解いて、その答え(x1∗,x2∗)=(3,2) を知っている。この 線形計画問題 は
Optimizesubject tocTxAx≤b
上のような形で、c=(1,1)、A=−111100、b=(1,3,2) なので次のように書き換えて解くことができる。f.obj
は c、f.con
は A、f.rhs
は b である。
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
結果はすでに知っているように(x1,x2)=(3,2)=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
関連リンク