
- •Некрасова м.Г. - Методы оптимизации Оглавление
- •Глава 1. Введение в методы оптимизации
- •Вопросы к главе 1
- •Глава 2. Основы теории оптимизации
- •2.1. Параметры плана
- •2.2. Целевая функция (план)
- •Вопросы к главе 2
- •Глава 3. Функция одной переменной
- •3.1. Определение функции одной переменной и её свойства
- •3.2. Исследование функций в экономике. Нахождение максимума прибыли
- •3.3. Определение глобального экстремума
- •3.4. Выпуклость, вогнутость функции
- •3.4. Критерий оптимальности
- •Замечание.
- •3.6. Идентификация оптимумов
- •Вопросы к главе 3
- •Глава 4. Одномерная оптимизация
- •4.1. Методы исключения интервалов
- •4.1.1. Метод сканирования
- •4.1.2. Метод деления отрезка пополам
- •4.1.2. Метод золотого сечения
- •4.1.2. Сравнительная характеристика методов исключения интервалов
- •4.2. Полиномиальная аппроксимация и методы точечного оценивания
- •4.2.1. Метод параболической аппроксимации
- •4.2.2. Метод Пауэлла
- •4.3. Сравнение методов одномерного поиска
- •Метод Пауэлла
- •Глава 5. Функции многих переменных
- •5.1. Функции многих переменных, их обозначение и область определения
- •5.2. Некоторые многомерные функции, используемые в экономике
- •5.3. Частные производные функции многих переменных
- •5.3. Экономический смысл частных производных
- •5.3. Частные производные высших порядков
- •5.6. Свойства функций нескольких переменных
- •5.7. Производная по направлению. Градиент. Линии уровня функции
- •5.8. Экстремум функции многих переменных
- •Вопросы к главе 5
- •Глава 6. Многомерная безусловная градиентная оптимизация
- •6.1. Концепция методов
- •6.2. Метод градиентного спуска
- •6.3. Метод наискорейшего спуска
- •Вопросы к главе 6
- •Глава 7. Критерии оптимальности в задачах с ограничениями
- •7.1. Задачи с ограничениями в виде равенств
- •7.2. Множители Лагранжа
- •7.3. Экономическая интерпретация множителей Лагранжа
- •7.4. Условия Куна - Таккера
- •7.4.1. Условия Куна – Таккера и задача Куна - Таккера
- •7.5. Теоремы Куна - Таккера
- •7.6. Условия существования седловой точки
- •Теорема 4. Необходимые условия оптимальности
- •Вопросы к главе 7
- •Глава 8. Модели динамического программирования
- •8.1. Предмет динамического программирования
- •8.2. Постановка задачи динамического программирования
- •8.3. Принцип оптимальности и математическое описание динамического процесса управления
- •8.4. Общая схема применения метода динамического программирования
- •8.5. Двумерная модель распределения ресурсов
- •8.6. Дискретная динамическая модель оптимального распределения ресурсов
- •2 Этап. Безусловная оптимизация.
- •8.7. Выбор оптимальной стратегии обновления оборудования
- •8.8. Выбор оптимального маршрута перевозки грузов
- •2 Этап. Безусловная оптимизация.
- •8.9. Построение оптимальной последовательности операций в коммерческой деятельности
- •1 Этап. Условная оптимизация.
- •Вопросы к главе 8
- •Пример выполнения задачи 1
- •Пример выполнения задачи 4
- •Пример выполнения задачи 5
- •Расчетно-графическое задание 2
- •Пример выполнения задачи 1
- •Пример выполнения задачи 2
- •Пример выполнения задачи 3
- •Пример выполнения задачи 4
- •1 Этап. Условная оптимизация.
- •2 Этап. Безусловная оптимизация.
- •2 Этап. Безусловная оптимизация.
4.1.2. Метод деления отрезка пополам
Метод деления отрезка пополам является простейшим последовательным методом минимизации. Он позволяет для любой функции f(x)Q[a, b] построить последовательность вложенных отрезков [a, b] [a1,b1] … [an-1, bn-1] [an, bn], каждый из которых содержит хотя бы одну из точек оптимума х* функции f(x).
М
етод
основан на делении текущего отрезка
[а, b], где
содержится искомый экстремум, на две
равные части с последующим выбором
одной из половин, в которой локализуется
максимум в качестве следующего текущего
отрезка. Экстремум локализуется путем
сравнения двух значений критерия
оптимальности в точках, отстоящих
от середины отрезка на
/2, где
— погрешность решения задачи оптимизации.
Если f(х + /2) > f(х - /2), то максимум располагается на правой половине текущего отрезка [а, b] , в противном случае — на левой.
Процесс поиска завершается при достижении отрезком [а, b] величины заданной погрешности .
К недостаткам метода относится его работоспособность только для одноэкстремальных функций f(х) (т.е. таких, которые содержат один экстремум того типа, который мы ищем в задаче), так как в других случаях при сравнении двух критериев в соседних точках невозможно правильно выбрать следующий интервал, где находится максимум.
На рис. 17 приведены три этапа метода половинного деления. Сплошными вертикальными линиями отмечены середины отрезков, а пунктирными — вычисляемые значения критерия оптимальности слева и справа на /2 от середин.
Иллюстрация метода заключается в следующем: 1 – интервал, включающий в себя искомый максимум функции после первого этапа (первого деления пополам); 2, 3 – то же соответственно после второго и третьего этапов.
Существует и другой вариант алгоритма, заключающийся в следующем. После нахождения середины отрезка (например, точка с1) в одной из половинок (допустим, в левой) находят среднюю точку (точка с2) и, сравнивая значения функции в этих точках, определяют, в какой из половинок находится экстремум. Если f(c1)<f(c2), то в качестве следующего отрезка выбираем отрезок [а, с1], если же f(c1)>f(c2), то берут новую точку в середине правой половины (точка с3) и в ней вычисляют функцию. В зависимости от сравнения значений функции в точках с3 и с1 выбирают новый отрезок [с1, b] или [с2, с3] и т.д.
Второй вариант метода не имеет с точки зрения эффективности принципиального отличия от первого, так как эффективность принято оценивать по наихудшему варианту (т.е. по двум вычислениям f(x) на каждом шаге). В первом варианте метода есть одна особенность, которая его делает очень эффективным при экспериментальном отыскании экстремума (например, при автоматической настройке технических систем или при практическом поиске наилучших условий деятельности экономического объекта). Малые отклонения от текущей точки обеспечивают в процессе поиска отсутствие "шараханий", сопровождающихся резкими отклонениями состояния системы.
Пример 14. Найти минимальное значение f* и точку минимума х* функции
f(x)=x4+8x3-6x2-72х на отрезке [1.5; 2]. Точку х* найти с погрешностью =0,05.
Решение. 1 способ. Вычисления представим в виде табл. 6.
Таблица 6
n |
an |
bn |
f(an) |
f(bn) |
cn |
f(cn) |
|an-bn| |
0 |
1,500 |
2,000 |
-89,438 |
-88,000 |
1,750 |
-92,121 |
0,500 |
1 |
1,500 |
1,750 |
-89,438 |
-92,121 |
1,625 |
-91,543 |
0,250 |
2 |
1,625 |
1,750 |
-91,543 |
-92,121 |
1,688 |
-92,033 |
0,125 |
3 |
1,688 |
1,750 |
-92,033 |
-92,121 |
1,719 |
-92,129 |
0,063 |
4 |
1,719 |
1,750 |
-92,129 |
-92,121 |
1,734 |
-92,138 |
0,031 |
В итоге получили: х* 1.734 и f* f (1.734) = - 92.138.
В таблице an и bn являются концами отрезков, а сn – середина соответствующего отрезка, то есть
Полагая
,
находим х*
с абсолютной погрешностью, не превосходящей
величины
(**)
Используя условие n , из последнего выражения можно найти необходимое число шагов n для обеспечения требуемой точности . Однако на практике часто поступают иначе: определив границы отрезка [an; bn], вычисляют n по формуле (**) и сравнивают с заданной точностью .
В нашем случае положим =0,02 < 2=0,1. Построим последовательность вложенных отрезков [an; bn] по рекуррентным формулам, записывая результаты вычислений в табл. 7:
Таблица 7
n |
an |
bn |
|
х1(n) |
х2(n) |
f(x1(n)) |
f(x2(n)) |
Примечания |
0 |
1.5 |
2 |
0.25 |
1.74 |
1.76 |
-92.135 |
-92.096 |
|
1 |
1.5 |
1.76 |
0.13 |
1.62 |
1.64 |
-91.486 |
-91.696 |
|
2 |
1.62 |
1.76 |
0.07 |
1.68 |
1.70 |
-91.995 |
-92.084 |
|
3 |
1.68 |
1.76 |
0.04 |
|
|
|
|
|
Следовательно, х* 1,72, и f* f (1.72) = - 92.13.
Пример 15. Методом деления отрезка пополам найти точку минимума х* функции
на отрезке [0.5; 1] с точностью =0,05.
Решение. Сначала произведем вычисления, используя первый способ.
Таблица 8
n |
an |
bn |
f(an) |
f(bn) |
cn |
f(cn) |
|an-bn| |
0 |
0,5 |
1 |
-3,591 |
-0,5 |
0,75 |
-2,439 |
0,5 |
1 |
0,5 |
0,75 |
-3,591 |
-2,439 |
0,625 |
-3,133 |
0,25 |
2 |
0,5 |
0,625 |
-3,591 |
-3,133 |
0,563 |
-3,395 |
0,125 |
3 |
0,5 |
0,563 |
-3,591 |
-3,395 |
0,531 |
-3,501 |
0,063 |
4 |
0,5 |
0,531 |
-3,591 |
-3,501 |
0,516 |
-3,548 |
0,031 |
Получаем, х* 0,516, и f* f (0,516) = -3,548.
Решим этот же пример вторым способом. Для этого составим табл. 9:
Таблица 9
n |
an |
bn |
|
х1(n) |
х2(n) |
f(x1(n)) |
f(x2(n)) |
Примечания |
0 |
0,5 |
1 |
0,25 |
0,74 |
0,76 |
-2,502 |
-2,374 |
|
1 |
0,5 |
0,74 |
0,12 |
0,61 |
0,63 |
-3,201 |
-3,109 |
|
2 |
0,5 |
0,63 |
0,065 |
0,555 |
0,575 |
-3,422 |
-3,448 |
|
3 |
0,5 |
0,575 |
0,0375 |
|
|
|
|
точность достигнута |
Следовательно, х* 0,5375, и f* f (0,5375) = -3,4814.
Пример 16. Дана функция f(x) = sin (x+1). Найти максимум на интервале [-1; 2] с точностью =0,05.
Решение. Вычисления представим в виде табл. 10.
Таблица 10
n |
an |
bn |
f(an) |
f(bn) |
cn |
f(cn) |
|an-bn| |
0 |
-1 |
2 |
0 |
0,1411 |
0,5 |
0,9975 |
3 |
1 |
0,5 |
2 |
0,9975 |
0,1411 |
1,25 |
0,7781 |
1,5 |
2 |
0,5 |
1,25 |
0,9975 |
0,7781 |
0,875 |
0,9541 |
0,75 |
3 |
0,5 |
0,875 |
0,9975 |
0,9541 |
0,6875 |
0,9932 |
0,375 |
4 |
0,5 |
0,6875 |
0,9975 |
0,9932 |
0,5938 |
0,9997 |
0,1875 |
5 |
0,5 |
0,5938 |
0,9975 |
0,9997 |
0,5469 |
0,9997 |
0,0938 |
6 |
0,5469 |
0,5938 |
0,9997 |
0,9997 |
0,5703 |
1 |
0,0469 |
Итак,
Решим этот же пример вторым способом. Для этого составим табл. 11:
Таблица 11
n |
an |
bn |
|
х1(n) |
х2(n) |
f(x1(n)) |
f(x2(n)) |
Примечания |
0 |
-1 |
2 |
1,5 |
0,55 |
0,45 |
0,9998 |
0,9927 |
|
1 |
0,55 |
2 |
0,725 |
1,325 |
1,225 |
0,7288 |
0,7935 |
|
2 |
0,55 |
1,225 |
0,3375 |
0,9375 |
0,8375 |
0,9335 |
0,9646 |
|
3 |
0,55 |
0,8375 |
0,1438 |
0,7438 |
0,6438 |
0,9851 |
0,9997 |
|
4 |
0,55 |
0,6438 |
0,0469 |
|
|
|
|
|
Следовательно, х* 0,5969, f* 0.9997.