- •3.1. Элементы выпуклого анализа
- •3.2. Дифференциальные критерии выпуклости функций
- •3.3. Общая задача оптимизации
- •3.4. Исследование задачи математического программирования
- •3.5. Численные методы нелинейного программирования
- •Методы нулевого порядка
- •Методы первого порядка
- •4.1. Постановка задачи динамического программирования
- •Метод второго порядка
- •Глава 4. Динамическое программирование
- •1. Задача о пропорциях потребления и накопления
- •2. Задача о замене оборудования
- •3. Задача о распределении ресурса
- •4.2. Метод динамического программирования р. Беллмана
- •4.3. Решение задачи о замене оборудования методом р. Беллмана
- •Заключение
- •Вопросы для самопроверки
- •Библиографический список
- •Содержание
3.5. Численные методы нелинейного программирования
Среди наиболее известных и часто используемых на практике численных методов нелинейного программирования выделяют методы нулевого, первого и второго порядка. К методам нулевого порядка относят методы, реализация которых предполагает вычисление и использование только значений минимизируемой функции. В методах первого порядка помимо значений минимизируемой функции требуется вычисление ее производных первого порядка. Методы второго порядка предусматривают вычисление и использование значений минимизируемой функции, а также ее производных до второго порядка включительно. В соответствии с изложенным в предыдущих разделах, мы будем рассматривать численные методы нелинейного программирования применительно к решению задач вида
(3.5.1)
(здесь
– множество простой структуры), а также
применительно к решению задач безусловной
минимизации
(3.5.2)
Методы нулевого порядка
Сеточный
метод.
Сеточный метод предусматривает
дискретизацию допустимого множества
задачи с помощью сетки, в узлах которой
вычисляются значения целевой функции
и среди них выбирается минимальное.
Если целевая функция удовлетворяет
условию Липшица, то его использование
в ряде случаев помогает отбросить
неперспективные области значений
аргумента
.
Для функции
одной переменной условие Липшица имеет
вид:
(3.5.3)
где
– допустимое множество задачи (3.5.1) или
задачи (3.5.2). Из (3.5.3) следует:
(3.5.4)
Это
означает, что график целевой функции
расположен над ломаной
,
уравнение которой определяется правой
частью неравенства (3.5.4):
(3.5.5)
Если
при некотором значении
выполнено неравенство
,
то из дальнейшего рассмотрения исключается
интервал значений аргумента
,
так как он является решением неравенства
,
где
определяется выражением (3.5.5).
Метод
покоординатного спуска.
Сначала рассмотрим этот метод применительно
к решению задачи (3.5.2). Пусть
– единичный координатный вектор, у
которого
-я
координата равна
,
остальные равны нулю
.
Обозначим через
некоторое начальное приближение и через
некоторое положительное число, являющееся
параметром метода. Допустим, что нам
уже известны точка
и число
при каком-либо
.
Положим
(3.5.6)
где
– целая часть числа
.
Соотношения (3.5.6) отражают циклический
перебор координатных векторов
и, таким образом,
и т.д. Вычислим значение функции
в точке
и проверим неравенство
(3.5.7)
Если (3.5.7) выполняется, то примем
(3.5.8)
В
том случае, если (3.5.7) не выполняется,
вычисляем значение функции
в точке
и проверяем неравенство
(3.5.9)
В случае выполнения (3.5.9) положим
(3.5.10)
Назовем
-ю
итерацию удачной, если справедливо хотя
бы одно из неравенств (3.5.7) или (3.5.9). Если
-я
итерация неудачная, т.е. не выполняются
оба неравенства (3.5.7) и (3.5.9), то полагаем
(3.5.11)
Здесь
– фиксированное число, являющееся
параметром метода. Условия (3.5.11) означают,
что если за один цикл из
итераций при переборе направлений всех
координатных осей
с шагом
реализовалась хотя бы одна удачная
итерация, то длина шага
не дробится и сохраняется на протяжении
по крайней мере следующего цикла из
итераций. Если же среди последних
итераций не оказалось ни одной удачной
итерации, то шаг
дробится. Таким образом, если на итерации
с номером
произошло дробление
,
то
(3.5.12)
при
всех
.
Метод
(3.5.6) – (3.5.11), как и другие методы нулевого
порядка, не требует для своей реализации
знания градиента минимизируемой функции.
Однако если функция
не является гладкой, то, как показано в
[1], метод покоординатного спуска может
не сходиться к множеству решений задачи
(3.5.2). Проиллюстрируем это следующим
примером.
Пример 3.5.1
Пусть
в задаче (3.5.2)
![]()
Нетрудно
проверить, что данная функция
сильно выпукла на
и, следовательно, достигает своего
минимального значения на
в единственной точке. Возьмем в качестве
начального приближения точку
.
Тогда![]()
,![]()
при
всех действительных
.
Отсюда следует, что все итерации метода
(3.5.6) – (3.5.11) при начальной точке
и любом выборе начального параметра
будут неудачными, т.е.
при всех
Однако в точке
функция
не достигает своего минимального
значения на
:
например, при
получим
.
Рассмотренный
метод покоординатного спуска может
быть модифицирован применительно к
задаче (3.5.1). Пусть
– допустимое множество этой задачи:
![]()
Предположим,
что
-е
приближение
и число
при некотором
уже найдены. Выберем вектор
согласно (3.5.6), сформируем точку
и проверим условия
(3.5.13)
Если
оба условия (3.5.13) выполняются, то следующее
приближение
определяем по формулам (3.5.8). Если же
хотя бы одно из условий (3.5.13) не выполнено,
то формируем точку
и проверяем условия
(3.5.14)
В
случае выполнения условий (3.5.14) следующее
приближение находим по формулам (3.5.10),
а если хотя бы одно из условий (3.5.14) не
выполнено, то следующее приближение
определяется из соотношений (3.5.11). В [1]
показано, что если
является
-мерным
параллелепипедом, а функция
выпукла и непрерывно дифференцируема
на
,
то при любом выборе начальных
и
последовательность
,
получаемая методом (3.5.13), (3.5.8), (3.5.14),
(3.5.10), (3.5.11), минимизирует функцию
на
и сходится к множеству решений
экстремальной задачи.
Известны
и другие варианты метода покоординатного
спуска. Например, последовательность
может быть построена по правилу
(3.5.15)
где
определяется согласно (3.5.6), а
– условиями
(3.5.16)
Метод
(3.5.15), (3.5.16) имеет смысл применять тогда,
когда величина
из (3.5.16) может быть найдена в явном виде.
Это будет иметь место, например, в случае,
если целевая функция
– квадратичная, т.е.
(3.5.17)
где
– симметрическая положительно
определенная матрица,
.
Для функции (3.5.17) метод (3.5.15), (3.5.16) приводит
к методу Зейделя решения систем линейных
уравнений.
Несмотря на то, что скорость сходимости метода покоординатного спуска в общем случае невысокая, благодаря простоте каждой итерации и не слишком жестким требованиям к гладкости минимизируемой функции этот метод весьма широко применяется на практике.
Метод
случайного поиска.
Метод случайного поиска характеризуется
намеренным введением элемента случайности
в алгоритм поиска. Во многих вариантах
реализации метода последовательность
строится по правилу:
(3.5.18)
где
– некоторая положительная величина,
– какая-либо реализация
-мерной
случайной величины
с известным законом распределения
вероятностей. Например, координаты
случайного вектора
могут представлять собой независимые
случайные величины, распределенные
равномерно на отрезке
.
Очевидно, что компьютерная реализация
данного метода требует использования
датчика (или генератора) случайных
чисел, имеющегося в стандартном
программном обеспечении.
Рассмотрим
несколько вариантов реализации метода
случайного поиска минимума функции
на множестве
,
предполагая, что
-е
приближение
уже известно.
Алгоритм
с возвратом при неудачном шаге.
С помощью датчика случайных чисел
получают некоторую реализацию случайного
вектора
и в пространстве
определяют точку
.
Если
и
,
то сделанный шаг считается удачным, и
в этом случае полагается
.
Если
,
но
,
или же
,
то сделанный шаг считается неудачным
и полагается
.
В
том случае, если окажется, что
для достаточно больших
,
то точка
может быть принята в качестве приближения
искомой точки минимума.
Алгоритм
наилучшей пробы.
Формируются какие-либо
реализаций
случайного вектора
и вычисляются значения целевой функции
в тех точках
,
которые принадлежат множеству
.
Затем полагается
,
где индекс
определяется условием

Здесь
и
являются параметрами алгоритма.
Алгоритм
статистического градиента.
Генерируются
реализаций
случайного вектора
и вычисляются разности
для всех
.
Затем находят вектор
,
где сумма берется по всем тем
,
для которых
.
Если
,
то принимается
.
Если же
,
то повторяют описанный процесс с новым
набором из
реализаций случайного вектора
.
Величины
являются параметрами алгоритма. Вектор
называется статистическим градиентом.
Если
и векторы
являются неслучайными и совпадают с
соответствующими единичными векторами![]()
,
то описанный алгоритм превращается в
разностный аналог градиентного метода.
В
рассмотренных вариантах метода случайного
поиска закон распределения вероятностей
случайного вектора
предполагался не зависящим от номера
итерации. Такой поиск называют случайным
поиском без обучения. В алгоритмах,
реализующих случайный поиск без обучения,
отсутствуют анализ результатов
выполненных итераций и определение
перспективных направлений продолжения
поиска точки минимума, в силу чего
скорость сходимости в общем случае
оказывается невысокой. Однако если на
каждой очередной итерации учитывать
накопленный опыт поиска минимума на
предыдущих итерациях и перестраивать
вероятностные свойства поиска так,
чтобы направления
,
более перспективные в смысле убывания
функции, становились более вероятными,
то от метода случайного поиска можно
ожидать большей эффективности. Таким
образом, желательно иметь алгоритмы
случайного поиска, обладающие способностью
к самообучению и самоусовершенствованию
в процессе поиска минимума в зависимости
от конкретных особенностей минимизируемой
функции. Такой поиск называют случайным
поиском с обучением. Обучение осуществляется
путем целенаправленного изменения
закона распределения вероятностей
случайного вектора
в зависимости от номера итерации и
результатов предыдущих итераций таким
образом, чтобы перспективные направления
поиска сделать более вероятными, а
другие направления – соответственно
менее вероятными. Поскольку на различных
этапах метода случайного поиска с
обучением используются реализации
случайных векторов
с различными законами распределения
вероятностей, итерационный процесс
(3.5.18) удобнее записать в виде, учитывающем
зависимость случайного вектора
от
:
(3.5.19)
В
начале поиска закон распределения
случайного вектора
выбирают с учетом имеющейся априорной
информации о минимизируемой функции
.
Если такая информация отсутствует, то
поиск обычно начинают со случайного
вектора
,
компоненты которого являются независимыми
случайными величинами, распределенными
равномерно на отрезке
.
Для
обучения алгоритма в процессе поиска
часто используют семейство случайных
векторов
,
зависящих от параметров
,
и при переходе от
-й
итерации к
-й
итерации имеющиеся значения параметров
заменяют новыми значениями
с учетом результатов предыдущего поиска.
Рассмотрим
два варианта метода случайного поиска
с обучением для минимизации функции
на всем пространстве
.
Алгоритм
покоординатного обучения.
Пусть имеется семейство случайных
векторов
,
каждая координата
которых принимает два значения:
с вероятностью
и
с вероятностью
,
где вероятность
зависит от параметра
следующим образом:
(3.5.20)
Пусть
начальное приближение
уже выбрано. Тогда для определения
следующего приближения
в формуле (3.5.19) при
используется какая-либо реализация
случайного вектора
,
соответствующего набору значений
параметров
.
Приближение
определяется по формуле (3.5.19) при
с помощью случайного вектора
.
Допустим, что известны приближения
и значения параметров
при некотором
.
Тогда полагаем
(3.5.21)
где
величина
называется параметром забывания,
– параметром интенсивности обучения,
.
При определении следующего приближения
в формуле (3.5.19) используем реализацию
случайного вектора
.
Из
(3.5.20), (3.5.21) видно, что если переход от
точки
к
привел к уменьшению значения функции,
то вероятность выбора направления
на следующем шаге увеличивается. Если
же при переходе от
к
значение функции увеличилось, то
вероятность выбора направления
на последующем шаге уменьшается. Таким
образом, посредством формул (3.5.21)
осуществляется обучение алгоритма.
Величина
в (3.5.21) регулирует скорость обучения:
чем больше
,
тем быстрее обучается алгоритм; при
обучение отсутствует. Величина
в (3.5.21) регулирует влияние предыдущих
значений параметров на обучение
алгоритма; при
алгоритм «забывает» предыдущие значения
.
Для устранения возможного чрезмерного
детерминирования алгоритма и сохранения
его способности к достаточно быстрому
обучению на параметры
накладываются ограничения
и при нарушении этих ограничений
заменяются ближайшим из чисел
и
,
.
Величины
являются параметрами алгоритма.
Вместо формул (3.5.21) часто пользуются формулами
(3.5.22)
Рассмотренный
алгоритм покоординатного обучения
имеет недостаток, состоящий в том, что
поиск и обучение происходят лишь по
одному из
направлений
,
где либо
,
либо
.
Отсутствие «промежуточных» направлений
делает покоординатное обучение
немобильным в областях с медленно
изменяющимися направлениями спуска.
От этого недостатка свободен следующий
алгоритм.
Алгоритм
непрерывного самообучения.
Пусть имеется семейство случайных
векторов
,
где
– параметры обучения,
– случайный вектор, координаты
которого являются независимыми случайными
величинами, распределенными равномерно
на отрезке
.
Поиск начинается с рассмотрения случайных
векторов
,
реализации которых используются при
определении приближений
по формулам (3.5.19). Обучение алгоритма
при
производится так же, как в алгоритме
покоординатного обучения, с помощью
формул (3.5.21) или (3.5.22). При больших
значениях
влияние случайной величины
уменьшается, и направление
становится более детерминированным и
близким к направлению
.
Во избежание излишней детерминированности
метода на параметры
накладывают ограничения
,
и при нарушении этих ограничений
заменяется на
.
Рассмотренный алгоритм, также как и
алгоритм покоординатного обучения,
характеризуется уменьшением фактора
случайности и увеличением степени
детерминированности в ходе поиска
минимума, следуя преимущественно
направлению убывания функции. В то же
время наличие случайного фактора в
выборе направления дает возможность
придать алгоритму большую гибкость,
особенно в тех случаях, когда свойства
целевой функции в районе поиска изменились
или предыдущее обучение оказалось
недостаточно точным.
