使用ompr线性编程约束中的平均值

时间:2017-11-27 23:47:55

标签: r optimization mathematical-optimization linear-programming glpk

我正在使用ompr包来解决整数程序。我想要包含一个基于另一个二进制变量的平均值的约束。

在下面的示例中,我有一些食物,我想找到至少5个项目,并尽量降低成本。我希望平均卡路里计数高于某个最低值。在下面的代码中,第一个约束是卡路里的 sum 高于min_avg_cal。这可以改写,因此约束条件是所选食物的平均卡路里高于min_avg_cal

library(dplyr)
library(ROI)
library(ROI.plugin.glpk)
library(ompr)
library(ompr.roi)


n <- 20
cost <- runif(n, 0, 10)
calories <- runif(n, 100, 200)
min_avg_cal <- 140

model <- MIPModel() %>%
  add_variable(x[i], i =1:n, type = "binary") %>%
  set_objective(sum_expr(cost[i] * x[i], i = 1:n), "min") %>%
  add_constraint(sum_expr(calories[i] * x[i], i = 1:n) >= min_avg_cal) %>% 
  add_constraint(sum_expr(x[i], i = 1:n) >= 5) 

result <- solve_model(model, with_ROI(solver = "glpk", verbose = TRUE))
result$solution

0 个答案:

没有答案