Лекция. ЗАДАЧИ НЕЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ. Признаки задач нелинейного программирования: 1. Нелинейная целевая функция. 2. Нелинейные ограничения. Если в задаче присутствует хотя бы один признак, то она относится к задачам нелинейного программирования. 1. Методы поиска безусловного экстремума функции одной переменной В задачах на поиск безусловного экстремума отсутствуют ограничения. 1.1. Аналитический метод Постановка задачи: f(x) – функция одной переменной, требуется найти точки экстремума и определить вид экстремума. 1. Находится производная заданной функции и приравнивается нулю: f ( x ) 0 . 2. Находятся корни полученного уравнения хi, i 1, n , n – порядок уравнения. 3. Определение типа экстремума по второй производной: 4. d2 f 0 , то функция в точке xi имеет максимум; если 2 dx x x i d2 f если dx 2 0 , то функция в точке xi имеет минимум. x xi Пример. f ( x) x 2 5 x 6 f ( x) 2 x 5 0 , x 2,5 , f ( x ) 2 , тип экстремума – минимум. 1.2. Численные методы В этих методах не производной. требуется находить аналитическое значение 1.2.1. Основные понятия и определения Унимодальная функция – это функция, имеющая один экстремум, причем слева и справа от экстремума либо строго убывающая, либо строго возрастающая. Интервал неопределенности. Отрезок а,b называется интервалом неопределенности, если внутри него функция имеет экстремум. Точность нахождения экстремума. Положим х0 – точное значение экстремума, x0 – приближенное. Тогда экстремум найден с точностью ε, если выполняется условие x0 x0 . Постановка задачи поиска экстремума численными методами Дано: 1. Начальный интервал неопределенности а0, b0. 2. Функция f(x), унимодальная на отрезке а0, b0. 3. Точность нахождения экстремума (). Требуется с заданной точностью на отрезке а0, b0 найти экстремум функции f(x). 1.2.2 Метод ненаправленного поиска b0 a0 1. Отрезок а0, b0 делится на N частей, где N . 2. Находятся координаты точек хi, расположенных внутри интервала неопределенности: хi = а0 + (i – 1) , i 1, N 1. 3. Рассчитываются значения функции в точках f(хi). 4. Из полученных значений выбирается минимальное (максимальное): F0 = min {f(xi)}, i = 1, (N+1), Точка хi, соответствующая F0 – точка экстремума. Достоинство алгоритма – простота, недостаток – низкая производительность (для = 1% требуется рассчитать значения функции в 101 точке). 1.2.3. Метод дихотомии (деление отрезка пополам) . 2 1. Интервал неопределенности делится пополам. 2. Находятся значения функции в двух точках, отстоящих от центра на 3. По результату сравнения этих значений отбрасывается та часть интервала неопределенности, в которой экстремума быть не может. При этом интервал неопределенности сокращается приблизительно на половину. 4. На следующем интервале повторяются те же действия. Рассмотрим более подробно этот метод. Пусть требуется найти минимум функции f(x) на интервале а0, b0 (рис. 1). Рис. 1. Метод дихотомии 1. Находим координату центра интервала неопределенности: a b0 . x0 0 2 2. Находим точки, равноотстоящие от х0 на : 2 x0 x0 , x0 x0 . 2 2 3. Находим значения функции в точках х0 и х0, f(х0) и f(х0). Пусть f(х0) > f(х0). 4. Отбрасываем часть отрезка левее х0, так как там минимума нет. Выводы по методу. 1. На каждом шаге приближения к экстремуму функция вычисляется дважды. 2. На начальных шагах интервал неопределенности уменьшается примерно на половину. По мере приближения к экстремуму, когда значение становится соизмеримым с интервалом неопределенности, уменьшается доля отбрасываемой части, т.е. отбрасываемая часть интервала неопределенности не постоянна, что является недостатком метода. 3. Достоинство метода – производительность выше, чем в методе ненаправленного поиска. (Для нахождения экстремума с = 1% требуется 20 вычислений функции.) 1.2.4. Метод «золотого сечения» Сечение отрезка называется «золотым», если отношение всего отрезка к большей его части равно отношению большей части к меньшей. Пусть d – длина отрезка, х – длина большей части отрезка, тогда «золотое сечение»: d x (1) . x dx Примем d = 1, тогда 1 x (2) , x 1 x 1 x x2 , 1 5 x , 2 5 1 (3) x 0,618, 2 3 5 1 x 0,382 . 2 Рассмотрим алгоритм метода. Введем обозначения: ак, bк – границы интервала неопределенности на ктом шаге приближения к экстремуму. Отметим на этом интервале точки ук, zк, причем yк ближе к левой границе, а zк ближе к правой границе интервала неопределенности. Точки yк и zк симметричны относительно центра и составляют золотое сечение отрезка ак, bк: Этапы алгоритма. 1. Находят координаты точек y0 и z0 . 3 5 b0 a0 , y 0 a0 2 z 0 b0 (Y0 a0 ) a0 b0 Y0 . 2. Вычисляется функция в точках y0 и z0 . 3. Отбрасывается та часть интервала неопределенности, где экстремума быть не может. Записываются новые координаты интервала. Рис. 2. Метод золотого сечения Положим, f(y0) > f(x0), тогда для поиска минимума отбрасывается левая часть интервала неопределенности (а0, y0). В этом случае а1 = y0, b1 = b0, y1 = z0, z1 = а1 + b1 – y1 (при отбрасывании правой части объекта y1 = а1 + b1 – z1). 4. Нахождение длины нового интервала и сравнение ее с 2: l1 = b1 – а1. При l1 2 решение найдено; при l1 2 делается еще один шаг, причем на каждом последующем шаге значение функции вычисляется только в одной точке (либо в точке yк, либо в точке zк). Анализ метода. 1. На каждом шаге приближения к экстремуму интервал неопределенности уменьшается примерно на 38%. 2. На каждом шаге, кроме нулевого, функция вычисляется один раз. 3. Высокая производительность. (Для нахождения экстремума с точностью = 1% требуется вычислить функцию 11 раз.) 1.2.5. Метод Фибоначчи Постановка задачи. Дано: 1. Начальный интервал неопределенности а0, b0; 2. Функция f(x), унимодальная на отрезке а0, b0; 3. Точность нахождения экстремума. Требуется за n измерений функции найти экстремум с точностью . Метод Фибоначчи считается самым эффективным. Этот метод имеет тот же алгоритм, что и метод «золотого сечения», отличия заключены в координатах начальных точек: Fn (4) y0 a0 b0 a0 , Fn 2 где Fn и Fn+2 – n-е и (n+2)-е числа Фибоначчи. z0 a0 b0 y0 . F1 = 1, F2 = 1, Fn = Fn–1 + Fn–2, n = 3, 4, F3 = 2, F4 = 3, F5 = 5, F6 = 8, F7 = 13, F8 = 21, F9 = 34, F10 = 55, F11 = = 89, F12 = 144, Значение n определяется при помощи неравенства b0 a0 (5) Fn1 Fn 2 . Пусть требуется найти экстремум с точностью 0,01. Тогда b0 a0 100, F11 89 100 144 F12 , n 10, (b0 a0 ) 55 y0 a0 . 144 Далее также, как и в методе «золотого сечения». 2. Графический метод решения задач нелинейного программирования Этот метод применяется, когда количество переменных равно двум и либо целевая функция, либо ограничения линейные. Рассмотрим два случая. Целевая функция линейная, ограничения нелинейны Алгоритм решения задачи: 1. Ограничения-неравенства заменяем ограничениями-равенствами. Строим графики полученных функций. 2. Выделяем область допустимых решений. 3. Строим график целевой функции при каком-либо значении правой части (графиком является прямая). 4. График целевой функции переносим параллельно самому себе до касания с границей области допустимых решений. 5. Находим координаты точки касания. Пример. Z 2 x y max, x 2 y 2 36, x, y 0. А – точка касания. Рис. 3. Графический метод решения ЗНЛП для линейной ЦФ и нелинейных ограничений Решение. 1 p tg 2, tg tg ctg . 2 2 Точка А лежит на луче, проходящим под углом к оси абсцисс. Кроме того, точка А принадлежит окружности. Следовательно, координаты точки А можно найти, решив следующую систему: x 2 y 2 36, x 1 y 2. 12 6 x ,y , 5 5 30 Z max . (рис. 3) 5 Ограничения линейные, целевая функция нелинейна Алгоритм аналогичен предыдущему случаю с некоторыми отличиями: 1. область допустимых решений – выпуклый многоугольник; 2. для нахождения решения требуется строить семейство целевых функций. Пример. Z ( x 2 y 2 ) max . 3x 4 y 24 0, x, y 0. Рис. 4. Графический метод решения ЗНЛП для нелинейной ЦФ и линейных ограничений Ответ: x = 8, y = 0, Zmax = 8. 3. Задачи дробно-линейного программирования Существует некоторый класс задач нелинейного программирования, который можно свести к задачам линейного программирования. Это задачи дробно-линейного программирования. Постановка задачи: c0 c1 x1 c2 x2 ... cn xn (6) Q min, d 0 d1 x1 d 2 x2 ... d n xn n i 1, m, aij xi bi , j 1 j 1, n. x 0. j Предположим, что знаменатель целевой функции не равен нулю и положителен (если он отрицателен, то умножим числитель и знаменатель на –1). Введем новую переменную y0: y0 1 n , (7) d 0 d i xi i 1 тогда ЦФ Q c0 y 0 c1 y 0 x1 c2 y 0 x2 ... cn y 0 xn min . Введем переменные yi xi y0 , i 1, n, тогда Q c0 y0 c1 y1 c2 y2 ... cn yn min . Домножим левую и правую части ограничений на Y0: n (8) (9) n aij xi y0 bi y0 , aij yi bi y0 , j 1 (10) j 1 Добавим еще ограничение: n 1 y0 , d j y j d 0 y0 1, y j 0, j 0, n. n d 0 d j x j j 1 (11) j 1 Получили задачу линейного программирования ((9) – (11)). Решив ее одним из методов линейного программирования, получим оптимальное решение yj. y j Далее осуществляется переход к исходным переменным x j . Y0 4. Методы поиска безусловного экстремума функции многих переменных В задачах на поиск безусловного экстремума отсутствуют ограничения. 4.1. Аналитический метод Задана функция нескольких переменных f(х1, х2хn) min (max).Требуется найти такие вектора X 1 , X 2 , X k , при которых функция минимальна. Алгоритм. 1. Находим частные производные и приравниваем их нулю: f (12) 0 , i 1,...,n. xi Решаем полученную систему (3.12). 2. В результате решения находим вектора X 1 , X 2 , X k . 3. Определение типа экстремума. Для определения типа экстремума для каждой точки X i , составляется матрица А следующего типа: a11 ... a1n 2 f A ... (13) . , где aij xi x j a ... a nn n1 Тип экстремума находится из следующего положения. Если все главные миноры матрицы А, найденные для точки X i , положительны, то функция в этой точке имеет минимум. Если все главные миноры матрицы (–А), найденные для точки X i , положительны, то функция в этой точке имеет максимум. Во всех остальных случаях функция в точке X i , экстремума не имеет. Главный минор i – это определитель подматрицы, получающейся из исходной путем отчеркивания i-ой строки и i-го столбца. 4.2. Итерационные методы Постановка задачи: Дано: 1. Функция нескольких переменных f(х1, х2хn) min (max). 0 0 0 2. Точка X 0 ( x1 , x2 ,..., xn ) – начальное приближение к экстремуму. 3. – точность нахождения экстремума. Критерий окончания счета. Обычно используются два критерия окончания счета: 1. grad f ( X i ) (14) Модуль градиента в точке экстремума равен нулю. Следовательно, чем меньше модуль градиента, тем ближе к экстремуму точка. Модуль градиента: 2 2 2 f f f ... grad f ( X i ) Xi x1 x2 xn 2. f ( X i ) f ( X i 1 ) . (15) Разность значений функции в двух соседних точках при приближении к экстремуму стремится к нулю. 4.2.1. Метод покоординатного спуска Сущность метода. Поиск экстремума ведется в направлении осей координат, т.е. в процессе поиска изменяется только одна координата. Таким образом, многомерная задача сводится к одномерной (рис. 5). Рис. 5. Метод покоординатного спуска ( X 1,2 – новые точки приближения к экстремуму) 1 х1 . Алгоритм метода. Первый цикл: 0 0 0 1 шаг. x1 = var, х2 = х2 , х3 = х3 ,хn = хn . Ищем экстремум функции f(х1). Положим, экстремум функции в точке 2 шаг. x1 = х11, x2 = var, х3 = х30,хn = хn0. 1 Экстремум f(х2) равен х2 . 1 1 1 n шаг. x1 = х1 , x2 = х2 , x3 = х3 ,xn = var. В результате выполнения n шагов найдена новая точка приближения к экстремуму X 1 ( x11 , x12 ,..., x1n ) . Далее проверяем критерий окончания счета (15): если grad f ( X1) – решение найдено, в противном случае выполняем еще один цикл. 4.2.2. Метод наискорейшего спуска Поиск экстремума ведется шагами в направлении градиента (max) или антиградиента (min). На каждом шаге в направлении градиента (антиградиента) движение осуществляется до тех пор, пока функция возрастает (убывает). Этот метод имеет лучшую сходимость, чем предыдущий. Допустим, требуется найти минимум функции. Алгоритм метода. 1. Находим f f f . (16) grad f ( X 0 ) , ,..., x1 x2 xn X 0 Введем обозначения: f f a1 ,..., an , тогда grad f ( X 0 ) (a1, a2 ,...,an ). x1 X xn X 0 0 2. Делаем шаг в направлении антиградиента. Выражения для нахождения координат новой точки приближения к экстремуму выглядят следующим образом: x11 x10 1a1 , 1 0 1 x x a2 , 2 2 (17) ... 1 0 1 x x an . n n 1 где – величина шага в направлении антиградиента при 1-ой итерации. 3. Нахождение величины шага. В направлении антиградиента движемся до тех пор, пока функция убывает. Следовательно, шаг выбирается из условия минимума функции f(1). Для этого в функцию f(х1, х2хn) подставляем выражения для координат новой точки (17). В результате получим функцию одной переменной f(1). Минимум f(1) находим любым известным методом поиска экстремума функции одной переменной. 4. Полученное значение 1 подставляется в формулы (17). В результате получаем точку X1 = (x11,,xn1). 5. Проверка критерия окончания счета. Если f ( X 1 ) f ( X 0 ) , то решение в точке X 1 , иначе – требуется сделать еще шаг. 5. Решение задач нелинейного программирования с ограничениямиравенствами Чаще всего используется, когда ограничения имеют вид равенств. Метод неопределенных множителей Лагранжа Некоторые сведения из математики. 1. Неявно заданная функция. Говорят, что функция y(х) задана неявно, если эта функция входит в выражение F(x,y) = 0. Например, x2 + y2 – R2 = 0. 2. Производная неявно заданной функции. F dy x . F dx y 3. Сложная функция. Функция F является сложной, если она зависит от переменной у, а у, в свою очередь, зависит от переменной х: F f [ y( x)]. 4. Производная сложной функции: dF f y . dx y x 5. Разновидность сложной функции: F f [ x, y( x)]. dF f f y . dx x y x Таким образом, задача поиска условного экстремума с ограничениямиравенствами сводится к задаче поиска безусловного экстремума функции Лагранжа. Общая постановка задачи. F f ( x1 , x2 ,.., xn ) min, g i ( x1 , x2 ,..., xn ) 0, i 1, m. (20) Алгоритм метода. 1. Составляется функция Лагранжа m L f ( x1 , x2 ,.., xn ) i g i ( x1 , x2 ,..., xn ), i 1 где n – количество основных переменных, m – количество неопределенных множителей Лагранжа. 2. Находятся частные производные функции Лагранжа по переменным и приравниваются к нулю: L x 0, j 1, n, j L 0, i 1, m. i 3. Находится решение полученной системы и определяется вид экстремума. Пример 1. Найти стороны прямоугольника максимальной площади, вписанного в окружность радиуса R. Возьмем на окружности точку А(х, у), тогда Y A математическое описание задачи примет следующий вид: S = 4xy max; X x2 + y2 – R2 = 0; x, y 0. 1. Составим функцию Лагранжа: L = f + g = 4xy + (x2 + y2 – R2). L x 4 y 2x 0, L 2. 4 y 2y 0, y L x 2 y 2 R 2 0. Решим систему уравнений. x 3. Из первого уравнения: y . 2 Подставляем во второе уравнение: 4x – 2x = 0; x(4 – 2)= 0; x = 0, 1 =2, 2 = –2. Корень х =0 не удовлетворяет условиям задачи. По аналогичной причине отбрасываем корень 1: 1 = 2: y = – x/2 = – 2х/2 = –x 0. 2 = –2: y = – x/2 = x. 4. Оставляем корень 1 = 2. R Подставив x y в третье уравнение системы, получаем x y . 2