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 ответ

Нет, я не думаю, что это сработает. Вы можете использовать только несколько ограниченных выражений в ограничениях. Вы должны будете реструктурировать свою модель, чтобы использовать дополнительные переменные, чтобы получить максимум каждого подмножества переменных. Затем напишите ваше ограничение для этих дополнительных переменных.

Другие вопросы по тегам