Я знаком с тем, как использовать ompr :: MIPModel, но я пытаюсь научиться использовать MILPModel, чтобы воспользоваться преимуществами скорости построения модели. Ниже представлена упрощенная версия моей модели. У меня есть две переменные решения, x и y, двоичные и одинаковой длины. У меня есть ограничения на сумму всех переменных решения x и сумму всех переменных решения y. Пока все хорошо с MILPModel, я могу построить модель и быстро ее решить.
Проблема в том, когда я пытаюсь использовать следующее ограничение. LHS этого ограничения умножает двоичные переменные решения x на столбец numeri c в кадре данных той же длины, а затем умножает это на матрицу, в которой строки равны длине x. Аналогичная история в правой части экрана с переменной 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)