CPLEX: Можно ли использовать функцию ceil() в ограничении?
Я пытаюсь сделать ограничение в CPLEX, который использует ceil()
функция, но продолжаю получать ошибку "не удается извлечь выражение". Это ограничение:
forall(j in d, k in b, l in r){
ct14: sum(l in r)(ceil((sum(k in b)X1[j][k][l])/3)); <= 10;
}
Если оценивать снаружи как скрипт, CPLEX может вычислить левый термин, но не может сделать это при использовании в качестве ограничения. Я не могу найти примеры ограничений, которые используют ceil()
, но я думаю, что это можно сделать, и что-то не так с моей реализацией.
Любая помощь в исправлении этой ошибки будет отличной!
1 ответ
Нет, я не думаю, что это сработает. Вы можете использовать только несколько ограниченных выражений в ограничениях. Вы должны будете реструктурировать свою модель, чтобы использовать дополнительные переменные, чтобы получить максимум каждого подмножества переменных. Затем напишите ваше ограничение для этих дополнительных переменных.