线性优化 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)

这样

  1. A(x) <= 20076
  2. B(x) <= 8619
  3. C(x) <= 145
  4. D(x) <= 465527
  5. 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