2016-09-21 10 views
1

Я хочу использовать СХК, включенные в мой исходный код (C++), чтобы решить MIQP и не нашел, как это сделать, кроме этого FAQ запись:СКИП Mixed Программирование Integer Квадратное с помощью

Нелинейные целевые функции не являются поддерживаемый SCIP и должен быть смоделирован как функция ограничения. Обратите внимание, что поддержка неквадратичных нелинейных ограничений по-прежнему находится на стадионе BETA и еще не столь устойчива, как и остальная часть SCIP. Отсутствующие ограничения на нелинейные переменные и крошечные или огромные коэффициенты могут легко привести к числовым проблемам, чего можно избежать путем тщательного моделирования.

Мне уже удалось построить дерево выражений для целевой функции. Я хотел бы знать:

  • Если MIQP должен быть смоделирован как MINLP, то как это работает функция ограничения ограничений? Изменена ли верхняя граница?
  • Если существуют специальные методы для MIQP, где я могу найти документацию об этом?

ответ

3

Посмотрите на примеры в http://scip.zib.de/doc/examples/CallableLibrary/

Если вы просто хотите квадратичная, то вы можете создать квадратные ограничения непосредственно в SCIP с помощью обработчика ограничений для квадратичных ограничений: http://scip.zib.de/doc/html/cons__quadratic_8h.php

Для методы, используемые SCIP для обработки квадратичных частей MIQP, см. http://nbn-resolving.de/urn:nbn:de:0297-zib-59377 и ссылки в нем.

+0

Чтобы сделать это, я должен создать новую переменную (стоимость) и сделать ограничение равенства для моего дерева выражений, а затем установить объектное значение всех других переменных в 0.0 и 1.0 на стоимость. спасибо – herculanodavi