Подходит ли Microsoft Solver Foundation для моих нужд? - PullRequest
14 голосов
/ 30 июля 2009

Я ищу варианты для линейного и нелинейного программирования (оптимизации).

Требования:

  1. Поддержка задач линейного и нелинейного программирования с прибл. 100-1000 переменных и до 1000 ограничений (насколько я понимаю, это довольно просто). Нелинейные задачи имеют ограничения, включающие умножение или деление нескольких переменных - ничего более сложного, чем это.

  2. Хорошо интегрируется со средами MS (SQL Server, MS Access, .NET, Excel)

  3. Приятно было бы иметь поддержку для определения специальных проблем (т.е. какой-то язык сценариев или поддержку для определения и решения проблемы в интерфейсе Excel)

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

Для программного доступа я намеревался разработать абстрагирующий интерфейс к солверу (чтобы мы могли менять солверы при необходимости). Затем я наткнулся на MS Solver Foundation (http://code.msdn.microsoft.com/solverfoundation), который уже имеет этот интерфейс. Мне интересно, соответствует ли он требованиям других наших требований и каково мнение пользователей о нем.

Ответы [ 4 ]

4 голосов
/ 17 февраля 2010

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

Итак, я остановился на AMPL в качестве интерфейса языка моделирования и KNITRO для алгоритма решателя. KNITRO выглядит хорошо, потому что он, по-видимому, состоит из трех алгоритмов в одном (2 варианта метода внутренних точек и 1 из метода активных наборов ). См. Также страницу Википедии для KNITRO .

Я остановился на AMPL и KNITRO после того, как опробовал ознакомительные версии обоих на превосходном веб-портале, который, по-видимому, финансируется Национальным научным фондом США и Департаментом энергетики США в Аргоннской национальной лаборатории США под названием НЕОС . NEOS предоставляет веб-интерфейс для загрузки вашей математической модели с использованием AMPL или GAMS (и для некоторых решателей, для некоторых других), а затем возвращает ваши результаты через веб-страницу результатов и по электронной почте. Предположительно, существует интерфейс электронной почты для отправки сообщений о проблемах, но мне не удалось заставить его работать.

Теперь все это стоит денег. KNITRO и AMPL являются коммерческими продуктами. В итоге решение обойдется примерно в 8000 долларов США. Не дешево. Если вы ищете бесплатные решения, я думаю, что варианты в значительной степени ограничены IPOPT для решателя (который я также попробовал на NEOS и обнаружил, что он работал хорошо, но я не смог выбрать его по другим нетехническим причинам) и отказ от интерфейса AMPL. Вы можете настроить свою проблему через API IPOPT. В отличие от API Micrsoft Solver Foundation, интерфейс IPOPT немного сложнее и, что самое сложное, требует, чтобы ваше вызывающее приложение реализовало обратные вызовы, которые вычисляют первые (и, возможно, вторые) производные нелинейных уравнений вашей модели. Языковые интерфейсы моделирования (такие как AMPL) позаботятся об этом за вас, потому что они способны вычислять символические производные от всех уравнений, написанных на их языке.

3 голосов
/ 27 декабря 2009

Я попробовал Solver Foundation над проблемой, которую пытался (безуспешно) решить в прошлом, и взломал ее за 2 дня, включая изучение Solver API. Производительность решателя отличная, а API SFS (Solver Foundation Services) - УДИВИТЕЛЬНЫЙ .

3 голосов
/ 18 декабря 2009

Исходя из перечисленных требований, похоже, что Microsoft Solver Foundation соответствует всем вашим требованиям, а затем и некоторым. Прочитайте "Что такое Фонд Солвер?" документ на сайте Фонда Солвер. Упоминается о линейном программировании, нелинейном программировании, разработке в .NET, может использоваться в Excel, Solver Foundation также поставляется с надстройкой Microsoft Office Excel для обеспечения полной среды моделирования в привычном интерфейсе.

1 голос
/ 21 февраля 2011

Библиотека GLPK на основе GNU - отличный бесплатный вариант. Я бросил 1000-х и 1000-х проблем колонки на это не беспокойся. Требуется несколько разных форматов определения проблем, но мне было проще использовать их через C или C ++ API. Усовершенствования двигателей позади этого происходят все время. Я считаю, что некоторые оболочки также доступны (например, Perl, Python).

...