ВАЖНОЕ ОБНОВЛЕНИЕ от 25 февраля 2012 г .:
MSF 3.1 теперь поддерживает нелинейную оптимизацию с ограниченными переменными с помощью решателя NelderMeadSolver: http://msdn.microsoft.com/en-us/library/hh404037(v=vs.93).aspx
Для общих линейных ограниченийMicrosoft Solver Foundation поддерживает только линейное программирование и квадратичное программирование с помощью своего внутреннего решения.Для этого решателя, пожалуйста, смотрите сообщение SVM, упомянутое Томасом.
MSF имеет общий решатель нелинейного программирования, Limited-Memory-BFGS, который не поддерживает никаких ограничений.Этот решатель также требует явной функции градиента.Для этого решателя см .:
Логистическая регрессия в F # с использованием MSF
F # ODSL, упомянутый Томасом, поддерживает только линейное программирование.У меня есть расширение QP для него, доступное в codexplex .
Возвращаясь к вашему вопросу - оптимизируйте f (x) с помощью линейных ограничений (аналогично fmincon
), я не видел ни одной бесплатной библиотеки с такой способностью. NMath.NET (коммерческий), кажется, есть.Я пробовал это для решения очень нелинейной оптимизации, но это не работает для меня.Наконец я прибегнул к B-LBFGS, реализованному в DotNumerics.
Думаю, вас также заинтересует следующий вопрос:
Альтернатива с открытым исходным кодом функции fmincon в MATLAB?
Ответы указывают на SciPy.optimize.cobyla
, что похоже на fmincon
.Но главное сообщение в том, что для вашей конкретной проблемы, возможно, fmincon
является слишком общим.Вы можете использовать более конкретный решатель, например, LBFGS или QP.Также общие решатели иногда не работают, если ваше начальное значение не является хорошим.