![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Общая задача нелинейного программирования без ограничений состоит в минимизации функции f( x )=f(x1, x2,..., xп}, заданной во всем n-мерном евклидовом пространстве. Функция f(х) называется целевой функцией [10].
Как правило, численные методы отыскания экстремума состоят в построении последовательности векторов {х(k)}, удовлетворяющих условию f(х(0))>f(х(1))>…>f(х(n)). Методы построения таких последовательностей называются методами спуска. В этих методах элементы последовательности {х(k)} вычисляются по формуле
(2.60)
где p(k) – направление спуска; ak – длина шага в этом направлении.
Как известно, градиент функции в некоторой точке х(k) направлен в сторону наискорейшего локального возрастания функции. Следовательно, спускаться нужно в направлении, противоположном градиенту. Вектор, противоположный градиенту, называется антиградиентом. Выбирая антиградиент в качестве направления спуска, приходят к итерационному процессу вида
(2.61)
Все методы спуска, в которых вектор р(k) совпадает с антиградиентом, называются градиентными методами. Они отличаются друг от друга только способом выбора шага. Наиболее употребительны метод наискорейшего спуска и метод дробления шага. В методе наискорейшего спуска величина ak определяется из условия
,
т. е. на каждом шаге решается одномерная задача минимизации. Геометрическая интерпретация этого метода достаточно проста (рис. 2.7). Заметим, что на двух последовательных шагах направления спуска ортогональны [10].
Рис. 2.7.
Если f(х) – ограниченная снизу непрерывно дифференцируемая функция и для некоторой начальной точки х(0) множество {х:f(х)<f(х(0))} также ограничено, то для метода наискорейшего спуска последовательность {х(k)} либо сходится к точке минимума при k®¥, либо достигает точки минимума за конечное число шагов.
В данной лабораторной работе для минимизации функции использован метод градиентного спуска с дроблением шага. Процесс (2.61) с дроблением шага протекает следующим образом. Выбираем некоторое начальное значение х(0). Общих правил выбора х(0) нет; если есть информация об области расположения искомой точки минимума, то точку х(0) выбираем в этой области. Затем выбираем некоторое ak = a = const и на каждом шаге процесса (2.61) проверяем условие монотонности f(х(k+1)) <f(х(k)). Если это условие нарушается, то a дробим до тех пор, пока монотонность не восстановится. Для окончания счета можно использовать различные критерии. В данной работе итерации прекращаем, если
.
В этом случае полагаем хmin = х(k+1). Здесь
Описанный алгоритм реализован в виде подпрограммы Minim (f, xy, grad, k, h, eps), где
f – исходная функция,
xy – вектор с координатами x и y,
grad – подпрограмма, вычисляющая координаты градиента,
k – число итераций,
h – шаг,
eps – погрешность.
Задание.
Используя подпрограмму Minim, минимизировать заданную целевую функцию.
Дата публикования: 2014-11-04; Прочитано: 1031 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!