Я пытаюсь реализовать алгоритм на С #, в котором есть математическая функция, например:
Минимизировать a || xu (i) - ∑j aj (i) bj || 2 + β || а (я) || 1
Но я не уверен, есть ли какой-либо прямой метод оптимизации в C #, и я ничего не нашел на форумах, или, может быть, вы можете предложить какие-либо предложения по решению этой проблемы оптимизации на C #!?
1 ответ
Есть несколько решателей с привязками C #, которые могут подойти для вашей проблемы, например:
- MS Solver Foundation, платформа Microsoft для математической оптимизации, которая предоставляет решения для большого количества задач, включая неограниченный и ограниченный наименьшие квадраты. Некоторые попытки вникнуть в API, но взамен производные вычисляются автоматически и т. Д.
- ALGLIB предоставляет широкий спектр различных оптимизаторов и доступен в C #.
- IPOPT упоминался в комментарии Али выше. Я разработал привязку C # к IPOPT, и ее можно загрузить здесь. Я, конечно, предвзято, но лично считаю, что API довольно прост. Если вы используете csipopt , вам необходимо вручную предоставить производные. (На самом деле существует также библиотека, которая включает csipopt и обеспечивает автоматические производные вычисления, Funclib .)
- COBYLA2 (если у вас есть нелинейные ограничения) и BOBYQA (если у вас есть ограничения или нет ограничений) - это методы прямого поиска без производных, разработанные Майклом Пауэллом. Я перенес эти решатели на C #, 100% управляемый код. Проект C # COBYLA2 доступен здесь, а проект C # BOBYQA доступен здесь.
Похожие вопросы
Новые вопросы
c#-4.0
В C # 4.0 были добавлены такие функции, как динамические объекты, улучшения взаимодействия COM, общая ко-и противоположная дисперсия, необязательные и именованные параметры. Используйте этот тег, если ваш вопрос относится к конкретным функциям C # 4.0. Тег C # следует использовать, если ваш вопрос не относится к функциям C # 4.0.