约束定义R-CVXR解算器程序包

时间:2019-02-14 09:43:18

标签: r solver cvxr

我们遇到以下问题:我们有一个包含七个列的表,其中包含数字变量的组合。我们的目标是仅保留行的子集以优化每一列的总和。

示例表格:

enter image description here 如您在下面的代码中看到的,我们使用一个求解器(来自CVXR软件包)。

我们想找到的东西:对于这个问题,我们想使用一些约束。例如,输出列(例如第5列)的总和应大于第6列或一个数字的总和。

当我们尝试定义此约束时,会出现以下错误:

  

错误(函数(类(函数,fdef,mtable)):无法为签名“逻辑”找到函数“变量”的继承方法

请提供一个示例,说明如何表达约束以避免错误?

library(CVXR)

# M is the matrix of the example table
M[is.na(M)] <- 0 
M <- as.matrix(M) 
n <- nrow(M) 
b <- Bool(n) 
pred <- t(b) %*% M 

# This array stores the preferable output sums of each column
y <- c(0,0,0,0,12,5,1) 

# The objective
objective <- Minimize(sum(abs(t(y) - pred))) 

# Constraint example
constraint1 <- sum(pred@rh_exp@value[,5]) >= 10
constraint2 <- sum(pred@rh_exp@value[,6]) >= 0

# Problem
problem <- Problem((objective), constraints = list(constraint1, constraint2))

0 个答案:

没有答案