10. Нелинейное программирование.ppt
- Количество слайдов: 11
10. Нелинейное программирование 1. 2. 3. Общая формулировка задачи. Метод множителей Лагранжа. Градиентный метод.
1. Общая формулировка задачи Если целевая функция или система ограничений (или и та и другая) содержит выражения, нелинейные относительно искомых величин, то имеем задачу нелинейного программирования. n Общая формулировка задачи имеет вид [1]: F = f(x 1, x 2, …, xn) max/min (10. 1) при ограничениях gi (x 1, x 2, …, xn) ≤ bi, i=1, 2, …, k (10. 2) gi (x 1, x 2, …, xn) = bi, i=k+1, …, m, где f и gi некоторые известные функции n переменных, а bi заданные числа. n
Графическая интерпретация Если в задачах линейного программирования точка экстремума является вершиной многогранника, то в задачах нелинейного программирования она может лежать в вершине многогранника, на ребре (грани) или внутри области. n Если определена область допустимых решений, то нахождение решения задачи (10. 1) – (10. 2) сводится к определению такой точки этой области, через которую проходит гиперповерхность наивысшего (наинизшего) уровня: f(x 1, x 2, …, xn) = h. n
Алгоритм нахождения оптимального решения графическим методом n n Находят область допустимых решений задачи, определяемую соотношениями (10. 2) (если она пуста, то задача не имеет решения). Строят гиперповерхность f(x 1, x 2, …, xn) = h. Определяют гиперповерхность наивысшего (наинизшего) уровня или устанавливают неразрешимость задачи из-за неограниченности функции (10. 1) сверху (снизу) на множестве допустимых решений. Находят точку области допустимых решений, через которую проходит гиперповерхность наивысшего (наинизшего) уровня, и определяют в ней значение функции (10. 1).
2. Метод множителей Лагранжа В частном случаи задачи нелинейного программирования, когда система ограничений (10. 2) содержит только уравнения, то получим классическую задачу на условный экстремум, которая может быть решена методом множителей Лагранжа. Для применения этого метода необходимо, чтобы функции f(x 1, x 2, …, xn) и gi(x 1, x 2, …, xn) были непрерывными вместе со своими частными производными. Чтобы найти решение этой задачи вводят набор переменных λ 1, λ 2, …, λm , называемых множителями Лагранжа и составляют функцию Лагранжа n n F(x 1, x 2, …, xn, λ 1, λ 2, …, λm)=f(x 1, x 2, …, xn)+ n находят частные производные n λi[bi-gi(x 1, x 2, …, xn)] и рассматривают систему (n+m) уравнений (10. 3)
Алгоритм метода множителей Лагранжа n n Составляют функцию Лагранжа. Находят частные производные от функции Лагранжа по переменным хj и λi и приравнивают их нулю. Решая систему уравнений (10. 3), находят точки, в которых целевая функция задачи может иметь экстремум. Среди точек, в которых ожидается возможность экстремума, находят такие, в которых достигается экстремум, и вычисляют значения функции (10. 1) в них.
Выпуклое нелинейное программирование Задача нелинейного программирования: n f(x 1, х2, . . . , хn) -> max /min (10. 4) при условиях n gi(x 1, x 2, …, xn) ≤ bi, i=1, 2, …, m (10. 5) n xj ≥ 0, j = 1, 2, …, n, (10. 6) где f и gi – некоторые функции n переменных x 1, x 2, …, xn. При этом, если f – вогнутая (выпуклая) функция и область допустимых решений, определяемая ограничениями (10. 5) и (10. 6), – выпуклая. Тогда функцией Лагранжа задачи выпуклого программирования называется функция n L( x 1, х2, . . . , хn, y 1, y 2, . . . , yn ) = f(x 1, х2, . . . , хn) + где y 1, y 2, . . . , yn, – множители Лагранжа. yi[bi-gi(x 1, x 2, …, xn)]
Теорема Куна-Таккера n n Для задачи выпуклого программирования вектор X 0 = (x 01, x 02, …, x 0 n) является оптимальным планом тогда и только тогда, когда существует такой вектор Y 0 = y 01, y 02, …, y 0 n, что (Х 0, У 0) – седловая точка функции Лагранжа. Если предположить, что целевая функция f и функции gi непрерывно дифференцируемы, то теорема Куна. Таккера может быть дополнена аналитическими выражениями, определяющими необходимые и достаточные условия того, чтобы точка (Х 0, У 0) была седловой точкой функции Лагранжа, то есть являлась решением задачи выпуклого программирования.
3. Градиентные методы n Используя градиентные методы, можно найти решение любой задачи нелинейного программирования. Вектор, координатами которого служат значения частных производных функции f(x 1, х2, . . . , хn), называется градиентом этой функции и обозначается Grad f. В каждой точке градиент будет свой. Он показывает направление наибольшего возрастания функции в данной точке, которое всегда перпендикулярно проходящей через нее линии уровня (рис. 10. 1). Используя градиентные методы, можно найти решение любой задачи нелинейного программирования. Выбрав в области допустимых решений первоначальную точку А. Вычисляем в выбранной точке координаты градиента целевой функции. Составляем параметрические уравнения прямой, проходящей через точку А параллельно градиенту. В случае нахождения максимума перемещаемся по прямой в направлении градиента, для минимизации функции движемся в противоположном направлении.
Перемещение внутри допустимой области n n 1. Из начальной точки движемся в направлении градиента до тех пор, пока целевая функция перестанет возрастать. Это движение осуществляется с определением величины функционала и проверяется допустимость полученного решения. Достигнув наивысшей в данном направлении точки (точка В на рис. 10. 1), снова определяем градиент и по новому направлению перемещаемся на максимально возможную величину и т. д. Такой порядок расчетов соответствует наискорейшему подъему и применяется тогда, когда значение функционала вычислить проще, чем его градиент. В задачах на минимум движение происходит в сторону убывания функции, и такой метод носит название наискорейшего спуска.
Перемещение с выходом за область допустимых решений 2. Из начальной точки по линии, параллельной градиенту, перемещаемся на некоторый интервал h. Во второй точке определяем свой градиент и по новому направлению снова перемещаемся на величину h. Получаем третью точку и т. д. Так небольшими переходами, корректируя всякий раз направление движения, достигаем точки, соответствующей оптимальному значению функционала (максимум, минимум). Признаком достижения оптимума является получение нулевых составляющих градиента. При перемещении по направлению градиента может оказаться, что найденная точка лежит вне области (т. е. на данном шаге пересечена граница области). В этом случае экстремум, как правило, достигается на границе, и его нахождение усложняется. Возврат в область простым уменьшением последнего шага неэффективен, поскольку нет уверенности, что экстремальная точка находится в пересечении с границей именно этого направления. Необходим возврат с одновременным смещением в сторону оптимума точку М (рис. 10. 2).
10. Нелинейное программирование.ppt