Как подружить CMA-ES и TRF: эволюция солвера ArroWell

В платформе ArroWell одна из ключевых задач — калибровка пространственных датчиков (MSA). По зашумленным 3D-векторам акселерометров и магнитометров нужно найти до 18 неизвестных параметров: смещения, паразитные наводки металла, коэффициенты масштаба и перекосы осей. Математически это тяжелая задача: функция потерь образует узкие искривленные овраги, а масштабы несопоставимы (тысячи единиц магнитных помех против долей процента у электроники).

ДИЛЕММА ПЕРВОЙ ВЕРСИИ

Сначала в ядре жили два независимых солвера: чистый DE (дифференциальная эволюция) и чистый TRF (Trust Region Reflective). — TRF быстрый и держит границы, но «слеп»: без идеального старта он намертво застревает в ямах шума. — DE легко обходит ловушки, но делает это медленно и не дает аналитического якобиана для оценки погрешностей. В итоге солвер приходилось выбирать вручную под каждый датасет. Для автономного софта это тупик.

ПЕРЕХОД К ГИБРИДУ: CMA-ES И РЕГУЛЯРИЗАЦИЯ

Я объединил глобальный поиск и локальную доводку в единый конвейер. Вместо DE первой стадией стал CMA-ES: он адаптирует матрицу ковариаций, нащупывает геометрию оврага и шагает вдоль дна, не тратя ресурсы на стенки. Чтобы уравнять масштабы, я перевел оптимизацию в обеленное пространство: u = p / σ по допускам стандарта ISCWSA. Байесовская регуляризация (MAP) сделала параметры безразмерными и запретила алгоритму списывать шум на нереальную деформацию калибровок.

КАК РАБОТАЕТ КОНВЕЙЕР

1. CMA-ES в обеленном пространстве находит дно оврага, игнорируя шум. 2. TRF стартует со дна бассейна и за 8–12 итераций квадратично дожимает решение до минимума в рамках физических границ. 3. Из финального якобиана вычисляется матрица погрешностей Cov(p) ≈ (JᵀJ)⁻¹ с интервалами 1σ. 4. При нехватке вращения прибора движок автоматически зажимает границы радиальных помех, защищая матрицу от сингулярности.

ИТОГ 128 мс на CPU, 0 ручных настроек и моментальный отклик 3D-интерфейса.

Код открыт: https://github.com/maksim-y-nikitin/arrowell

Как подружить CMA-ES и TRF: эволюция солвера ArroWell | Сетка — социальная сеть от hh.ru