Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОИТ_Учебник.doc
Скачиваний:
1632
Добавлен:
22.02.2016
Размер:
11.29 Mб
Скачать

7.1.3.2 Метод Ньютона

Алгоритм метода Ньютона состоит в следующем.

1. В начальной точке х [0] вычисляется вектор

p[0] - H-1(x[0])f’([0]).

2. На k-й итерации определяются шаг аk и точка х[k+1].

3. Вычисляется величина f(х[k+1]).

4. Проверяются условия выхода из подпрограммы, реализующей данный алгоритм. Эти условия аналогичны условиям выхода из подпрограммы при методе наискорейшего спуска. Если эти условия выполняются, осуществляется прекращение вычислений. В противном случае вычисляется новое направление

р[k+1] H-1(x[k])f’([k])

и осуществляется переход к следующей итерации.

Количество вычислений на итерации методом Ньютона, как правило, значительно больше, чем в градиентных методах. Это объясняется необходимостью вычисления и обращения матрицы вторых производных целевой функции. Однако на получение решения с достаточно высокой степенью точности с помощью метода Ньютона обычно требуется намного меньше итераций, чем при использовании градиентных методов. В силу этого метод Ньютона существенно более эффективен. Он обладает сверхлинейной или квадратичной скоростью сходимости в зависимости от требований, которым удовлетворяет минимизируемая функция f(x). Тем не менее в некоторых задачах трудоемкость итерации методом Ньютона может оказаться очень большой за счет необходимости вычисления матрицы вторых производных минимизируемой функции, что потребует затрат значительного количества машинного времени.

В ряде случаев целесообразно комбинированное использование градиентных методов и метода Ньютона. В начале процесса минимизации, когда точка х[0] находится далеко от точки экстремума х*, можно применять какой-либо вариант градиентных методов. Далее, при уменьшении скорости сходимости градиентного метода можно перейти к методу Ньютона.

7.2 Линейное программирование

Под линейным программированием понимается раздел теории экстремальных задач, в котором изучаются задач и минимизации (или максимизации) линейных функций на множествах, задаваемых системами линейных равенств и неравенств. В общем случае задача линейного программирования формулируется следующим образом. Найти вектор х* (x*1, ..., х*n), определяющий максимум (минимум) линейной форме

f(x) с1x1 + с2x2+...+сnxn(7.17)

при ограничениях (7.18) :

a11x1 + … a1nxn b1;

. . . . . . . . . . . . . . . . . . .

am1x1 + … amnxn bm;

am+1x1+… am+1,nxn bm+1;

. . . . . . . . . . . . . . . . . . . (7.18)

akx1 + … aknxn bm;

ak+1 x1 + … ak+1nxn bm;

am+1x1 + … am+1,nxn bm+1;

. . . . . . . . . . . . . . . . . .

alx1 + … alnxn bl;

xi 0; i 1, …, n.

Каждое из условий-неравенств определяет полупространство, ограниченное гиперплоскостью. Пересечение полупространств образует выпуклый п-мерный многогранник Q. Условия равенства выделяют из n-мерного пространства (п-l) -мерную плоскость, пересечение которой с областью Q дает выпуклый (n-l) -мерный многогранник G. Экстремальное значение линейной формы (если оно существует) достигается в некоторой вершине многогранника. При вырождении оно может достигаться во всех точках ребра или грани многогранника. В силу изложенного для решения задачу линейного программирования теоретически достаточно вычислить значения функции в вершинах многогранника и найти среди этих значений наибольшее или наименьшее. Однако в практических задачах количество вершин области G настолько велико, что просмотр их даже с использованием ЭВМ невозможен. Поэтому разработаны специальные численные методы решения задач линейного программирования, которые ориентируются в основном на две формы записи задач. Каноническая форма задачи линейного программирования:

f(x) с1х1 + ...+ сnxn > ?max(min); (7.19)

a11x1 +… a1nxn b1;

. . . . . . . . . . . . . . . . . . (7.20)

amx1 +… amnxn bm;

xi 0; i 1, …, n.

или в матричной форме:

(с, х) ? > max(min); (7.21)

Ax b,

х 0.

Здесь А (аij) - (mхn) - матрица условий. Ее столбцы (a1j, ..., аmj)T , j 1, ..., п, называются векторами условий. Вектор b (b1, ..., bm)T носит название вектора правых частей, а с (с1, …, сn) - вектора коэффициентов линейной формы.

Задача линейного программирования с однотипными условиями

f(x) с1х1 + ...+ сnxn ? > max(min); (7.22)

a11x1 +… a1nxn b1;

. . . . . . . . . . . . . . . . . .

amx1 +…amnxn bm;

или в матричной форме:

, х) ? > max(min); (7.23)

Ax b,

Любую задачу можно привести к каждой из приведенных форм с помощью приемов, описанных ниже.

Переход к эквивалентной системе неравенств.

Знак неравенства можно поменять на обратный, меняя знаки свободного члена и коэффициентов. Например, ограничение

a11x1 +…a1nxn b1;

можно заменить условием

a11x1 +…‑a1nxn -b1.

Переход от ограничения - неравенства к равенству

Для этого необходимо ввести дополнительную неотрицательную переменную. Так, условие

a1x1 +…anxn b.

эквивалентно двум ограничениям:

a11x1+…‑a1nxn+xn+1 b; xn+1 b1.

Представление ограничения-равенства парой неравенств.

Ограничение

alx1 +… anxn b;

можно представить парой условий:

a11x1 +… a1nxn b1.

a11x1 +…-a1nxn -b1.

Переход к неотрицательным переменным

Если на знак переменной хi не наложено ограничений, можно заменить ее разностью двух неотрицательных переменных:

xi xn+2 - xn+1, xn+1 0; xn+2 0.

Переход от переменных, ограниченных снизу, к неотрицательным переменным

Если переменная ограничена снизу хi bi то, заменив ее по формуле хi уi + bi переходим к задаче с неотрицательной переменной уi 0.

Наиболее употребительным численным методом решения задач линейного программирования является симплекс-метод.

Идея этого метода состоит в следующем. Отыскиваются некоторая вершина многогранника G и все ребра, выходящие из этой вершины. Далее перемещаются вдоль того из ребер, по которому функция убывает (при поиске минимума), и попадают в следующую вершину. Находят выходящие из нее ребра и повторяют процесс. Когда приходят в такую вершину, в которой вдоль всех выходящих из нее ребер функция возрастает, то минимум найден. Отметим, что, выбирая одно ребро, исключают из рассмотрения вершины, лежащие на остальных траекториях. В результате количество рассматриваемых вершин резко сокращается и оказывается посильным для ЭВМ. Симплекс-метод весьма эффективен и широко применяется для решения задач линейного программирования.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]