LPsolve的表达式

时间:2018-10-17 13:21:16

标签: r mathematical-optimization linear-programming lpsolve

我正在处理一个涉及包含某些类型的表达式的约束的问题,这些问题将使用LPsolve解决。不过,我似乎无法弄清楚如何制定约束条件。

  

例如:-我想重新制定以下约束条件:

+0.35 C1 +0.15 C2 +0.15 C3 +0.2 C4 +0.15 C5 +0.15 C6 +0.15 C7 +0.15 C8 +0.15 C9 +0.15 C10 <= 3750; 

+(0.35)*(1+C1) +0.15*(1+C2) +0.15*(1+C3)....+0.15*(1+C10)<= 3750;

我尝试使用set.constr.value(),但这仅需要固定的行作为输入。

然后求解最优解。

2 个答案:

答案 0 :(得分:1)

在问题中给定的约束条件下并假定它们为非负值,以使Ci变量的总和最大化:

library(lpSolve)

cc <- c(0.35, 0.15, 0.15, 0.2, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15)
result <- lp(direction = "max", 
   objective = rep(1, length(cc)),
   const.mat = t(cc),
   const.dir = "<=",
   const.rhs = 3750 - sum(cc))

result
## Success: the objective function is 24988.33 

result$solution
##  [1]     0.00 24988.33     0.00     0.00     0.00     0.00     0.00     0.00
##  [9]     0.00     0.00

答案 1 :(得分:0)

程序中的约束(假定C_i >= 0):

+(0.35)*(1+C1) +0.15*(1+C2) +0.15*(1+C3)....+0.15*(1+C10)<= 3750;

与以下相同:

+0.35*C1 +0.15*C2 + ... +0.15*C10 <= 3750 - (0.35 + 0.15 + ... + 0.15)

不明白问题的重点...请尝试以正常形式编写程序并使问题更精确。