Ну, оказывается, 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) позаботятся об этом за вас, потому что они способны вычислять символические производные от всех уравнений, написанных на их языке.