МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ РЫБИНСКАЯ ГОСУДАРСТВЕННАЯ АВИАЦИОННАЯ ТЕХНОЛОГИЧЕСКАЯ АКАДЕМИЯ ИМЕНИ П. А. СОЛОВЬЕВА ЗАОЧНАЯ ФОРМА ОБУЧЕНИЯ МЕТОДЫ ОПТИМИЗАЦИИ Программа учебной дисциплины и методические указания к выполнению контрольной работы РЫБИНСК 2010 2 УДК 512.2 Методы оптимизации: Программа учебной дисциплины и методические указания к выполнению контрольной работы / Сост. В.А. Вишняков; РГАТА. – Рыбинск, 2010 – 35 с. (заочная форма обучения / РГАТА). Данные методические указания предназначены для выполнения контрольной работы и изучения дисциплины «Методы оптимизации» студентами специальности 230101 – Вычислительные машины, комплексы, системы и сети. СОСТАВИТЕЛЬ: профессор В.А. Вишняков ОБСУЖДЕНО: на заседании кафедры Вычислительных систем. РЕКОМЕНДОВАНО методическим советом РГАТА. 3 ВВЕДЕНИЕ Целью изучения дисциплины является получение студентом знаний о математических методах оптимизации, т. е. о методах решения задач поиска безусловного и условного экстремумов различных функционалов. 1. СОДЕРЖАНИЕ ДИСЦИПЛИНЫ Введение. Структура дисциплины и ее связь с другими дисциплинами. Место в программе подготовки инженера по проектированию вычислительных систем. 1. Задачи оптимизации системы. Задачи анализа, оптимизации, синтеза. Постановка задачи оптимизации в общем случае. Математические модели систем. Частные и комплексные критерии оптимизации. Ограничения и условия. Математическое программирование. Методы оптимизации. 2. Безусловная многомерная оптимизация. Необходимые и достаточные условия экстремума гладких функций одной и нескольких переменных. Метод дифференциального исчисления. Критерий проверки достаточных условий экстремума. 3. Условный экстремум. Постановка задачи. Метод неопределенных множителей Лагранжа. 4. Линейное программирование. Задача линейного программирования. Графические решения задачи. Симплекс – метод решения задачи линейного программирования. 5. Численные методы безусловной оптимизации первого порядка. Принципы построения численных методов поиска безусловного экстремума. Градиентный метод. Метод Гаусса-Зейделя. Метод покоординатного движения. 6. Численные методы безусловной оптимизации нулевого порядка. Методы одномерной оптимизации: равномерного поиска, деления отрезка пополам, дихотомии, золотого сечения, Фибоначчи. Методы случайного поиска. 7. Методы вариационного исчисления. Задача вариационного исчисления. Уравнение Эйлера. Численные методы решения вариационных задач. 4 2. ПЕРЕЧЕНЬ ПРАКТИЧЕСКИХ ЗАНЯТИЙ 2.1. Отыскание безусловного экстремума функции многих переменных методом дифференциального исчисления. 2.2. Нахождение условного экстремума функции многих переменных методом неопределенных множителей Лагранжа. 2.3. Решение задач линейного программирования. 2.4. Поиск экстремума с использованием методов покоординатного движения, Гаусса-Зейделя и градиентного. 2.5. Решение задач поиска экстремума методами одномерной оптимизации: равномерного поиска, деления интервала пополам, дихотомии, золотого сечения, Фибоначчи. 2.6. Вариационная задача отыскания экстремума. 3. МЕТОДИЧЕСКИЕ УКАЗАНИЯ СТУДЕНТАМ ПО ИЗУЧЕНИЮ ДИСЦИПЛИНЫ Основы дисциплины в сжатой форме изложены в разделе 5 – Теоретические сведения. Более глубокие знания студент получит, изучая литературу, приведенную в разделе 10. Студент готов к сдаче зачета по дисциплине, если изучил материал, предусмотренный содержанием дисциплины, проработал зачетные вопросы и решил контрольные задачи. 4. СПИСОК ЗАЧЕТНЫХ ВОПРОСОВ 4.1. Формулировка задачи оптимизации системы. 4.2. Математические методы программирования и их характеристика. 4.3. Необходимое условие безусловного экстремума функции многих переменных. 4.4. Критерий проверки достаточных условий экстремума. 4.5. Функция Лагранжа и нахождение ее экстремума. 4.6. Задача линейного программирования и ее решение для двух переменных. 4.7. Симплекс – метод решения задачи линейного программирования. 4.8. Метод покоординатного движения многомерной численной оптимизации. 4.9. Метод Гаусса-Зейделя. 5 4.10. Градиентный метод. 4.11. Метод равномерного поиска. 4.12. Метод деления интервала пополам. 4.13. Метод дихотомии. 4.14. Метод золотого сечения. 4.15. Метод Фибоначчи. 4.16. Методы случайного поиска. 4.17. Задача вариационного исчисления, уравнение Эйлера. 4.18. Численный метод решения вариационной задачи. 5. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ 5.1. ЗАДАЧА ОПТИМИЗАЦИИ СИСТЕМЫ При проектировании вычислительной системы, существует проблема ее оптимизации, т. е. определения наилучшего (оптимального) варианта решения с точки зрения какого-либо критерия. При решении этой задачи широко используются математические модели. Они включают различные методы расчетов, и позволяют, в том числе оптимизировать модели систем. На основе таких оптимальных моделей, затем строится реальная система. Абстрактную модель системы изображают следующим образом (рис. 1), x1 x2 y1 Модель системы xk y2 yn Рис. 1 где x – входные параметры, y – выходные параметры системы. Задачи математического исследования бывают трех основных типов. 1. Задача анализа. Считается, что модель системы существует, и известна математическая связь между выходными y и входным параметрам x. Требуется по заданной величине значений x определить выходные значения y. 2. Задача оптимизации. Предполагается, что связь между параметрами y и x известна. Необходимо найти такие значения входных параметров x, чтобы выходные y принимали экстремальные значения (минимальные, либо максимальные). 3. Задача синтеза. 6 В данном случае по заданному набору выходных параметров y требуется определить структуру модели системы, т. е. найти математическую связь между параметрами x и y. Эти задачи часто сопутствуют друг другу. Задача оптимизации в общем случае решается в 4 этапа: 1) определение математической модели системы; 2) выбор критерия оптимизации; 3) определение ограничений; 4) отыскание решения (программирование). Рассмотрим более подробно каждый из этапов. 1 этап – определение математической модели. Необходимо связать выходные параметры y = (y1, y2, . . . , yn) с входными параметрами x = (x1, x2, . . . , xk), т. е. найти математическую модель в виде y = (x, t), где – вектор-функция, определяющая операторы функционирования системы y1 1 ( x1 , x2 ,..., xk , t ), y2 2 ( x1 , x2 ,..., xk , t ), yn n ( x1 , x2 ,..., xk , t ), где t – текущее время. 2 этап – выбор критерия оптимизации. Критерий оптимизации (показатель оптимизации, критерии качества или целевая функция) позволяет сравнивать одну модель системы с другой. Критерии бывают комплексными и частными. Комплексный критерий характеризует систему интегрально в целом в виде скалярной функции U = f(y). Частные критерии Ui, i = 1, 2, 3, …, m. характеризуют систему по различным частным показателям. К таким показателям относятся: – технические характеристики (быстродействие, объем внешней памяти, разрядность); – конструктивные характеристики (вес, габариты); – показатели надежности (среднее время безотказной работы, интенсивность отказов); 7 – показатели стоимости (стоимость опытного образца, стоимость серийного образца). Используются следующие способы введения комплексных критериев. 1. Комплексный показатель определяется через сумму частных показателей в виде m U biU i , i 1 где bi – весовые коэффициенты частных показателей. Так для вычислительной системы он может быть определен соотношением U b1t0 b2 q b3λ , где q – вес вычислительной системы, – интенсивность отказов, t0 – среднее время выполнения элементарной операции. Лучшей с точки зрения этого критерия является система, имеющая меньшую величину показателя U. 2. Комплексный показатель задается с помощью произведения m U (U i ) ai , i 1 где ai – коэффициенты, определяющие вес частных показателей. 3. Из множества частных показателей выбирают один главный Ui и оптимизируют его, таким образом, чтобы прочие показатели Uj не выходили за пределы допустимых значений Uj < Ujдоп. 3 этап – определение ограничений. При оптимизации экстремум ищется в области x Xдоп. Xдоп задает ограничения, т е. ограничивает область значений для входных параметров. Иногда ограничиваются и выходные параметры. Причинами существования ограничений являются: во первых – физическая реализуемость системы, во вторых – существующая преемственность развития системы. 4 этап – отыскания решения. Необходимо найти оптимальное значение x0 = (x10, x20, . . . , xk0), которое обеспечивает экстремум показателя качества U extr f (( x0t )) при заданных ограничениях x Xдоп. 8 При отыскании решения используют последовательность действия, которая называется математическим программированием. На практике применяются следующие методы оптимизации: 1) дифференциального исчисления; 2) вариационного исчисления; 3) неопределенных множителей Лагранжа; 4) динамичного программирования; 5) нелинейного программирования; 6) линейного программирования; 7) прямые методы отыскания экстремумов; 8) методы случайного поиска. При программировании используются как аналитические способы, так и численные способы отыскания решений. 5.2. МЕТОД ДИФФЕРЕНЦИАЛЬНОГО ИСЧИСЛЕНИЯ, БЕЗУСЛОВНЫЙ ЭКСТРЕМУМ Пусть целевая функция U = f(x) является функцией одной переменной x. Функция непрерывна вместе с первой и второй производными. Необходимо найти значение x0, которое обеспечивает экстремум функции U. Предположим, что функция U имеет минимум (рис. 2). U U = f(x) U x d 2U dx 2 d 2U ( x) f n ( x) dx 2 dU ( x ) f ( x) dx x0 0 x0 x x Рис. 2 Нахождение минимума связано с исследованием первой производной целевой функции U dU f ( x) . x 0 x dx lim 9 Необходимое условие существования минимума (или максимума) находится из следующего уравнения: dU 0. dx x0 Достаточное условие существования экстремума связано с вычислением второй производной. d 2U Если dx 2 0 , то в точке x0 находится минимум (см. рис. 2). Выx0 d 2U полнение неравенства dx 2 0 означает, что в точке x0 расположен макx0 симум. Оптимальное значение функции U0 вычисляется как U0 = f(x0). На практике часто целевая функция является функцией нескольких переменных: U = f(x1, x2, . . . , xn). Функция f непрерывна вместе со своими первыми и вторыми частными производными. Нужно найти значение вектора x0 = (x10, x20, . . . , xk0), который обеспечивает экстремум функции f. Необходимое условие экстремума определяется системой nуравнений следующего вида U 0, x 1 x0 U 0, x 2 x0 U 0. xn x 0 Для проверки достаточного условия существования экстремума составляется матрица A размером n n: 10 a11 a12 a1n a a a 2n A 21 22 , an1 an 2 ann 2U где aij xi x j . x0 Вычисляются главные миноры матрицы, т. е. определители A1 a11 , A2 a11 a12 a21 a22 a11 a12 a13 , A3 a21 a22 a23 , An a31 a32 a33 a11 a12 a1n a21 a22 a2 n . an1 an 2 ann Если A1 0, A2 0, . . . , An 0 (все главные миноры положительные), то в точке x0 находится минимум. Если же A1 0, A2 0, A3 0, . . . (знаки главных миноров чередуются), то в точке x0 расположен максимум. Оптимальное значение целевой функции равно U0 = f(x10, x20, . . . , xn0). Пример Найти экстремум функции f(x1, x2) = (1 – x1)2 + 10(x2 – x12)2. Вычисляем первые частные производные: f 2(1 x1 ) (1) 10 2( x2 x12 )(2 x1 ) 2(1 x1 ) 40 x1 ( x2 x12 ) , x1 f 10 2( x2 x12 ) 20( x2 x12 ) . x2 Составляем систему уравнений, приравнивая производные к нулю: 2(1 x1 ) 40 x1 ( x2 x12 ) 0, . 20( x2 x12 ) 0. Решаем систему уравнений. Из второго уравнения следует, что x2 x12 0 . Подставляя это значение в первое уравнение, получаем 11 2(1 x1 ) 0 . Отсюда находим x10 = 1. Используя второе уравнение системы с учетом найденного x10 = 1, получим x20 = 1. Таким образом, оптимальный вектор x0 равен x0 = (1,1). Далее проверяем условие достаточности, рассчитывая a a A 11 12 . a21 a22 Находим вторую частную производную по переменной x1: 2 f 2 40(( x2 x12 ) x1 (2 x1 )) . 2 x1 Подставляя в это выражение x1 = 1, x2 = 1, получим a11 = 82. Находим вторые смешанные частные производные: 2 f 2 f 40x1 . x1x2 x2x1 Отсюда при x1 = x2 = 1, получим a12 = a21 = –40. Вычисляем вторую частную производную по переменной x2, получа2 f 20 , следовательно a22 = 20. Таким образом, матрица A приобреем 2 x2 тает следующий вид 82 40 A . 40 20 Вычисляем главные миноры матрицы A1 82 0, A2 82 40 40 20 1640 (40)(40) 40 0 . Вывод: в точке x0 = (1, 1) находится минимум. Минимальная величина целевой функции равна U0 = f(x10, x20) = 0. 12 5.3. УСЛОВНЫЙ ЭКСТРЕМУМ, МЕТОД НЕОПРЕДЕЛЕННЫХ МНОЖИТЕЛЕЙ ЛАГРАНЖА Условный экстремум означает наличие ограничений при решении задачи оптимизации. Задана целевая функция U = f(x1, x2, . . . , xn). Кроме того, заданы m < n ограничений вида Fi(x1, x2, . . . , xn) = bi, i = 1, 2, . . .,m, где Fi – некоторая i-я функция, bi – некоторое число (константа). Функция f, а также функции Fi непрерывны и дважды дифференцируемы. Необходимо найти значение x0 = (x10, x20, . . . , xn0), которое обеспечивает экстремум целевой функции U при заданных ограничениях. Данную задачу на условный экстремум можно свести на решение задачи с безусловным экстремумом с помощью метода Лагранжа. При этом составляется функция Лагранжа: m L U λ i ( Fi bi ) , i 1 где λi – неопределенные множители Лагранжа. Функция Лагранжа зависит от переменных x и λ , т. е. m L( x1 , x2 , , xn , 1 , 2 , , m ) f ( x1 , x2 , , xn ) i ( Fi ( x1 , x2 , , xn ) bi ) . i 1 Далее решается задача отыскания экстремума функции L методом дифференциального исчисления на безусловный экстремум (раздел 2). Для этого решают систему уравнений L 0, k 1, n, x k x0 , 0 . L 0, i 1, m i x , 0 0 и находят x0 и λ0. Множители λi помогают лишь решать задачу и не относятся к выходному результату. В частном случае для двух переменных целевая функция равна U = f(x1, x2) , (1) F1(x1, x2) = b1 . (2) а ограничение имеет вид 13 Функция Лагранжа приобретает форму L = f(x1, x2) + 1(F1(x1, x2) – b1). Находим частные производные и записываем систему уравнений L f F1 x x 1 x 0, 1 1 1 L f F 1 1 0, x2 x2 x2 L F1 ( x1 , x2 ) b1 0, 1 (3) ( 4) (5) решая которую, получаем x10, x20, λ10. Заметим, что уравнения (5) и (2) являются тождественными. Докажем обоснованность метода Лагранжа для задачи с двумя переменными. Используя ограничение (2) выразим x2 через x1 в виде x2 = (x1), (6) где – некоторая функция. Подставим (6) в (1) вместо x2, получим U = f(x1, (x1)). (7) В записанной таким образом целевой функции учтено ограничение (2). Функция оказывается зависимой только от одной переменной x1. Находим безусловный экстремум функции U, используя полную первую dU производную . dx1 По правилам дифференцирования соотношение для полной производной функции (7) может быть записано следующим образом: dU f f dx2 (8) 0, dx1 x1 dx1 где φ = x2. Вычислим полный дифференциал dF1, используя выражение (2). Применяя правило дифференцирования, имеем dF1 F1 F dx1 1 dx2 0 . x1 x2 Из последнего соотношения получаем 14 F1 dx2 x 1 . F1 dx1 x2 (9) Подставим выражение (9) в соотношение (8), получим F1 f f x1 0. (10) x1 F1 x2 Преобразуя отношение дифференциалов в выражение (10) введем коэффициент 1 (неопределенный множитель Лагранжа) следующим образом: f f x f x2 f 2 1 . F1 F1 x2 F1 F1 x2 x2 Коэффициент 1 является, по сути, весовым коэффициентом функции F1 в общей функции Лагранжа. С учетом введенного множителя 1 уравнение (10) преобразуется в уравнение (3). Уравнение (4) можно получить, выразив x1 через x2 из уравнения (2) и проделав операции отмеченные выше. Таким образом, подтверждаем справедливость системы уравнений (3), (4), (5). Пример. Имеется вычислительная система, содержащая два блока 1 и 2 (рис. 3). 1 2 Рис. 3 Параметрами блоков являются быстродействия, т. е. время выполнения операций x1 и x2 соответствующими блоками. Стоимость системы U связана с параметрами x1 и x2.зависимостью U , x1 x2 где и – некоторые постоянные коэффициенты. 15 Необходимо выбрать блоки 1 и 2 с такими параметрами x10 и x20, чтобы стоимость системы была минимальной при ограничении x1 + x2 = b1, где b1 – заданная постоянная величина. Решаем задачу. Составляем функцию Лагранжа: L ( x1 x2 b1 ) . x1 x2 Составляем систему уравнений, необходимую для отыскания оптимальных значений x10, x20, λ0: L x x 2 0, 1 1 L 2 0, x2 x2 L ( x1 x2 b1 ) 0. Из решения первого и второго квадратного уравнений этой системы, отбрасывая неудовлетворяющие корни, получаем . x1 , x1 Подставляя эти значения в третье уравнение системы имеем b1 0 . Отсюда получаем значение 0 , равное 0 Подставив . b1 0 в выражение для x1 и x2, получим оптимальные зна- чения x10 b1 , x20 b1 . Минимальное значение целевой функции стоимости будет равно U min ( ) ( ) ( )2 . x10 x20 b1 b1 b1 16 5.4. МЕТОД ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ Линейным метод называется так потому, что целевая функция и существующие ограничения на переменные являются линейными. Целевая функция зависит от n переменных xi следующим образом: n U ci xi , i 1 где ci – постоянные коэффициенты. Ограничения имеют вид неравенств: n a ji xi b j , i 1 где aji и bj – постоянные коэффициенты, j = 1, 2, . . . , m. Количество ограничений m больше чем число переменных n (m > n). Необходимо найти вектор x0 = (x10, x20, . . . , xn0), который обеспечивает экстремум целевой функции U из области значения, которая задается неравенствами. Рассмотрим, что представляет собой область, в которой необходимо найти решение x0. Уравнение n a ji xi b j задает гиперплоскость в n- i 1 мерном пространстве. Неравенство n a ji xi b j определяет одну из двух i 1 частей гиперпространства. m неравенств одновременно определяют замкнутое гиперпространство (область), в котором и необходимо искать решение. Решение не существует когда пространство не замкнуто, или когда гиперплоскость, задаваемая целевой функцией, параллельна одной из гиперплоскостей замкнутого пространства. Рассмотрим решение задачи линейного программирования для n = 2, m = 4. Целевая функция имеет вид: U = x1 + x2 Следует найти x10, x20 которые обеспечивают максимум целевой функции в области, определяемой системой четырех неравенств: 17 x2 2 x1 4, x 3, 2 . x 4 , 1 x2 2. Область отыскания решения в данном случае представляет собой четырехугольник ABCD (рис. 4). Запишем целевую функцию в виде x2 = –x1 + U. При U = 0 функция проходит через начало координат. С увеличением U прямая линия, определяемая функцией, будет перемещаться параллельно самой себе вверх. При U = Umax прямая проходит через точку C, координаты которой и есть решение задачи. То есть x10 = 4, x20 =3, Umax = x10 + x20 = 7. В общем случае (любое количество переменных n) решение задач линейного программирования следующее. 1. Используя ограничения, находят крайние точки (для примера это точки A, B, C, D). 2. Вычисляют значение функции U в этих точках. 3. Сравнивают вычисленные значения между собой и находят точку, удовлетворяющую экстремуму (максимум, либо минимум). 4. Координаты этой точки и есть искомое решение. Наиболее широко для решения задачи используется симплекс-метод [1]. Задача не имеет решения в двух случаях: 1) когда область отыскания решения не замкнута, 2) когда целевая функция параллельна одной из ограничивающих плоскостей (линий). 18 x2 5 4 3 B C 2 1 -5 -4 -3 A -2 -1 0 1 2 3 4 5 x1 x2 = – x1 + Umax -2 -3 D x2 = – x1 + U (U > 0) -4 -5 x2 = – x1+ U (U = 0) Рис. 4 5.5. ЧИСЛЕННЫЕ МЕТОДЫ ОТЫСКАНИЯ ЭКСТРЕМУМА. МЕТОДЫ ПОКООРДИНАТНОГО ДВИЖЕНИЯ И ГАУССА-ЗЕЙДЕЛЯ При использовании численных методов реализуется пошаговый принцип нахождения координат экстремума. Он предполагает определение в каждой исходной точке выбор направления движения и шага движения к экстремуму. Предположим, что целевая функция зависит от двух переменных: U = f(x1, x2). Функция имеет экстремум в виде максимума. Необходимо найти x0 = (x10, x20) такие, которые определяют максимум функции Umax = f(x10, x20). В трехмерном пространстве координат U, x1, x2 функция U = f(x1, x2) описывает некоторую поверхность с экстремумом в виде вершины. Если рассечь эту поверхность плоскостью U = const на определенном уровне и спроецировать пересечение на плоскость x1, x2 то на плоскости отобразится замкнутая линия (рис. 5). Меняя высоту сечения, получим семейство вложенных концентрических линий, в центре которых находится экстремум с координатами x10, x20. 19 Используются различные стратегии пошагового движения к экстремуму. Метод покоординатного движения заключается в следующем. В исходной точке фиксируют все координаты x, кроме одной. Этой координате xi задают приращение в сторону ее увеличения и в сторону уменьшения и получают две точки. Вычисляют значение целевой функции f в этих точках и сравнивают между собой. Следующей исходной точкой будет та, для которой функция f будет иметь наибольшее значение. В случае двумерной целевой функции (рис. 5) происходят последовательные вычисления и движения смещение по координате x1, затем по x2. x2 U = const x20 3 1 x21 2 Δx1 Δx1 x11 x10 x1 Рис. 5 При этом выполняются следующие действия. 1. В точке 1 фиксируется значение второй переменной x21 = const. За дается приращение Δx1 > 0. Определяют значения x12 и x12 первой переменной: x12 x11 x1 , x12 x11 x1. Вычисляются значения целевой функции в точках ( x12 , x21 ) и ( x12 , x21 ) : f ( x12 , x21 ) f , f ( x12 , x21 ) f . Значения f и f сравниваются между собой. Наибольшее из них определяет следующую искомую точку (точка 2 на рис. 5). 20 2. В точке 2 фиксируется значение первой переменной x12 const . Задается приращение Δx2 > 0, и определяются значения x22 и x22 второй переменной: x22 x21 x2 , x22 x21 x2 . Производится вычисление целевой функции для этих точек: f ( x12 , x22 ) f , f ( x12 , x22 ) f . Значения f и f сравниваются между собой, и по их соотношению определяется следующая исходная точка 3. Далее происходит переход к действию 1 и т. д. Максимальная величина шага движения к экстремуму (величина приращений x) ограничивается областью допустимых значений переменных x, а минимальная – ошибкой определения оптимальных значений. Чем ближе к вершине, тем меньше должен становится шаг x. В методе Гаусса-Зейделя величина шага движения регулируется в зависимости от скорости изменения функции f. При этом используется соf отношение x t , где t – параметр, определяющий величину шага. x f Знак производной определяет направление движения. x Поиск экстремума заканчивается на шаге k, когда дважды подряд выполняется неравенство f k f k 1 , где – заданная ошибка определения экстремума Достоинством методов покоординатного движения и Гаусса-Зейделя является простота. Недостаток – медленное движение к экстремуму, особенно когда количество входных переменных велико. 5.6. ЧИСЛЕННЫЙ, ГРАДИЕНТНЫЙ МЕТОД ОПТИМИЗАЦИИ Метод обеспечивает наискорейший подъем или спуск при движении соответственно к максимуму или минимуму. Рассмотрим реализацию метода для целевой функции, зависимой от двух переменных: U = f(x1, x2). 21 Наискорейшее движение к экстремуму обеспечивается, когда вектор движения перпендикулярен касательной к линии U = const в точке местонахождения (рис. 6). Перпендикулярное движение касательным линиям U = const задает вектор grad U (градиент U), который определяется следующим образом: U U gradU e x1 e x2 , x1 x2 где e x1 и ex 2 – единичные вектора по осям x1 и x2 (орты). x2 U = const x20 ex2 gradU ex1 x10 x1 Рис. 6 Частные производные определяют величины приращений по координатам x1 и x2: U U , x1 t , x2 t x1 x2 где t – параметр, определяющий величину шага. В зависимости от того, как меняется величина t при движении к экстремуму, возможны различные стратегии движения. 5.7. ЧИСЛЕННЫЕ МЕТОДЫ ОДНОМЕРНОЙ ОПТИМИЗАЦИИ Рассмотрим методы оптимизации, когда целевая функция U зависит от одной переменой U = f(x). 22 Положим, что функция имеет минимум. Ошибка местоопределения минимума не должна превышать значения . 5.7.1. Метод равномерного поиска Метод реализуется следующим образом. Интервал (a, b), в котором находится минимум, делится на элементарные интервалы с шагом x = (рис. 7). Количество интервалов N равно ba . N x Вычисляется значение функции f в точках xi = a + ix, i = 0, 1, 2, . . . , N. Значения функции сравниваются между собой, и находится наименьшее. Аргумент этого значения функции и есть искомое оптимальное значение x0 = xi. U U = f(x) a x x0 b x Рис. 7 5.7.2. Метод деления интервала пополам На каждом шаге поиска минимума алгоритм действий следующий: 1. Устанавливается интервал неопределенности (a, b). Вычисляются три значения: a xср xср b ab xср , xл , xП . 2 2 2 2. Вычисляется величина функции в точках xл, xср: f(xл), f(xср). 3. Если окажется, что f(xл) < f(xср) (рис. 8а), то необходимо отбросить интервал (xср, b), параметру b присвоить значение xср и перейти к действию 1, в противном случае f(xл) f(xср), перейти к действию 4. 4. Вычисляется значение функции f(xп). 5. Если f(xп) < f(xср) (рис. 8б), то отбросить интервал (a, xср), параметру a присвоить значение xср и перейти к действию 1, иначе перейти к действию 6. 6. Параметру a присвоить значение xл, параметру b присвоить xп (рис. 8в) и перейти к действию 1. 23 Процедура поиска заканчивается, когда b – a < . U U a xл xср xп b U a xл xср xп b x а) a xл xср xп b x б) x в) Рис. 8 5.7.3. Метод дихотомии Дихотомия предполагает последовательное деление интервала неопределенности пополам. На каждом шаге поиска минимума вычисляется ab среднее значение xср , а затем xл = xср – и xл = xср + (рис. 9). 2 U = f(x) U Новый интервал а хл а+b хп 2 b х Исходный интервал Рис. 9. Вычисляются значения функции f(xл), f(xп), которые сравниваются между собой. Если f(xл) f(xп), то a = a, b = xп, иначе a = xл, b = b. Далее производится переход к следующему шагу. Процедура заканчивается тогда, когда b – a . 5.7.4. Метод золотого сечения Точка производит «золотое сечение» отрезка, если отношение длины всего отрезка к большей части равно отношению большей части к меньшей. 24 На рис. 10 точкой золотого сечения является точка c. При этом выполняется равенство отношений ba ca 1 , ca bc z где z – некоторое число. 0,618(b – а) а 0,382(b – а) с b Рис. 10 Найдем это число. Выразим длину отрезков (c, a) и (b, c) через длину отрезка (a, b): c – a = z(b – a), b – c = (1 – z)(b – a). Подставляя эти значения в исходное отношение, получим ba z (b a ) , z (b a ) (1 z )(b a ) откуда имеем: 1 z . z 1 z Из данного отношения вытекает квадратное уравнение z2 + z – 1 = 0, решение которого имеет один положительный корень z 1 5 0,618 . 2 Рассмотрим теперь последовательность действий при реализации метода золотого сечения. На каждом шаге поиска минимума производится вычисление точек золотого сечения (рис. 11) xл = a + 0,382(b – a), xп = b – 0,382(b – a). 25 U = f(x) U а хл хп b х Новый интервал Исходный интервал Рис. 11 Вычисляются значения функции в этих точках f(xл), f(xп), которые сравниваются между собой. Если f(xл) f(xп), то a = a, b = xп, иначе a = xл, b = b. Далее производится переход к следующему шагу. Примечательно то, что одна точка в новом интервале остается старой и ее не надо вычислять. Данная процедура поиска является более быстрой, чем рассмотренные ранее. 5.7.5. Метод Фибоначчи В методе Фибоначчи реализуется стратегия, обеспечивающая максимальное гарантированное сокращение интервала неопределенности при заданном количестве вычислений функции. Эта стратегия опирается на числа Фибоначчи. Числа Фибоначчи вычисляются по следующей формуле: F0 = F1 = 1, Fk = Fk-1 + Fk-2, k 2. Последовательное использование этой рекуррентной формулы дает следующую последовательность чисел F2 = 2, F3 = 3, F4 = 5, F5 = 8, F6 = 13, F7 = 21, F8 = 34, F9 = 55, F10 = 89, . . .. F Интересно, что k 1 z при k 3, причем, чем больше k, тем ближе Fk F отношение k 1 к числу z, определяемому золотым сечением. Fk 26 Последовательность действий поиска минимума при реализации метода следующая. В начале выбирается минимальное из чисел Фибоначчи, удовлетворяющее условию ba FN , где b – a – исходный интервал поиска, – ошибка определения экстремума, и числа F0, F1, . . . , FN. Дальше вычисляются значения xл и xп , равные F xл a N 2 (b a) , FN F xП a N 1 (b a) . FN Затем вычисляются значения функции f(xл), f(xп), и они сравниваются между собой. Если f(xл) f(xп), то a = a, b = xп, присвоить новые значения: F xл a N 3 (b a), xП xл . FN 1 Если f(xл) > f(xп), то a = xл, b = b, присвоить новые значения: F xл xП , xП a N 2 (b a) . FN 1 Далее производится переход к следующему шагу. Поиск заканчивается, когда начинает выполняться условие b – a < . 5.8. МЕТОДЫ СЛУЧАЙНОГО ПОИСКА Требуется найти безусловный минимум функции U = f(x1, x2, . . . , xn), т. е. точку x0 = (x10, x20, . . . , xn0), для которой U(x0) = f(x0) = Umin. Поиск заключается в формировании на каждом шаге k случайного вектора xk = xk-1 + tk ek, где ek – случайный вектор единичной длины, задающий направление движения, tk – величина шага движения (скалярная величина). Сформированное значение xk лежит на гиперсфере радиуса tk с центром в точке xk-1 (точки xk1, xk2, xk3 (рис. 12)). 27 x2 x20 xk3 xk1 xk-1 xk2 x10 x1 Рис. 12 Если f(xk) < f(xk-1), то xk следующая исходная точка (на рис. 12 точка xk3), иначе, когда f(xk) ≥ f(xk-1) (на рис. 12, точки xk1, xk2) направление движения оказалось неудачным и при фиксированном шаге k формируется новый случайный вектор xk. Если количество неудачных попыток N, то поиск продолжается из точки xk-1, но с меньшим шагом tk. Возможны различные стратегии случайного поиска. При реализации первой стратегии величина шага постоянна tk = t,. При второй адаптивной стратегии величина шага tk < tk-1. Третья стратегия реализует наилучшую пробу. При этом в каждой исходной точке формируется N векторов xk, в которых вычисляются значения функции. Находится вектор xk, который обеспечивает наименьшее значение функции f и он устанавливается исходным для следующего шага. Поиск заканчивается тогда, когда произойдет выполнение неравенства tk < , где – величина ошибки, определяемая положением экстремума. Формирование случайного вектора ek производится с использованием генератора случайных чисел ξ, в соответствии с выражением ek k , k где ξk = (ξ1k, ξ2k, . . . , ξnk), ξik – независимые случайные числа, равномерно распределенные в интервале (–1, 1), k 12k 22k 2nk – норма (длина) вектора ξk. 28 5.9. МЕТОДЫ ВАРИАЦИОННОГО ИСЧИСЛЕНИЯ В данном случае целевая функция не задана явно, а имеет вид: b U a F ( x, y, y )dx ,, где F – функционал, т. е. функция, зависящая от функций, y = f(x) – функdy ция, которую требуется найти, y . dx (Пример функционала: F 1 cy 2 dy ) . Аналитически задачу решают следующим образом. Зададим вариацию функции δy(x) (вариация – это приращение функции y не за счет изменения аргумента x, а собственное приращение): y(x) + δy(x) = y(x) + αη(x), где α – некоторый коэффициент, который может меняться, η(x) – функция от x, для которой η(a) = η(b) = 0 (рис. 13). Целевая функция в этом случае будет равна b U a F ( x, y , y )dx . Изменяя коэффициент α, можно менять величину вариации и исследовать, как влияет эта величина на значение целевой функции U = U(α). Очевидно, что в точке экстремума приращение U равно нулю при α → 0. y(x) (x)=(x) y(b) y(a) y(x)=f(x) a b x Рис. 13 Разложим функцию U(α) в ряд Маклорена в точке α = 0 и, ограничиваясь двумя членами ряда вследствие малости остальных, имеем: dU U U ( 0) . d Отсюда находим приращение ΔU = U – U(0), равное 29 U dU . d Используя данное соотношение и применяя правило дифференцирования, получим b U a b F a y d F b F F ( x, y , y )dx a dx d y y b F dx a y . dx Вычисляя второй интеграл по частям, с учетом того что η(a) = η(b) = 0, в итоге получаем b F U a y dx F b d F d F b b F a a dx . y a dx y y dx y В точке экстремума ΔU = 0. Это возможно только тогда, когда выражение, записанное в скобках равно нулю. Таким образом, получаем уравнение F d F 0, y dx y которое называется уравнением Эйлера. Решая уравнение Эйлера, находим искомую функцию y(x). В общем случае это дифференцированное нелинейное уравнение 2го порядка, которое можно решить аналитически лишь в частных случаях. Рассмотрим численный метод решения задачи. Разобьем диапазон (a, b) на элементарные интервалы с шагом Δx. Получаем точки xi = a + iΔx, ba i = 0, 1, . . . , n, где n . Очевидно, что y(xi) = yi, а при Δx → 0 x y yi 1 y ( xi ) y i i . x Заменяя в функции U интеграл суммой, что справедливо при Δx → 0, получаем n y yi 1 b x( y0 , y1 , , yn ) . U a F ( x, y, y )dx x F xi , yi , i x i 0 Функция Φ зависит от n + 1 значения переменной y (искомая функция), которые необходимо найти. Имеем типовую задачу на безусловный 30 экстремум. Поэтому числовые значения y0, y1, . . ., yn можно найти из решения системы уравнений: y 0, 0 0, y 1 y 0. n 6. УКАЗАНИЯ К ВЫПОЛНЕНИЮ РАБОТЫ, ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ Задания к контрольной работе содержат 10 вариантов. Каждый студент выполняет один вариант. Номер варианта соответствует последней цифре зачетной книжки. Индивидуальное задание состоит из трех задач. Решение задач выполняется в развернутом виде. Примеры решения задач приведены в разделе 5. Работа должна быть оформлена на листах формата А4. Титульный лист должен быть выполнен по СТП 1.01-2002 Текстовые документы. На второй странице должно располагаться содержание с указанием страниц и описание задания. 7. ВАРИАНТЫ ЗАДАНИЙ Вариант 1 1. Найти экстремум функции f(x) = –x12 – x22 – x32 – x1 + x1x2 + 2x3 2. Найти максимум функции f(x) = 3x1 – 4x2 при условиях: 6x1 + 6x2 36, 4x1 + 8x2 32, x1, x2 0 3. Составить алгоритм определения минимума функции f(x) = 2x12 + x1x2 + x22 31 методом Гаусса-Зейделя и найти решение при движении из точки с координатами x1 = 0,5; x2 = 1. Вариант 2 1. Найти экстремум функции f(x) = x13 + x22 + x32 + x2x3 – 3x1 + 6x2 +2 2. Найти максимум функции f(x) = 150x1 + 35x2 при условиях: 150x1 + 200x2 200, 14x1 + 4x2 4, x1, x2 0 3. Составить алгоритм определения минимума функции f(x) = 2x12 + x1x2 + x22 градиентным методом и найти решение при движении из точки с координатами x1 = 0,5; x2 = 1. Вариант 3 1. Найти экстремум функции f(x) = x12 + x22 при условии x1 + x2 – 2 = 0 2. Найти максимум функции f(x) = –3x1 + 12x2 при условиях: x1 + 4x2 16, x1 – x2 2, 3x1 – 5x2 8, x1, x2 0 3. Составить алгоритм и найти минимум функции f(x) = 2x2 – 12x методами деления отрезка пополам и золотого сечения. Вариант 4 1. Найти экстремум функции f(x) = x12 + x22 при условии x12 + 2x22 – 8 = 0 32 2. Найти максимум функции f(x) = –3x1 + 2x2 при условиях: –2x1 + 3x2 6, x1 + 4x2 16, x1, x2 0 3. Составить алгоритм и найти минимум функции f(x) = 2x2 – 12x методами дихотомии и Фибоначчи. Вариант 5 1. Найти экстремум функции f(x) = 4x12 + 3x22 – 4x1x2 + x1 2. Найти максимум функции f(x) = x1 – x2 при условиях: –x1 + 2x2 4, 3x1 + 2x2 14, x1, x2 0 3. Составить алгоритм определения и вычислить минимум функции f(x) = x13 – x1x2 + x22 – 2x1 + 3x2 – 4 методом Гаусса-Зейделя при движении из точки с координатами x1 = 0, x2 = 0. Вариант 6 1. Найти экстремум функции f(x) = x12 + 5x22 + 3x32 + 4x1x2 – 2x2x3 – 2x1x3 2. Найти максимум функции f(x) = 10x1 + x2 при условиях: 2x1 + 11x2 33, x1 + x2 7, 4x1 – 5x2 5, x1, x2 0 3. Составить алгоритм определения минимума функции f(x) = x13 – x1x2 + x22 – 2x1 + 3x2 – 4 градиентным методом и найти решение при движении из точки с координатами x1 = 0, x2 = 0. 33 Вариант 7 1. Найти экстремум функции f(x) = x12 + x22 при условии x1 – x12 – 2 = 0 2. Найти максимум функции f(x) = x1 – x2 при условиях: –x1 + 2x2 ≤ 4, 3x1 + 2x2 ≤ 16, x1, x2 0 3. Составить алгоритм и найти минимум функции 127 2 61 f ( x) x x2 4 4 методами деления отрезка пополам и Фибоначчи. Вариант 8 1. Найти экстремум функции f(x) = 2x12 – 4x1 + x22 – 8x2 + 3 при условии x1 + x2 + 6 = 0 2. Найти максимум функции f(x) = 35x1 + 50x2 при условиях: 200x1 + 150x2 200, 14x1 + 4x2 14, x1, x2 0 3. Составить алгоритм и найти минимум функции 16 f ( x) 2 x 2 x методами дихотомии и золотого сечения. Вариант 9 1. Найти экстремум функции f(x) = –4x12 – 4x1 – x22 + 8x2 при условии 2x1 – x2 – 6 = 0 34 2. Найти максимум функции f(x) = –2x1 + 6x2 при условиях: –x1 + 2x2 4, 3x1 + 2x2 14, x1, x2 0 3. Составить алгоритм и найти минимум функции 16 f ( x) 2 x 2 x методами деления отрезка пополам и Фибоначчи. Вариант 10 1. Найти экстремум функции f(x) = 3x1x2 – x1x22 – x12x2 2. Найти максимум функции f(x) = –3x1 + 12x2 при условиях: x1 + 4x2 16, x1 – x2 2, 3x1 – 5x2 8, x1, x2 0 3. Составить алгоритм определения минимума функции f(x) = x13 – x1x2 + x22 – 2x1 + 3x2 – 4 методом покоординатного движения и найти решения при движении из точки с координатами x1 = 0, x2 = 0. 8. СПИСОК ЛИТЕРАТУРЫ 1. Христова Н.П. Основная задача линейного программирования и методы ее решения. – Рыбинск: РГАТА, 2005. 2. Пантелеев А. В., Летова Т. А. Методы оптимизации в примерах и задачах: Учеб. пособие. – М.: Высш. шк., 2002. 3. Аоки М. Введение в методы оптимизации. – М.: Мир, 1977. 4. Банди Б. Методы оптимизации. Вводный курс. – М.: Радио и связь, 1988. 5. Мину М. Математическое программирование. Теория и алгоритмы. – М.: Наука, 1990. 6. Поляк Б. Т. Введение в оптимизацию. – М.: Наука, 1983. 35 7. Сухарев А.Г., Тимохов А.В., Федоров В.В. Курс методов оптимизации. М.: Наука, 1986. 8. Аттеков А.В., Галкин С.В., Зарубин В.С. Методы оптимизации. М.: МГТУ им. Баумана, 2003.