Я знаком с тем, как использовать ompr::MIPModel, но пытаюсь научиться использовать MILPModel, чтобы воспользоваться преимуществами скорости построения модели. Упрощенная версия моей модели ниже. У меня есть две переменные решения, x и y, двоичные и одинаковой длины. У меня есть ограничения на сумму всех переменных решения x и сумму всех переменных решения y. Пока все хорошо с MILPModel, я могу быстро построить модель и решить ее.
Проблема в том, что я пытаюсь использовать следующее ограничение. LHS этого ограничения умножает x двоичных переменных решения на числовой столбец в кадре данных той же длины, а затем умножает это на матрицу, в которой строки равны длине x. Аналогичная история в RHS с переменной y. Затем я повторяю это ограничение 20 раз, чтобы представить все столбцы матрицы.
Я использовал подобные ограничения много раз, используя MIPModel, но теперь, когда я пытаюсь это сделать, я получаю сообщение об ошибке, non-numeric argument to binary operator
. Я предполагаю, что это как-то связано с функцией colwise
, но я не знаю, как к этому подойти, даже после прочтения на сайте ompr github. Заранее благодарю за любую помощь.
add_variable(x[i], i=1:10, type='binary') %>%
add_variable(y[i], i=1:10, type='binary') %>%
add_constraint(sum_expr(x[i],i=1:10) <= 5) %>%
add_constraint(sum_expr(y[i],i=1:10) <= 3) %>%
#model builds and solves until this point...
add_constraint(
sum_expr( x[i]* df$numeric_column[i] * matrix_a[i,j],i=1:10) <=
sum_expr( 2* y[i]* df$numeric_column[i] * df$other_numeric_column[i] * matrix_a[i,j],i=1:10),
j=1:20)