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

最新更新