线性优化 R
Linear Optimization R
我是优化新手,请多多包涵。这是我的问题:
A、B、C、D 和 E 为百分比 (18%,2%,1%,78%,1%)
最大化总和 (A(x) + B(x) + C(x) +D(x) + E(x)) 即最大化 x ( x<=499572)
这样
- A(x) <= 20076
- B(x) <= 8619
- C(x) <= 145
- D(x) <= 465527
- E(x) <= 5205
如何在 R 中解决这个问题?
我正在使用 LPsolve 包,但我可以接受任何建议。
我们重述问题,省略对单个标量变量 x
的正性约束,如:
maximize 1 * x
such that
0.18 * x <= 20076
0.02 * x <= 8619
0.01 * x <= 145
0.78 * x <= 465527
0.01 * x <= 5205
所以作为一个线性程序,我们有以下最优值x
:
library(lpSolve)
constr.mat <- c(.18, .02, .01, .78, .01)
RHS <- c(20076, 8619, 145, 465527, 5205)
soln <- lp("max", 1, constr.mat, "<=", RHS)
soln$solution
## [1] 14500
当然,正如问题下面的评论中所指出的,通过取 x
的最小上限:
,无需线性规划即可轻松解决此问题
min(RHS / constr.mat)
## [1] 14500
备注
如果您真正的意思不是问题中所述的问题而是这个 5 变量问题:
max 0.18 * x1 + 0.02 * x2 + 0.01 * x3 + 0.78 * x4 + 0.01 * x5
such that
0.18 * x1 <= 20076
0.02 * x2 <= 8619
0.01 * x3 <= 145
0.78 * x4 <= 465527
0.01 * x5 <= 5205
然后我们有
soln2 <- lp("max", constr.mat, diag(constr.mat), "<=", RHS)
soln2$solution
## [1] 111533.3 430950.0 14500.0 596829.5 520500.0
同样,如果没有线性规划,计算起来也很简单:
RHS / constr.mat
## [1] 111533.3 430950.0 14500.0 596829.5 520500.0
我是优化新手,请多多包涵。这是我的问题:
A、B、C、D 和 E 为百分比 (18%,2%,1%,78%,1%)
最大化总和 (A(x) + B(x) + C(x) +D(x) + E(x)) 即最大化 x ( x<=499572)
这样
- A(x) <= 20076
- B(x) <= 8619
- C(x) <= 145
- D(x) <= 465527
- E(x) <= 5205
如何在 R 中解决这个问题?
我正在使用 LPsolve 包,但我可以接受任何建议。
我们重述问题,省略对单个标量变量 x
的正性约束,如:
maximize 1 * x
such that
0.18 * x <= 20076
0.02 * x <= 8619
0.01 * x <= 145
0.78 * x <= 465527
0.01 * x <= 5205
所以作为一个线性程序,我们有以下最优值x
:
library(lpSolve)
constr.mat <- c(.18, .02, .01, .78, .01)
RHS <- c(20076, 8619, 145, 465527, 5205)
soln <- lp("max", 1, constr.mat, "<=", RHS)
soln$solution
## [1] 14500
当然,正如问题下面的评论中所指出的,通过取 x
的最小上限:
min(RHS / constr.mat)
## [1] 14500
备注
如果您真正的意思不是问题中所述的问题而是这个 5 变量问题:
max 0.18 * x1 + 0.02 * x2 + 0.01 * x3 + 0.78 * x4 + 0.01 * x5
such that
0.18 * x1 <= 20076
0.02 * x2 <= 8619
0.01 * x3 <= 145
0.78 * x4 <= 465527
0.01 * x5 <= 5205
然后我们有
soln2 <- lp("max", constr.mat, diag(constr.mat), "<=", RHS)
soln2$solution
## [1] 111533.3 430950.0 14500.0 596829.5 520500.0
同样,如果没有线性规划,计算起来也很简单:
RHS / constr.mat
## [1] 111533.3 430950.0 14500.0 596829.5 520500.0