Я отлаживаю процедуру оптимизации.Я создаю текстовый файл журнала, в котором отслеживаю значение целевой функции на каждой итерации в процедуре оптимизации.
Вот контекст: я работаю с проблемой подбора кривой, с моделью, которая является линейной по четырем параметрам и полиномиальной по данным X
Y = PARAM1*X^3+PARAM2*X^2+PARAM3*X+PARAM4
, и я запускаю процедуру оптимизациина несопровождаемые несмещенные данные, сгенерированные из этой модели, чтобы проверить алгоритм.
В файле журнала первый шаг оптимизации не вызывает проблем.Оценки функций имеют двойное значение.На каждой итерации вычисляются 5 значений функции (и отображаются в файле журнала).Начиная с данной итерации, все становится плохо: оценка одной функции становится -1#INF
, хотя целевая функция уже была успешно оценена в этот самый момент (!).На следующих итерациях «плохая точка» продолжает оцениваться в -1#INF
, и одна за другой другие точки также заканчиваются в -1 # INF.Расчет Y в этих точках не является проблемой, учитывая формулу и тот факт, что они были должным образом оценены ранее.
Кроме того, я подозреваю другую причину, например, управление памятью.Будете ли вы иметь представление об этом или какой-либо совет, чтобы отслеживать проблему ближе?
Редактировать
Я вижу первое вхождение -1#INF
в файле журнала.Функция оценивается в 5 баллов на каждой итерации, но только одна из этих 5 баллов является «новой точкой».При первом появлении -1#INF
функция уже была успешно оценена на этом этапе.
Похоже, что
ITERATION N-1
f1 559.011
f2 560.034
f3 562.034
f4 560.342
f5 560.344
ITERATION N
f1 -1#INF
f2 560.034
f3 558.034
f4 560.342
f5 560.344
, где при ITERATION N
only f3
- оценка функции приновая точка, и f1 - оценка функции в той же точке, что и f1 в ITERATION N-1
.