|
Раздел "Optimization Toolbox 2.2 Руководство пользователя"
А.Г.Трифонов. Типичные проблемы и способы их решения
Для обеспечения сходимости задач оптимизации может потребоваться большое количество итераций и они могут быть чувствительны к проблемам численной реализации, таким как усечение общей длины числа и ошибки округления при расчете конечноразностных градиентов. Большинство задач оптимизации существенно зависит от начального стартового предположения. Правильно выбрав соответствующую начальную точку можно существенно улучшить эффективность процесса решения и выйти на глобальный минимум вместо локального минимума.
Усложненные задачи лучше всего решаются методом последовательного развертывания, т.е. посредством первоначального решения задачи с меньшим числом параметров. Такой подход часто приводит к превосходным результатам, так как позволяет обходить локальные минимумы.
Функции тулбокса оптимизация могут быть применены к самым разнообразным задачам. Применяя немного "обычного здравого смысла" можно преодолеть множество ограничений, связанных с методами оптимизации. Кроме того, можно работать с задачами, которые не типичны в стандартной форме, но могут быть преобразованы с помощью надлежащих трансформаций. Ниже приводится список типичных проблем и рекомендации по их преодолению.
Таблица 2-1: Типичные затруднения
|
Проблемы
|
Рекомендации
|
|
Решение задачи проявляется вне глобального минимума
|
Никогда нет гарантий того, что может быть достигнут глобальный минимум, даже не смотря на то, что задача является непрерывной и имеет только один минимум. Где это возможно, необходимо использовать различные методы проверки результатов.
|
|
Fminunc дает предупреждающие сообщения и, по-видимому, проявляется слабая сходимость в окрестности искомого решения.
|
Если при решении не используются аналитически найденные градиенты и критерий останова являются жестко обусловленным, то fminunc часто проявляет слабую сходимость в окрестности искомого решения вследствие ошибки округления при расчете градиента. Релаксация критерия прекращения счета производит быстрые, хотя и менее точные, решения. Для средне масштабного алгоритмя с целью корректировки степени возмущений конечно-разностных расчетов используются другие опции, такие как DiffMinChange и DiffMaxChange, что может улучшить точность расчета градиента.
|
|
Иногда в задаче оптимизации встречаются такие значения х, для которых невозможно рассчитать целевую функцию fun или функцию нелинейных ограничений nonlcon.
|
Следует заменить границы независимых переменных или ввести штрафную функцию, что в случае неприемлемых решений придает некие большие положительные значения для f и g. При этом, для расчета градиента штрафная функция должна быть гладкой и непрерывной.
|
|
Подлежащая минимизации функция имеет точки разрыва.
|
Процесс отыскания производной в данном методе основан на том, что функция имеет непрерывные первые и вторые производные. Некоторые положительные результаты могут быть достигнуты для определенных классов неразрывности, в случае, когда они не встречаются вблизи точки решения задачи. С помощью опций можно сгладить функцию. Например, целевая функция может включать в себя обращение к интерполирующей функции с целью сглаживания значений функций.
Или, для алгоритмов средней размерности, возможна корректировка параметров конечно-разностных расчетов с целью перескока через небольшие разрывы в значениях функции. С помощью переменных DiffMinChange и DiffMaxChange можно контролировать используемые в конечно-разностных расчетах значения аргумента х. Эти отклонения всегда должны находиться в диапазоне
DiffMinChange < Dx < DiffMaxChange.
|
|
Отображаются предупреждающие сообщения.
|
Этот факт имеет место, когда критерии прекращения расчета являются чрезмерно жесткими, или когда рассматриваемая задача является чрезмерно чувствительной к изменениям независимых переменных. Данный случай обычно указывает на наличие ошибок вследствие усечения или ошибок округления при конечно-разностном расчете градиента или задач с обращением к полиномиальной интерполяции. Эти предупреждения в большинстве случаев игнорируются, поскольку данные программы продолжают свое непрерывное движение к точке решения, хотя данный факт может указывать на то, что сходимость в этом случае более длительная, чем обычно. Масштабирование может иногда обойти проблему чувствительности таких задач.
|
|
Независимые переменные, х, могут принимать только дискретные значения, например, только целые значения.
|
Данный тип задач обычно встречается тогда, когда, например, переменные которые являются коэффициентами некого фильтра и представлены посредством конечно-разрядной арифметики, а так же когда независимые переменные отображают материалы, производимые только в виде целых единиц.
Хотя функции тулбокса Optimization явно не могут быть установлены в режим решения дискретных задач, но возможно решение некоторых типов дискретных задач путем первичного решения эквивалентной непрерывной задачи.
Для этого последовательно выделяются из числа независимых переменных те величины, которые допускают их коррекцию. Образование дискретных значений производится их округлением до ближайшего целого значения. После выделения дискретных значений производится решение приведенной задачи для оставшихся свободных переменных. После нахождения решения приведенной задачи производится выделение других дискретных переменных величин и расчетный цикл повторяется до тех пор, пока не будут выделены все дискретные переменные.
dfildemo есть пример программы с представлением того, как фильтры с коэффициентами заданной точности могут обрабатываться с применением данного метода..
|
|
Программа минимизации входит в бесконечный цикл или возвращает решение, которое не удовлетворяет ограничительным условиям задачи.
|
Искомая цель (fun), ограничения (nonlcon, seminfcon), или градиент функции (при вычислении fun) могут возвращать Inf, NaN или комплексные значения. Предполагается, что программы минимизации могут возвращать только реальные значения. Любые другие значения могут приводить к непредсказуемым результатам. В данном случае следует вставить некоторые программные проверки в задаваемые пользователем функции, что позволит установить тот факт, что возвращаются только реальные числа (используйте конечные функции).
|
|
При работе с программой lsqnonlin нет ранее предполагаемой сходимости
|
В данном случае можно явным образом сформировать сумму квадратов и получить значение в виде скаляра. lsqnonlin предполагает ввод значения вектора (или матрицы) функции, которые далее возводятся в квадрат и суммируются внутри программы.
|
|
|