Метод покоординатного спуска
Идея всех методов спуска состоит в том, чтобы из начального приближения точки x(0)=(x1(0), x2(0),…, xn(0)) перейти в точку x(1)=(x1(1), x2(1),…, xn(1)) такую, чтобы f(x(0))> f(x(1)).
Пусть
в области D
задано нулевое приближение x(0).
Фиксируем значение x2(0),x3(0),…,
xn(0)
и рассматриваем функцию f(x1,
x2(0),…,
xn(0))
как функцию одной переменной x1.
Находим минимум этой функции
.
Пусть x1(1)
доставляет минимум этой функции. f(x1(1),
x2(0),…,
xn(0))≤
f(x1(0),
x2(0),…,
xn(0)).
Далее фиксируем значения x3(0),x4(0),…, xn(0) и рассматриваем функцию
f(x1(1), x2,x3(0),…, xn(0)) как функцию одной переменной x2 и т.д.
После n шагов получим f(x1(1), x2(1),x3(1),…, xn(1))≤ f(x1(0), x2(0),x3(0),…, xn(0)).
В результате первого шага покоординатного спуска происходит переход из начальной точки x0 в точку x1.
1) если f(x(0))= f(x(1)), то x(0) – точка минимума f(x).
2) если f(x(0))> f(x(1)), то выполняется следующий шаг покоординатного спуска, в котором за начальную точку принимается x(1).
Этот процесс продолжается до тех пор, пока f(x(k+1))-f(x(k))<ε, где ε – заданная точность.
Метод градиентного спуска
Численные
методы отыскания минимума состоят в
построении последовательности векторов
{x(k)},
удовлетворяющих условию f(x(0))>
f(x(1))>…>
f(x(k)).
В этих методах элементы последовательности
вычисляются по формуле x(k+1)=x(k)+hk*
(k),
где
(k)
– направление спуска, hk
– длина шага в этом направлении.
Как известно, градиент функции в некоторой тоске направлен в сторону наискорейшего локального возрастания функции, следовательно, спускаться нужно в направлении, противоположному градиенту. Этот вектор называется антиградиентом.
Используя антиградиент в качестве направления спуска, приходим к итерационному процессу вида:
(1)
Все методы спуска, в которых вектор (k) совпадает с антиградиентом, называются градиентными методами.
Для минимизации функции используется метод градиентного спуска с дроблением шага. Процесс (1) с дроблением шага протекает следующим образом: выбираем некоторое значение x(0), затем выбираем hk=h=const и на каждом шаге процесса выбираем условие монотонности f(x(k+1))<f(x(k)). Если это условие нарушается, то h дробим до тех пор, пока монотонность не восстановится.
Для окончания счета можно использовать критерии:
Наиболее важным моментом в этом методе - это выбор шага. Формула (1) с постоянным шагом практически не применяется.
Метод наискорейшего спуска
Вычисление градиента на каждом шаге, позволяющее всё время двигаться в направлении наиболее быстрого убывания функции, в то же время может замедлить вычислительный процесс. Часто пользуются модификацией градиентного метода, получившее название метод наискорейшего спуска.
Согласно этому методу после вычисления в начальной точке градиента функции делают в направлении антиградиента не маленький шаг, а движутся до тех пор, пока функция убывает. Достигнув точки минимума на выбранном направлении, снова вычисляют градиент функции и повторяют процедуру. Таким образом, в методе наискорейшего спуска величина hk определяется из условия:
,
т.е. на каждом шаге решается задача минимизации.
15. Задачи линейного программирования.
Задачи оптимизации, в которых целевая функция представлена в виде линейной комбинации, а ограничения в виде линейных неравенств, называются задачами линейного программирования.
Задачи
линейного программирования заключаются
в нахождении таких значений
,
которые максимизируют или минимизируют
линейную функцию
в условиях ограничений:
Среди
ограничений часто встречаются условия
неотрицательности всех или части
переменных:
