- •Введение
- •Часть 1. Линейное программирование
- •1.1. Построение линейных экономико-математических моделей
- •Примеры задач
- •1.2. Формы записи задач линейного программирования
- •1.3. Свойства решений задач линейного программирования
- •1.4. Геометрический смысл и графический метод решения задач линейного программирования
- •1.5. Симплексный метод решения задач линейного программирования
- •1.6. Симплексный метод с искусственым базисом
- •1.7. Элементы теории двойственности
- •А. Симметричная двойственная пара
- •В. Несимметричная двойственная пара
- •1.8. Основные теоремы двойственности
- •1.9. Транспортная задача
- •Алгоритм метода потенциалов
- •1.10. Задача об оптимальных назначениях
- •Часть 2. Нелинейное программирование
- •2.1. Дробно-линейное программирование
- •2.1.1. Постановка задачи
- •Общую задачу дробно-линейного программирования (в дальнейшем длп) обычно записывают в виде:
- •2.1.2. Графическое решение задач длп
- •2.1.3. Симплекс-метод в длп
- •2.2. Общая задача нелинейного программирования. Классификация вычислительных методов
- •Условия (1) и (2), а также
- •По постановке задачи.
- •2. По характерным чертам алгоритмов.
- •2.3. Эффективные методы одномерной минимизации
- •2.4. Графический метод решения задач нелинейного программирования
- •2.5. Методы минимизации для задач без ограничений, использующие производные
- •2.6. Методы минимизации, не использующие производные
- •2.7. Методы решения задач нелинейного программирования с ограничениями
- •2.7.1. Методы линейной аппроксимации
- •2.7.2. Понятие о методах штрафных функций
- •Список использованной литературы:
- •Содержание
- •Часть 1. Линейное программирование 3
- •Часть 2. Нелинейное программирование 47
2.6. Методы минимизации, не использующие производные
В данной группе методов направление минимизации полностью определяется на основании последовательных вычислений целевой функции Эти методы сходятся медленнее, чем методы использующие производные, однако обладают важным преимуществом: не надо находить производные ни аналитически, ни численно и, как следствие, не надо тратить силы и время на подготовку задачи к решению. Соответственно, целевая функция может быть любой природы, даже недифференцируемой.
Методы прямого поиска. Идея этих методов заключается в изменении на каждом шаге только одной переменной при постоянстве остальных, до тех пор, пока минимум не будет достигнут. Один из эффективнейших алгоритмов был предложен Р. Хуком и Т. Дживсом. Алгоритм включает два основных этапа:
А) Исследующий поиск. Выбирается начальная точка и начальное приращение , вычисляется Далее, по циклу, всем хiдается приращение , в частности находятся значения и и поиск переходит в ту точку, где меньше значение целевой функции (если ни в одной из этих точек нет улучшения по сравнению с , то х1 оставляем без изменения). Далее эта же процедура применяется ко всем переменным: х2, …, хn. После прохождения одного или нескольких полных циклов переходят ко второму этапу;
Б) Поиск по образцу. Удачные изменения переменных в пункте (А) определяют вектор в Rn, указывающий направление минимизации. В данном направлении из базисной точки (лучшей точки этапа (А), которую обозначим ) делается шаг длиной , который приводит в точку . Если , то становится базисной, в противном случае базисной остается . В любом случае возвращаемся к пункту (А).
Когда достигнута стадия поиска, на которой ни (А) ни (Б) не улучшают ни в одном направлении, требуется уменьшить длину шага по правилу: , где к – число последовательных неудач в поисках (А) при данной величине шага.
Условия окончания поиска:
1) либо приращение целевой функции в двух последовательных базисных точках меньше заданной величины ε;
2) либо для всех i (заданных).
Симплексный метод Спендли, Хекста и Химсворта. Определим регулярный симплекс в пространстве Rn как правильный многогранник с (n+1)-ой вершиной, т. е. на плоскости это равносторонний треугольник, в R3 – правильный тетраэдр и т. д. Соответствующий метод минимизации заключается в следующем. Выбирается начальная точка (как правило, это начало координат). После этого координаты всех вершин регулярного симплекса определяются столбцами матрицы n (n + 1):
где
t – длина стороны симплекса. В частности, при n = 2, t = 1 получаем правильный треугольник с вершинами
Рис. 2.6.1
Далее вычисляем f(x) в каждой вершине симплекса. Определяем вершину с max f(x) (пусть это будет точка О), из нее проводим прямую ОС через D – центр тяжести симплекса (проектирующую прямую) и в точку С по правилам векторной алгебры проектируется точка О. На следующем шаге рассматривается уже симплекс АВС, с которым проделываются аналогичные операции: определяется «худшая» вершина и через нее проводится проектирующая прямая, строится новый симплекс, а «худшая» вершина вычеркивается. Таким образом, симплекс осуществляет «блуждания» в n- мерном пространстве, приближаясь к точке минимума. Очевидно, для сходимости метода следует предусмотреть процедуру уменьшения длины стороны симплекса по мере приближения к минимуму, а также меры по избежанию циклического движения в окрестности экстремума. Подобные правила неплохо реализованы в следующем алгоритме:
Метод деформируемого многогранника Нелдера – Мида.
Основное отличие данного алгоритма от выше рассмотренного состоит в том, что «худшая» вершина симплекса проектируется через центр тяжести оставшихся вершин, «худшая» вершина вычеркивается и заменяется на отраженную, кроме того, в алгоритме предусмотрены другие возможности, ускоряющие нахождение минимума.
Пусть i = 1, …, n + 1 – i-я вершина многогранника на к-ом этапе поиска. Введем обозначения:
Начальный многогранник обычно выбирают в виде регулярного симплекса, исходная точка О(0, 0, …, 0) – одна из его вершин.
Алгоритм метода для к-го шага (к = 1, 2, … .):
-
Вычисляем значения целевой функции во всех точках симплекса, определяем «худшую» вершину . Производим отражение:
где α > 0 – коэффициент отражения.
-
Если – то есть «отраженная» точка оказалась «лучше» всех вершин симплекса, делаем растяжение:
γ > 1 – коэффициент растяжения.
Если после растяжения , то есть эта точка стала «лучше лучшей», заменяем «худшую» вершину симплекса на , иначе «худшая» вершина заменяется на , в любом случае к = к + 1, возвращаемся на пункт (1).
-
Если «отраженная» точка оказалась «хуже» всех вершин симплекса, кроме , производим операцию сжатие:
где 0 < β < 1 – коэффициент сжатия.
«Худшую» вершину заменяем на , к = к + 1, возвращаемся на пункт 1.
4) Если «отраженная» точка оказалась «хуже» всех вершин симплекса, включая , производим операцию редукция: длина всех векторов уменьшается в 2 раза:
, возвращаемся на (1).
-
Критерий остановки: (заданного).
Преимуществом метода Нелдера – Мида является то, что деформируемый многогранник в отличие от жесткого симплекса адаптируется к топографии целевой функции: изменяет очертания в изогнутых «впадинах», вытягивается вдоль длинных наклонных плоскостей и сжимается в окрестности минимума.
Рекомендации по выбору параметров α, β, γ: Пока «топология» задачи не требует изменения многогранника, полагаем α = 1, в дальнейшем α можно менять в пределах 1 ± ε. Для других параметров по результатам тестирования наиболее эффективные диапазоны изменения:
Пример 2.6.1. Найдем методом Нелдера – Мида минимум квадратичной функции, рассмотренной в 2.5:
В качестве параметров метода выберем следующие: α = 1; β = 0,5; γ = 2,5; ε = 0,1 (для критерия остановки).
Начальный симплекс – правильный треугольник со стороной t = 1 и вершинами О(0; 0), А(0,965; 0,259) и В(0,259; 0,965) – см. рис. 2.6.1.
Дальнейшие вычисления приведем в виде таблицы:
Х1 |
Х2 |
f(x1; x2) |
|
Шаг 1 |
Комментарии |
0 |
0 |
3 |
O |
|
|
0,965 |
0,259 |
0,81889 |
A |
Лучшая |
|
0,259 |
0,965 |
4,275466 |
B |
Худшая |
|
0,4825 |
0,1295 |
|
C1 |
|
Центр тяжести |
0,706 |
–0,706 |
7,98436 |
D |
Отражение |
Хуже худшей |
0,4825 |
0,1295 |
1,8427225 |
О1 |
Редукция |
|
0,612 |
0,612 |
1,301088 |
В1 |
|
|
|
|
|
|
Шаг 2 |
|
0,4825 |
0,1295 |
1,8427225 |
О1 |
Худшая |
|
0,965 |
0,259 |
0,81889 |
А |
Лучшая |
|
0,612 |
0,612 |
1,301088 |
В1 |
|
|
0,7885 |
0,4355 |
|
С2 |
|
Центр тяжести |
1,0945 |
0,7415 |
0,0287545 |
Е |
Отражение |
лучше всех |
1,5535 |
1,2005 |
–0,3485435 |
Г |
Растяжение |
еще лучше |
|
|
|
|
Шаг 3 |
|
0,612 |
0,612 |
1,301088 |
В1 |
Худшая |
|
0,965 |
0,259 |
0,81889 |
А |
|
|
1,5535 |
1,2005 |
–0,3485435 |
Г |
Лучшая |
|
1,25925 |
0,72975 |
|
С3 |
|
Центр тяжести |
1,9065 |
0,8475 |
–1,7450115 |
Ж |
Отражение |
лучше всех |
2,877375 |
1,02412 |
–3,066719 |
З |
Растяжение |
еще лучше |
|
|
|
|
Шаг 4 |
|
0,965 |
0,259 |
0,81889 |
А |
Худшая |
|
1,5535 |
1,2005 |
–0,3485435 |
Г |
|
|
2,87738 |
1,0241 |
–3,0666391 |
З |
Лучшая |
|
2,21544 |
1,1123 |
|
С4 |
|
Центр тяжести |
3,46588 |
1,9656 |
–3,7828539 |
И |
Отражение |
лучше всех |
5,34154 |
3,24555 |
–2,3190970 |
К |
Растяжение |
не лучше всех |
|
|
|
|
Шаг 5 |
|
1,5535 |
1,2005 |
–0,3485435 |
Г |
Худшая |
|
2,87738 |
1,0241 |
–3,0666397 |
З |
|
|
3,46588 |
1,9656 |
–3,7828539 |
И |
Лучшая |
|
3,17163 |
1,49485 |
|
С5 |
|
Центр тяжести |
4,78976 |
1,7892 |
–5,4892903 |
К |
Отражение |
лучше всех |
7,216955 |
2,230725 |
–3,3264181 |
Л |
Растяжение |
не лучше всех |
|
|
|
|
Шаг 6 |
|
2,87738 |
1,0241 |
–3,0666397 |
З |
Худшая |
|
3,46588 |
1,9656 |
–3,7828539 |
И |
|
|
4,78976 |
1,7892 |
–5,4892903 |
К |
Лучшая |
|
4,12782 |
1,8774 |
|
С6 |
|
Центр тяжести |
5,37826 |
2,7307 |
–5,7542852 |
М |
Отражение |
лучше всех |
7,25392 |
4,01065 |
–2,8549545 |
Н |
растяжение |
не лучше луч |
|
|
|
|
Шаг 7 |
|
3,46588 |
1,9656 |
–3,7828539 |
И |
Худшая |
|
4,78976 |
1,7892 |
–5,4892903 |
К |
|
|
5,37826 |
2,7307 |
–5,7542852 |
М |
Лучшая |
|
5,08401 |
2,25995 |
|
С7 |
|
Центр тяжести |
6,70214 |
2,5543 |
–6,4490617 |
П |
Отражение |
лучше всех |
9,129335 |
2,995825 |
–2,4302854 |
Р |
Растяжение |
не лучше всех |
|
|
|
|
Шаг 8 |
|
4,7898 |
1,7892 |
–5,4892734 |
К |
Худшая |
|
5,3783 |
2,7307 |
–5,7543719 |
М |
|
|
6,7021 |
2,5543 |
–6,4491092 |
П |
Лучшая |
|
6,0402 |
2,6425 |
|
С8 |
|
Центр тяжести |
7,2906 |
3,4958 |
–6,2627813 |
Т |
отражение |
не лучше всех |
|
|
|
|
|
Меняем К на Т |
|
|
|
|
Шаг 9 |
|
5,3783 |
2,7307 |
–5,7543719 |
М |
Худшая |
|
6,7021 |
2,5543 |
–6,4491092 |
П |
лучшая |
|
7,2906 |
3,4956 |
–6,2635402 |
Т |
|
|
6,99635 |
3,02495 |
|
С9 |
|
Центр тяжести |
8,6144 |
3,3192 |
–5,9455353 |
У |
отражение |
хуже худшей |
6,0402 |
2,6425 |
–6,8122667 |
М1 |
редукция |
|
6,99635 |
3,02495 |
–6,9965098 |
Т1 |
|
|
|
|
|
|
Шаг 10 |
|
6,0402 |
2,6425 |
–6,8122667 |
М1 |
|
|
6,7021 |
2,5543 |
–6,4491092 |
П |
Худшая |
|
6,9964 |
3,025 |
–6,9965020 |
Т1 |
Лучшая |
|
6,5183 |
2,83375 |
–6,9501002 |
С10 |
|
Центр тяжести |
|
|
|
|
критерий |
остановки = 0,301 |
6,3345 |
3,1132 |
–6,1917001 |
Ф |
отражение |
хуже худшей |
6,84925 |
2,78965 |
–6,8828798 |
П1 |
редукция |
|
6,5183 |
2,83375 |
–6,9501002 |
М2 |
|
|
|
|
|
|
Шаг 11 |
|
6,9964 |
3,025 |
–6,9965020 |
Т1 |
Лучшая |
|
6,8493 |
2,78897 |
–6,8818300 |
П1 |
худшая |
|
6,5183 |
2,8338 |
–6,9500870 |
М2 |
|
|
6,75735 |
2,9294 |
–6,9847235 |
С11 |
|
Центр тяжести |
|
|
|
|
критерий |
остановки = 0,063 |
6,9964 |
3,025 |
–6,9965020 |
|
Опт. |
решение |
Замечания. 1. Проверку критерия остановки целесообразно производить на тех шагах, где значения целевой функции в вершинах симплекса становятся близкими (в нашем случае начиная с 10-го шага).
2. В качестве оптимального решения взята «лучшая» вершина последнего симплекса. Она достаточно близка к истинному решению (х1 = 7; х2 = 3; fmin = –7).
Читателю рекомендуется изобразить ход поиска графически на плоскости ХОУ и проследить процесс преобразования симплексов.