- •Введение
- •1. Введение в системное моделирование
- •1.1. Понятие системы
- •1.2. Структура, функция и эффективность системы. Управление системой
- •1.3. Системный подход к моделированию
- •1.4. Системный характер технологических объектов
- •1.5. Действующий элемент системы
- •1.6. Системы автоматизированного моделирования
- •1.7. Экспертные системы
- •Контрольные вопросы и задания
- •2. Общие вопросы математического моделирования
- •2.1. Понятие моделирования. Математическая модель
- •2.2. Оптимальное моделирование
- •2.3. Некоторые типовые оптимизационные модели
- •Контрольные вопросы и задания
- •3. Нелинейные модели оптимизации
- •3.1. Градиентные методы
- •3.2. Общая задача нелинейного программирования. Постановка задачи
- •3.3. Градиентные методы
- •3.4. Случайный поиск с локальной оптимизацией
- •Контрольные вопросы и задания
- •Заключение
- •Библиографический список
- •394006 Воронеж, ул. 20-летия Октября, 84
3.3. Градиентные методы
В рассматриваемых методах используются свойства градиента. Выбирая в формуле (33) в качестве направления спуска антиградиент, получим следующий итерационный процесс поиска в координатной форме:
(34)
где
частные производные
,
вычисляются либо по формуле (29), либо
(30); xk=(x1kx2k
…., xik,
xmk
).
Существуют
различные способы выбора шага
в
формулах (34). При этом следует помнить,
что, с одной стороны, длина шага не должна
быть слишком большой, чтобы не «проскочить»
экстремум (алгоритм может зациклиться),
с другой – длина шага не должна быть и
слишком малой, чтобы итерационная
процедура оптимизации не оказалась
медленная. Ниже рассмотрим два возможных
способа выбора шага
.
Первый заключается в том, что фиксируется
некоторое значение
>0
и процедура оптимизации реализуется
для k
= 0,1,2,... с некоторой начальной точки ͞
такое число раз, пока не станет q(͞
)
≥ q(͞
).
С этого момента для того, чтобы ближе
подойти к минимуму, величина шага
уменьшается, итерационная процедура
(34) повторяется и т.д.
Второй способ – это так называемый метод наискорейшего спуска. Здесь на каждой итерации величина выбирается таким образом, чтобы в направлении спуска целевая функция достигала своего минимального значения. Другими словами, выбирается из условия
(35)
Такой подход на каждой итерации предполагает решать задачу скалярной (одномерной) минимизации (35) по переменной , которая может оказаться трудоемкой, особенно в условиях, когда вычисления функции сложны либо q(͞х) не дифференцируема и минимизация проводится перебором с некоторым шагом. В то же время метод наискорейшего спуска дает выигрыш в числе машинных операций, так как обеспечивает движение с самой выгодной величиной шага .
Следует помнить, что метод наискорейшего спуска в отличие от обычного градиентного с выбором по первому способу обеспечивает направление движения из точки ͞ по касательной к линии уровня в точке ͞ , причем звенья такого зигзагообразного спуска ортогональны между собой (рис. 3.9).
а б
Рис. 3.9. Траектория спуска: а – градиентный метод; б – наискорейший спуск
В общем случае считается, что в рассмотренных выше методах градиентного спуска последовательность точек {͞ } сходится к стационарной точке функции q(x).Можно доказать следующую теорему.
Теорема. Если функция q(͞x) ограничена снизу, ее градиент удовлетворяет условию Липшица:
где
R
– константа Липшица
͞х,
͞у
En
и выбор значения
производится одним из описанных выше
способов, то, какова бы ни была начальная
точка,
.
Теорема даёт практические условия прекращения итерационной процедуры поиска в виде
(36)
где δ > 0 – число, характеризующее точность нахождения минимума.
Пример.
В
качестве начальной точки возьмём
Первая итерация. Вычислим градиент в точке ͞x0: grad q(x) = (12,10,6). Сделаем шаг в направлении антиградиента из точки ͞х0 в точку ͞х1 .
Для этого используем формулы (34):
В нашем случае
(37)
Используем наискорейший спуск – выберем длину шага из условия (35):
Для
нахождения минимума по переменной
приравняем производную по этой переменной
к нулю: -48
или после преобразований :
.
Отсюда
учитывая соотношения(37),
Здесь
=(4,32;
-6; 0,24).
Заметим, что с условиями (36):
Вторая итерация. Вновь по формулам (34):
или
,
Величину
выбираем из условия
Приравнивая
производную по α,
к нулю и решая уравнение, получим α=
0,13. Тогда ͞
= (0,52; 0,18; 0,01); q(͞
)
= 0,7<q(͞
)
= 4,14<q(͞
)=26.
Как видим, с каждой итерацией q(͞ ) приближается к своему оптимальному значению, равному 0.
Можно показать, что градиентные методы имеют сходимость со скоростью геометрической прогрессии. Из рис. 3.10 видно, что чем ближе линии уровня функции q(͞x) к окружности, тем быстрее сходятся градиентные методы. В тех случаях, когда поверхности уровня сильно вытянуты (функция имеет так называемой «овражный» характер), этот метод может сходиться очень медленно и не обеспечить заданной точности поиска.
Рис.3.10. Траектории поиска методом наискорейшего спуска
Например, если точка минимума лежит на дне оврага (на узком гребне – если решается задача на максимум), то метод может вызвать прыжки через овраг (рис. 3.11).
Рис. 3.11. Градиентный поиск минимума овражной функции
Для ускорения поиска экстремума в этом случае используется так называемый овражный метод.
Опишем
простейший его вариант. Из двух начальных
точек ͞
и ͞
производится одним из градиентных
методов спуск в точки ͞
и ͞
на дне оврага. Допустим, что при этом q(
͞
)<q(͞
).
Далее делается движение по дну оврага, для этого полагается:
где h > 0 называется овражным шагом.
Из
точки ͞
,
которая, вообще говоря, находится на
«склоне оврага», производится спуск на
дно оврага в точку
,
определяется точка
͞х3
и т.д. В общем, процесс движения по дну
оврага описывается следующей итерационной
формулой:
(38)
Если
уже найдены
, ͞
,
то из точки
осуществляют спуск и находится следующая
точка
на дне оврага (рис. 3.12).
Рис. 3.12. Овражный поиск минимума
(спуск
из точек
и
схематично изображен в виде отрезка
прямой)
Величина
h
на каждой итерации поиска подбирается
эмпирически в зависимости от информации
о поведении минимизируемой функции.
При этом необходимо помнить, что величину
овражного шага требуется выбирать так,
чтобы по возможности быстрее проходить
прямолинейные участки на «дне оврага»
за счет увеличения овражного шага; на
крутых поворотах за счет уменьшения
шага избежать выброса из «оврага»;
добиться меньшего отклонения точек ͞
от «дна оврага» и тем самым сократить
объем вычислений в процедурах градиентного
спуска.
Учет
ограничений.
Ограничения в задаче НП создают
дополнительные трудности в процессе
поиска минимума (максимума). Будем
рассматривать ограничения в виде
неравенств
(͞x)≤0,
k=͞1͞,
P,
которые могут также выступать в качестве
выходов ТП.
Необходимо помнить, что для достижения минимума не обязательно двигаться в направлении градиента, а можно осуществлять поиск по любому направлению, вдоль которого функция q(͞x) убывает. Поэтому, если в процессе движения к оптимуму встретилось ограничение (граница) допустимой области решений D, поиск можно продолжать вдоль этой границы. Одним из простейших способов такого движения является зигзагообразное движение, в этом случае при нарушении ограничений следует оптимизацию проводить не по функции q(͞x), а по k нарушенным ограничениям, минимизируя сумму q̂(͞x)=∑ (͞x), (k≤p). Определяя антиградиент этой суммы (-gradq̂(͞x)), организуют движение в направлении этого антиградиента, и тем самым производится возврат в область допустимых решений D.
Такой подход эквивалентен минимизации некоторой функции Q(͞х) следующего вида:
На рис. 3.13 показан пример такого поиска минимума.
0
Рис. 3.13. Работа градиентного метода в условиях ограничений
