【发布时间】:2018-07-18 23:56:50
【问题描述】:
我知道ompr 包中的sum_expr 函数是一种创建具有动态总和的约束的方法。但是,我想知道是否有一种方法可以创建使用乘积而不是总和的约束。或者这在 linear 优化中是不可能的吗?
例如:
library(dplyr)
library(ROI)
library(ROI.plugin.glpk)
library(ompr)
library(ompr.roi)
n <- 20
score <- round(runif(n, 0, 25))
penalties <- round(runif(n, 0, 25))
model <- MIPModel() %>%
add_variable(x[i], i = 1:n, type = "binary") %>%
set_objective(sum_expr(score[i] * x[i], i = 1:n), "max") %>%
add_constraint(sum_expr(penalties[i] * x[i], i = 1:n) <= 100)
result <- solve_model(model, with_ROI(solver = "glpk", verbose = TRUE))
result$solution
除了add_constraint(sum_expr()),有没有办法做到add_constraint(product_expr())?
如果无法进行线性优化,我应该去哪里寻找?
【问题讨论】:
-
nloptr package 是要走的路
-
@StéphaneLaurent nloptr 不支持二进制变量 AFAIK
-
@ErwinKalvelagen 抱歉,我确实错过了这个假设。
标签: r optimization linear-programming glpk