0

我正在尝试设置模型目标,并且我有一个矩阵 A,其行数与变量数相同,它们是二进制的。基本上我想只使用最终被选择的行(其中 x = 1)来取列平均值。在本例中,将选择 3 行。我这样做的尝试(如下所示)涉及在 A 的行上使用 sum_expr;如果 x[ m ] = 1,则第m行仅对总和有贡献。但这不起作用。有没有办法做到这一点?

k <- 3
x <- model$add_variable("x", type="binary", i=1:n_models)
model$set_objective(sum_expr(mean(k/sum_expr(A[m,]*x[m],m=1:n_models)*A[i,])*x[i],i=1:n_models))
model$add_constraint(sum_expr(x[i],i=1:n_models)==k)

或者,有没有办法“获取” sum_expr 中变量的值,即,将其视为普通变量?例如:

sum_expr(mean(apply(sweep(A,1,x,'*'),2,sum)*A[i,])*x[i],i=1:n_models)
4

0 回答 0