Подтвердить что ты не робот

Как выбрать целочисленный решатель линейного программирования?

Я новичок для целочисленного линейного программирования. Я планирую использовать целочисленный решатель линейного программирования для решения моей проблемы комбинаторной оптимизации. Я больше знаком с С++/объектно-ориентированным программированием на IDE. Теперь я использую NetBeans с Cygwin, чтобы писать мои приложения большую часть времени.

Могу ли я спросить, есть ли для меня решение ILP для легкого использования? Или это зависит от проблемы, которую я хочу решить? Я пытаюсь оптимизировать отображение ресурсов. Пожалуйста, дайте мне знать, нужна ли какая-либо дополнительная информация.

Большое спасибо, Кэсси.

4b9b3361

Ответ 1

Если вам нужно линейное смешанное целочисленное программирование, я бы указал на Coin-OR (и, в частности, на модуль CBC). Это бесплатное программное обеспечение (как речь) Вы можете использовать его с определенным языком или использовать С++.

Используйте С++, если для данных требуется много предварительной обработки или если вы хотите поместить свои руки в решатель (выбор точек поворота, генерация столбцов, добавление разрезов и т.д.).

Используйте интегрированный язык, если вы хотите использовать решатель как черный ящик (вас просто интересует результат, и проблема проста или классическая, чтобы ее можно было решить без необходимости настройки).

Но в тегах вы упомянули алгоритмы генетических алгоритмов и графов. Может быть, вам стоит начать с лучшего решения вашей проблемы... Для графов мне очень нравится Boost:: Graph

Ответ 2

Я использовал lp_solve (http://lpsolve.sourceforge.net/5.5/) несколько раз с успехом. Он зрелый, многофункциональный и очень хорошо документирован с большим количеством хороших советов, если ваши навыки линейного программирования ржавые. Целочисленное линейное программирование не является просто добавлением, но сильно подчеркивается этим пакетом.

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

Ответ 3

Для больших проблем вы можете посмотреть AMPL, который является интерпретатором оптимизации со многими серверные решения. Он работает как отдельный процесс; С++ будет использоваться для записи входных данных.

Тогда вы можете попробовать различные современные решатели.

Ответ 4

Посмотрите GLPK. Поставляется с несколькими примерами и работает с подмножеством AMPL, хотя IMHO работает лучше всего, когда вы используете C/С++ для настройки модели. Копы с довольно большими моделями тоже.

Ответ 5

Линейное программирование из Википедии охватывает несколько различных алгоритмов, которые вы могли бы сделать, чтобы понять, что может сработать лучше всего для вас. Это помогает или вам нужно что-то более конкретное?