Поскольку Excel Solver довольно медленно запускается на тысячах оптимизаций (причина в том, что он использует электронную таблицу в качестве интерфейса), я пытаюсь реализовать аналогичный (специфичный для проблемы) решатель в C ++ (с Visual Studio 2010, на 64-битной платформе Win 7). Я бы включил DLL через оператор Declare в VBA и уже имел опыт в этом, так что это не проблема.
Моя проблема заключается в минимизации суммы квадратов ошибок между эмпирическими данными и целевой функцией, которая является нелинейной, но гладкой, и проблема будет включать неотрицательность (X> = 0) или даже ограничения положительности (например, X> = 0,00000001), где Х обозначает переменную решения.
Я ищу надежную, проверенную реализацию. Это может быть частью установленной библиотеки.
Например, я уже изучил то, что ALGLIB хранит в магазине (см. http://www.alglib.net/optimization/), и кажется, что только один из их алгоритмов принимает ограниченные ограничения. Но я не знаю, чего это стоит, поэтому я Я пытаюсь собрать некоторые мнения.
Или, с другой стороны, было бы целесообразно дополнить алгоритм Левенберга-Марквардта ALGLIB такими базовыми ограничениями, например, отвергнув каждое промежуточное решение, которое не удовлетворяет моим ограничениям? (думаю, это не сработает, но все же стоит спросить)