我是优化新手,所以请耐心等待。这是我的问题:
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