Обычно вы можете переформулировать
R #= X mod Y
как
0 #=< R, R #=< Y-1, % R is between 0 and Y-1
X #= _*Y + R, % X is some multiple of Y, plus a remainder R
Это предполагает, что вы используете library(ic)
и у вас нет особых требований к поведению с отрицательными аргументами.
Для library(eplex)
, который использует решатель MILP, вы можете сделать почти то же самое (если Y является целочисленным параметром), но вы должны быть немного более точными в отношении целостности:
0 $=< R, R $=< Y-1,
integers([K,R]),
X $= K*Y + R,