
- •Аннотация
- •Оглавление
- •Предисловие
- •ГЛАВА 1. Задачи оптимизации. Основные определения
- •1.1. Задачи оптимизации
- •1.2. Минимум функции одной переменной
- •1.3. Унимодальные функции
- •1.4. Выпуклые функции
- •1.5. Условие Липшица
- •1.6. Классическая минимизация функции одной переменной
- •Вопросы и задания для самоконтроля
- •ГЛАВА 2. Одномерная минимизация функций. Прямые методы
- •2.1. О прямых методах
- •2.2. Метод перебора
- •2.3. Метод поразрядного поиска
- •2.4. Метод дихотомии
- •2.5. Метод золотого сечения
- •2.6. Сравнение методов перебора, дихотомии и золотого сечения
- •2.7. Метод парабол
- •Вопросы и задания для самоконтроля
- •Задание для численной реализации в среде программирования MATLAB
- •ГЛАВА 3. Одномерная минимизация. Методы, использующие информацию о производных целевой функции
- •3.1. Метод средней точки
- •3.2. Метод хорд
- •3.3. Метод Ньютона
- •3.4. Возможные модификации метода Ньютона
- •3.5. Методы минимизации многомодальных функций
- •Вопросы и задания для самоконтроля
- •Задание для численной реализации в среде программирования MATLAB
- •ГЛАВА 4. Задача минимизации функции многих переменных. Необходимые и достаточные условия безусловного экстремума
- •4.1. Постановка задачи и определения
- •4.2. Свойства выпуклых множеств и выпуклых функций
- •4.3. Необходимые и достаточные условия безусловного экстремума
- •Вопросы и задания для самоконтроля
- •5.1. Выпуклые квадратичные функции
- •5.2. Общие принципы многомерной минимизации
- •5.3. Метод градиентного спуска
- •5.4. Метод наискорейшего спуска
- •5.5. Метод сопряженных направлений
- •5.6. Метод сопряженных градиентов
- •5.7. Метод Ньютона
- •5.8. Квазиньютоновские методы
- •Вопросы и задания для самопроверки
- •Задание для численной реализации в среде программирования MATLAB
- •ГЛАВА 6. Прямые методы безусловной минимизации многомерных задач
- •6.1. Проблема минимизации многомерных задач
- •6.2. Минимизация функций по правильному (регулярному) симплексу
- •6.3. Минимизация функций при помощи нерегулярного симплекса
- •6.4. Метод циклического покоординатного спуска
- •6.5. Метод Хука–Дживса
- •6.6. Методы случайного поиска
- •Вопросы и задания для самопроверки
- •Задание для численной реализации в среде программирования MATLAB
- •7.1. Условный экстремум при ограничениях типа равенств
- •7.2. Условный экстремум при ограничениях типа неравенств
- •Вопросы и задания для самопроверки
- •ГЛАВА 8. Линейное программирование
- •8.1. Определения. Примеры задач линейного программирования
- •8.2. Общая и каноническая задачи линейного программирования
- •8.3. Геометрическое истолкование задач линейного программирования
- •8.4. Аналитическое решение задач линейного программирования
- •Вопросы и задания для самоконтроля
- •Литература
ГЛАВА 2
Одномерная минимизация функций. Прямые методы
Подробный разбор одномерных задач минимизации функций важен по двум причинам.
Во-первых, эти задачи наиболее просты, и на них легче понять постановку проблемы, методы решения и возникающие трудности. Иногда одномерные задачи имеют самостоятельный практический интерес.
Во-вторых, и это главное, алгоритмы решения многомерных задач оптимизации часто сводятся к последовательному многократному решению одномерных задач и не могут быть поняты без умения их решать.
Пусть необходимо минимизировать функцию f (x) на отрезке [a, b] . Обычно для этого применяются приближенные, т.е. численные методы. Решение задачи находится с необходимой точностью в результате определения конечного числа значений функции f (x) и ее производных в некоторых точках отрезка [a, b] .
2.1. О прямых методах
Методы, использующие только значения функции и не требующие вычисления ее производных, называются прямыми методами минимизации. Большим достоинством прямых методов является то, что от целевой функции не требуется дифференцируемости. Более того, она может быть не задана в аналитическом виде. Единственное, на чем основаны алгоритмы прямых методов минимизации, это возможность определения значений f (x) в заданных точках.
Пример 2.1. Химический завод производит некоторое вещество. Выход интересующего продукта определяется температурой y = f (T ) , которую можно варьировать в пределах: T1 ≤ T ≤ T2 . Вид функции f (T ) заранее не известен, он зависит от используемого сырья. Получив очередную партию сырья, нужно найти температуру T , при которой наиболее выгодно вести производство, т.е. наибольшее значение f (T ) .
20
Пример 2.2. Значения функции f (x) получаются в результате сложных численных расчетов.
Рассмотрим наиболее распространенные прямые методы поиска точки минимума. Самым слабым требованием на функцию f (x) , позволяющим использовать эти методы, является ее унимодальность. Поэтому далее будем считать функцию f (x) унимодальной на отрезке [a, b] .
Будут подробно рассмотрены следующие четыре прямых метода:
−перебора и поразрядного поиска;
−деления отрезка пополам (метод дихотомии и метод золотого сечения).
Кроме того, будет дано представление о методах полиномиальной аппроксимации (метод парабол).
2.2. Метод перебора
Является простейшим из прямых методов и состоит в следующем. Разобьем
отрезок [a, b] на n |
равных частей точками деления xi = a + i(b − a) / n, |
i = 0,..., n . |
|
Вычислив значения |
f (x) в точках xi , путем сравнения найдем точку xm , |
0 ≤ m ≤ n , |
|
для которой |
|
|
|
|
|
f (xm ) = min f (xi ). |
(2.1) |
|
|
0≤i≤n |
|
Далее, положим x ≈ xm , |
f ≈ f (xm ) . |
|
|
Необходимо отметить, |
что погрешность определения точки минимума x |
||
функции f (x) методом перебора не превосходит величины εn = (b − a) / n . |
|
||
□ Предположим, что xm |
из (2.1) является внутренней точкой разбиения отрезка |
[a, b] , т.е. 1 ≤ m ≤ n −1 (случаи m = 0 и m = n рассматриваются аналогично). Тогда из соотношения (2.1) и по определению унимодальности функции следует
а) f (xm−1 ) ≥ f (xm ) , т.е. x [xm−1 , b]; б) f (xm ) ≤ f (xm+1 ) , т.е. x [a, xm+1 ].
Отсюда получаем, что x* [xm−1 , b] ∩[a, xm+1 ] =[xm−1 , xm+1 ] . Длина последнего отрезка
равна |
|
2(b − a) / n , а точка |
xm |
является его серединой, поэтому |
|
|
xm − x |
|
≤ (b − a) / n = εn .■ |
|
|
|
|
|
|
21
|
Таким образом, чтобы обеспечить требуемую точность ε |
определения точки |
||||||||||||||||||||||||||||
x , число отрезков разбиения n |
необходимо выбрать из условия εn = (b − a) / n ≤ε , |
|||||||||||||||||||||||||||||
т.е. n ≥ (b − a) / ε . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
Замечание. Пусть реализация метода |
перебора потребовала N |
вычислений |
|||||||||||||||||||||||||||
функции f (x) . |
Это означает, что отрезок [a, b] |
был разбит на |
n = N −1 частей и |
|||||||||||||||||||||||||||
достигнутая |
|
точность |
определения |
x |
составила |
εn |
= εN −1 |
= |
b − a |
. |
Поэтому |
|||||||||||||||||||
|
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
N −1 |
|
|
|||
точность решения |
ε(N ) , которую обеспечивает метод перебора в результате N |
|||||||||||||||||||||||||||||
вычислений |
|
f (x) , будет |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
ε(N ) = |
b − a |
. |
|
|
|
|
|
|
|
|
|
|
|
(2.2) |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
N −1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
Пример 2.3. Методом перебора решить задачу f (x) = x4 + e−x |
→ min, |
x [0, 1] , с |
|||||||||||||||||||||||||||
точностью до ε = 0,1. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
□ Функция |
f (x) |
унимодальна на |
отрезке |
[0,1]. |
Найдем |
|
число |
|
n |
отрезков |
|||||||||||||||||||
разбиения: |
n ≥ |
1 − 0 |
= |
10 , |
т.е. можно взять n =10 . Вычислим значения |
f (xi ) , где |
||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
0,1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
xi = 0,1i, i = 0, ..., 10 |
и запишем их в табл. 2.1. |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
Значения функции в узловых точках при методе перебора |
Таблица 2.1. |
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
xi |
|
0,0 |
|
0,1 |
|
|
0,2 |
|
|
0,3 |
|
0,4 |
|
|
0,5 |
0,6 |
0,7 |
|
0,8 |
|
|
0,9 |
1,0 |
|||||||
f (xi ) |
1,00 |
|
0,90 |
|
|
0,82 |
|
0,75 |
|
0,70 |
|
|
0,67 |
0,68 |
0,74 |
|
0,86 |
|
1,06 |
1,37 |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
В |
этой таблице минимальное вычисленное значение f (x) равно 0,67. |
|
|
||||||||||||||||||||||||||
Таким образом, |
x ≈ 0,5, |
f |
≈ 0,67 .■ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
2.3. Метод поразрядного поиска |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
Рассмотрим усовершенствованный метод перебора с целью уменьшения |
|||||||||||||||||||||||||||||
количества |
|
значений |
f (x) , |
которые |
необходимо |
находить |
в |
процессе |
||||||||||||||||||||||
минимизации. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
Во-первых, если |
f (xi ) ≤ f (xi+1 ) , то отпадает необходимость вычислять |
f (x) в |
|||||||||||||||||||||||||||
точках xi+2 , |
xi+3 |
и т.д., |
так |
как из унимодальности функции |
|
f (x) |
следует, что |
|||||||||||||||||||||||
x |
≤ xi+1 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
Во-вторых, разумно было бы сначала определить отрезок, содержащий точку x с небольшой точностью, а затем искать ее на этом отрезке с меньшим шагом дискретизации, повышая точность.
Такая возможность улучшения метода перебора реализована в методе поразрядного поиска, в котором перебор точек отрезка происходит сначала с шагом = xi+1 − xi > ε до тех пор, пока не выполнится условие f (xi ) ≤ f (xi+1 ) или пока очередная из этих точек не совпадет с концом отрезка. После этого шаг уменьшается (обычно в четыре раза), и перебор точек с новым шагом производится в противоположном направлении до тех пор, пока значения f (x) не перестанут уменьшаться или очередная точка не совпадет с концом отрезка и т.д. Процесс завершается, когда перебор в данном направлении закончен, а использованный при этом шаг дискретизации не превосходит ε .
Пример 2.4. Методом поразрядного поиска найти f (x) = x4 + e−x → min, x [0, 1] ,
с точностью до ε = 0,1.
□ Начальный шаг = 0,25. Вычисляя последовательно значения f (x) в точках
дискретизации с шагом 0,25, получим
x |
|
|
|
|
|
|
|
|
|
0 → 0,25 → 0,50 →0,75 |
|
|
|
|
|
|
|
|
|
|
|
f (x) |
|
|
|
|
|
1,000 > 0,783 > 0,669 < 0,789 |
||||
|
|
|
|
|
|
|
|
|
|
|
Так как |
f (0,50) < f |
(0,75) , причем |
|
|
|
>ε , то поиск x продолжаем из начальной |
||||
|
|
|||||||||
точки x0 = 0,75 , изменив его направление и уменьшив шаг в четыре раза |
||||||||||
|
|
|
|
|
|
|
||||
x |
|
|
|
|
|
0,4375 ←0,5000 ← 0,5625 ←0,6250 ← 0,6875 ← 0,750 |
||||
|
|
|
|
|
|
|
||||
f (x) |
|
|
|
|
|
0,682 > 0,669 < 0,670 < 0,688 < 0,726 < 0,789 |
||||
|
|
|
|
|
|
|
||||
Так как |
|
|
|
|
= 0,0625 |
<ε , то поиск завершен и x ≈ 0,5, f ≈ 0,67 (сравнить с |
||||
|
|
результатом решения примера методом перебора; здесь потребовалось только 8, а не 11 вычисленных значений функции f (x) ). ■
Необходимо отметить, что метод поразрядного поиска, несмотря на простоту и меньшую эффективность, чем рассматриваемые ниже методы деления отрезка пополам, имеет значительную область применимости в методах многомерной минимизации. Это связано с тем, что при реализации этого метода не обязательно задавать границы отрезка [a, b] , роль которого может играть вся бесконечная прямая или любая ее часть.
23