Можно ли решить сформулированную проблему CP с CPLEX-Engine без преобразования модели? - PullRequest
1 голос
/ 14 мая 2019

Я сформулировал проблему гибкой работы в качестве модели CP, как это рекомендуется в CPLEX Optimization Studio. Проблема работает и создает правильные графики. Поэтому у меня вопрос: есть ли возможность разрешить эту проблему с помощью CPLEX-Engine, не превращая его в MIP. Так что я могу сравнить результаты двух двигателей. Итак, в целом, если возможно запустить CPLEX-Engine на модели, составленной на основе CP, или если для этого мне нужно создать отдельный MIP?

Ответы [ 3 ]

4 голосов
/ 14 мая 2019

Да, это возможно. А в OPL это достаточно просто попробовать. Просто добавьте или удалите строку

using CP;

в начале вашего .mod для использования оптимизатора CP или CPLEX.

Однако у каждого из двух движков есть конструкции модели, которые он поддерживает и которые не поддерживает. Например, оптимизатор CP не поддерживает непрерывные переменные, в то время как CPLEX не поддерживает ограничения alldiff, интервальные переменные и т. Д. Если вы получаете исключение «не удается извлечь» или подобное, тогда ваша модель использует конструкцию моделирования, которая поддерживается только одним из двигатели.

Более того, даже если вы не получите исключения, тогда ваше сравнение может быть предвзятым: производительность механизма решателя зависит не только от типа и данных модели, но и от фактической модели формулировка, Для множества проблем есть способы сформулировать их так, чтобы это было хорошо для CP, но плохо для CPLEX или наоборот. Поэтому, если один из двух двигателей работает медленнее, вам также следует подумать о том, подходит ли ваша формулировка для этого конкретного двигателя.

Все это, как говорится, всегда стоит попробовать и просто посмотреть, что происходит.

1 голос
/ 14 мая 2019

Пока вы используете базовые ограничения и целочисленные переменные решения, да.

Например, в примере цвета https://www.ibm.com/support/knowledgecenter/SSSA5P_12.7.0/ilog.odms.ide.help/examples/html/opl/color/color.mod.html вы можете удалить using CP; и затем запустить CPLEX.

В примерах составления расписаний модели в CPO и CPLEX будут отличаться, но вы все равно можете смешать 2 составы с помощью теплого старта.

1 голос
/ 14 мая 2019

Если вы использовали конструкции, специфичные для оптимизатора CP (например, interval переменные), то CPLEX не сможет понять вашу модель.

...