Комментарии 11
прозрачное, быстрое, грязное и надежное решение
Это все конечно хорошо, но вы по-моему забыли про одну вещь — все эти задачи оптимизации — они как правило с ограничениями. Такой же быстрый, прозрачный, грязный и т.п. подход к ним — это штрафы за нарушение ограничений. Но они обычно приводят к тому, что гладкая функция становится овражной, и простое решение перестает работать, или работает медленно.
У меня нет для вас ответа, как нужно, это просто сомнение.
Здесь не может быть единого ответа. Можно двигаться из области штрафа по антиградиенту функции ограничений, можно действовать через "наказание случайностью", и при попадании в неудачную точку совершать откат с изменением параметров шага. И еще много чего. А пока - только проверка концепта на задаче, для которой легко найти эталонное решение
Если я правильно понял задачу, вам может подойти программа professor (с hepforge), она осуществляет поиск глобального минимума в многопараметрической системе (если есть симуляция, естественно)
Квадратичную регрессию можно было не считать в OpenOffice, а взять готовые формулы из "Метода наименьших квадратов" Л.В. Коломийцева.
В качестве метода поиска глобального минимума можете взять Shuffled Complex Evolution, метод старый и не шибко быстрый, но несложный в реализации.
Кстати, вы ракету как материальную точку моделируете или же как твердое тело?
В существующей модели - материальная точка с тремя степенями свободы (итого 7-мь дифуров - 6 для координат + 1 для массы), управление в тангаже/курсе задается функциями угла атаки и крена от параметров полета. Добавить моделирование твердого тела вполне реально, вопрос тут в исходных данных (моменты инерции в динамике с учетом расхода топлива + коэф. моментов тангажа/рысканья/крена + характеристики органов управления от параметров полета и углов отклонения)
Раз уж статья называется «Градиентный поиск коэффициентов квадратической регрессии», то замечу, что искать три коэффициента градиентным спуском — это из пушки по воробьям. Для среднеквадратической ошибки (MSE) можно взять нормальное уравнение.
Впрочем, у вас оптимизируется средняя абсолютная ошибка (MAE). Поэтому, кстати, сравнение с тем, что выдает офис не совсем корректно, так как он ищет скорее всего именно MSE. Так как целевые функции разные, то и результаты разные. Для шумных данных MSE будет выдавать среднее, а MAE медиану.
Для проверки метода поиска регрессия оказалась удобной в том плане, что для нее не нужно далеко тянуться за эталоном. И по результатам какую-то откровенную дичь метод гнать не стал, что показалось мне хорошим признаком. Теперь нужно проверить его на чем-нибудь поближе к теме. Решение в двухмерной (дальность-высота) постановке задачи на дальность планирования с ограничениями на программные углы атаки и посадочную скорость, например
Градиентный поиск коэффициентов квадратической регрессии