Загребаев Методы матпрограммирования 2007
.pdfФедеральное агентство по образованию
Московский инженерно-физический институт (государственный университет)
А.М. Загребаев, Н.А. Крицына Ю.П. Кулябичев, Ю.Ю. Шумилов
МЕТОДЫ МАТЕМАТИЧЕСКОГО ПРОГРАММИРОВАНИЯ
В ЗАДАЧАХ ОПТИМИЗАЦИИ СЛОЖНЫХ ТЕХНИЧЕСКИХ СИСТЕМ
Рекомендовано УМО «Ядерные физика и технологии» в качестве учебного пособия
для студентов высших учебных заведений
Москва 2007
УДК 519.85(075) ББК 22.18я7 М 54
Методы математического программирования в задачах оптимизации сложных технических систем: учебное пособие / А.М. Загребаев, Н.А. Крицына,
Ю.П. Кулябичев, Ю.Ю. Шумилов. – М.: МИФИ, 2007. – 332 с.
Приведены теоретические основы методов оптимизации. Рассмотрены методы линейного, целочисленного и нелинейного программирования. Представлено большое количество практических задач, решение которых основано на использовании методов оптимизации.
Предназначено для студентов, обучающихся по специальности «Прикладная математика и информатика» и практикантов, а также будет полезно инженерам и аспирантам, работающим в области оптимизации параметров технических систем различного назначения.
Пособие подготовлено в рамках Инновационной образовательной программы.
Рецензент д-р техн. наук, проф. А.Д. Модяев
ISBN 978-5-7262-0807-7 |
© Московский инженерно-физический институт |
|
(государственный университет), 2007 |
О Г Л А В Л Е Н И Е
ПРЕДИСЛОВИЕ........................................................................................................... |
6 |
|
ОСНОВНЫЕ ОБОЗНАЧЕНИЯ И ПОНЯТИЯ........................................................ |
9 |
|
Глава 1. ОСНОВЫ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ ......................... |
15 |
|
1.1. Задача линейного программирования и ее геометрический смысл......... |
15 |
|
1.2. Симплекс-метод........................................................................................... |
20 |
|
1.2.1. Порядок решения задач линейного программирования |
|
|
|
симплекс-методом ........................................................................... |
20 |
1.2.2. Алгоритм решения задач линейного программирования |
|
|
|
с использованием симплекс-таблиц............................................... |
25 |
1.2.3. Примеры решения практических задач |
|
|
|
линейного программирования........................................................ |
27 |
1.3. Вырожденные задачи линейного программирования............................... |
35 |
|
1.3.1. Понятия вырожденности и зацикливания решения задач |
|
|
|
линейного программирования........................................................ |
35 |
1.3.2. |
Антициклин...................................................................................... |
39 |
1.4. Метод искусственного базиса..................................................................... |
41 |
|
1.4.1. |
Особенности метода........................................................................ |
41 |
1.4.2. Примеры решения задач с использованием метода |
|
|
|
искусственного базиса..................................................................... |
45 |
1.5. Двойственные задачи линейного программирования............................... |
55 |
|
1.5.1. |
Основные положения ...................................................................... |
55 |
1.5.2. |
Двойственный симплекс-алгоритм................................................. |
60 |
1.5.3. Примеры решения двойственных задач |
|
|
|
линейного программирования........................................................ |
62 |
1.6. Транспортная задача линейного программирования................................ |
67 |
|
1.6.1. |
Постановка задачи........................................................................... |
67 |
1.6.2. Нахождение первого опорного плана ............................................ |
69 |
|
1.6.3. |
Метод потенциалов.......................................................................... |
72 |
1.6.4. Транспортные задачи с неправильным балансом ......................... |
79 |
|
1.7. Дискретное программирование................................................................... |
84 |
|
1.7.1. |
Постановка задачи........................................................................... |
84 |
1.7.2. О решении задач линейного целочисленного |
|
|
|
программирования........................................................................... |
88 |
1.7.3. Метод отсечения. Первый алгоритм Гомори................................. |
90 |
|
1.7.4. Метод ветвей и границ.................................................................... |
94 |
|
1.7.5. |
Метод зондирования решений........................................................ |
97 |
1.7.6. |
Примеры решения задач |
|
|
целочисленного программирования............................................. |
100 |
|
3 |
|
Глава 2. |
ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ В ПРИКЛАДНЫХ |
|
|
|
ЗАДАЧАХ ОПТИМИЗАЦИИ ................................................................ |
108 |
|
2.1. |
Применение линейного программирования в теоретико-игровых |
|
|
|
методах исследования сложных систем................................................... |
108 |
|
|
2.1.1. Теоретические основы матричных игр........................................ |
108 |
|
|
2.1.2. Сведение матричной игры к задаче |
|
|
|
|
линейного программирования...................................................... |
111 |
2.2. |
Оптимальное распределение запасов реактивности при работе |
|
|
|
системы ядерных реакторов в переменном суточном |
|
|
|
графике нагрузки........................................................................................ |
114 |
|
|
2.2.1. |
Физическая постановка задачи..................................................... |
114 |
|
2.2.2. Оптимальное распределение запасов реактивности |
|
|
|
|
в системе двух реакторов с линейной зависимостью |
|
|
|
возможной степени снижения мощности |
|
|
|
от запасов реактивности................................................................ |
118 |
2.3. |
Оптимальная кластеризация как задача |
|
|
|
линейного программирования................................................................... |
126 |
|
|
2.3.1. Математическая постановка задачи кластерного анализа.......... |
126 |
|
|
2.3.2. Математические критерии оптимальной кластеризации............ |
132 |
|
|
2.3.3. |
Методы оптимальной кластеризации........................................... |
135 |
|
2.3.4. |
Приближенные методы кластеризации........................................ |
140 |
|
2.3.5. Зависимость времени и качества кластеризации |
|
|
|
|
от количества объектов, кластеров и размерности |
|
|
|
признакового пространства........................................................... |
148 |
Глава 3. |
НЕЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ......................................... |
160 |
|
3.1. Постановка задачи...................................................................................... |
160 |
||
|
3.1.1. Минимизация функции одной переменной................................. |
161 |
|
|
3.1.2. Поиск отрезка, содержащего точку минимума ........................... |
163 |
|
3.2. Методы одномерной минимизации.......................................................... |
164 |
||
|
3.2.1. Методы нахождения глобального минимума |
|
|
|
|
унимодальных функций................................................................ |
165 |
|
3.2.1.1. Прямые методы минимизации.......................................... |
165 |
3.2.1.2Методы минимизации, основанные на использовании
|
производных функций....................................................... |
167 |
3.2.2. Методы поиска глобального минимума |
|
|
многоэкстремальных функций ..................................................... |
169 |
|
3.2.3. Методы минимизации унимодальных функций.......................... |
169 |
|
3.2.3.1. |
Метод золотого сечения.................................................... |
170 |
3.2.3.2. |
Метод дихотомии.............................................................. |
175 |
3.2.3.3. |
Метод парабол |
|
|
(метод полиномиальной аппроксимации) ....................... |
179 |
3.3. Минимизация функций без ограничений |
|
|
(безусловная минимизация) ...................................................................... |
181 |
|
3.3.1. Методы нулевого порядка............................................................. |
183 |
|
3.3.1.1. |
Метод покоординатного спуска....................................... |
183 |
|
4 |
|
|
3.3.1.2. |
Метод ортонормальных направлений |
|
|
|
|
|
(метод Розенброка) ............................................................ |
191 |
|
3.3.1.3. Метод сопряженных направлений (метод Пауэлла)....... |
195 |
||
|
3.3.2. |
Методы первого порядка............................................................... |
200 |
|
|
3.3.2.1. |
Градиентные методы......................................................... |
200 |
|
|
3.3.2.2. |
Метод сопряженных градиентов...................................... |
210 |
|
|
3.3.3. |
Методы второго порядка............................................................... |
213 |
|
|
3.3.3.1. Метод Ньютона (метод Ньютона – Рафсона).................. |
213 |
||
|
3.3.3.2. |
Сходимость метода Ньютона ........................................... |
215 |
|
|
3.3.3.3. Метод Ньютона с регулировкой шага.............................. |
216 |
||
|
3.3.4. Метод переменной метрики (метод Девидона) ........................... |
218 |
||
3.4. Минимизация функций с ограничениями................................................ |
223 |
|||
|
3.4.1. |
Метод штрафных функций ........................................................... |
223 |
|
|
3.4.2. Метод Фиакко и Мак-Кормика (метод барьерных функций, |
|
||
|
|
метод внутренней точки)............................................................... |
226 |
|
|
3.4.3. |
Методы возможных направлений ................................................ |
226 |
|
|
3.4.4. |
Метод проекции градиента........................................................... |
231 |
|
|
3.4.5. Метод проекции градиента при линейных ограничениях.......... |
234 |
||
|
3.4.6. |
Метод условного градиента.......................................................... |
237 |
|
|
3.4.7. |
Метод линеаризации..................................................................... |
242 |
|
|
3.4.8. Другие методы минимизации функции с ограничениями.......... |
243 |
||
|
3.4.9. Способы определения начальной точки...................................... |
244 |
||
Глава 4. |
НЕЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ |
|
||
|
В ПРИКЛАДНЫХ ЗАДАЧАХ ОПТИМИЗАЦИИ.............................. |
246 |
||
4.1. |
Применение линейного программирования в теоретико-игровых |
|
||
|
методах исследования сложных систем................................................... |
246 |
||
|
4.1.1. Теоретические предпосылки решения матричных игр............... |
246 |
||
|
4.1.2. Основы метода фон Неймана........................................................ |
248 |
||
|
4.1.3. |
Алгоритм фон Неймана................................................................. |
250 |
|
|
4.1.4. |
Математическое программирование |
|
|
|
|
в теории биматричных игр............................................................ |
253 |
|
|
4.1.4.1. |
Биматричные игры. |
|
|
|
|
|
Основные теоретические сведения................................. |
253 |
|
4.1.4.2. |
Нахождение ситуации равновесия |
|
|
|
|
|
в биматричных играх......................................................... |
258 |
|
4.1.4.3. Метод Лемке – Хоусона. Теоретические основы............ |
267 |
||
|
4.1.4.4. |
Алгоритм Лемке – Хоусона решения |
|
|
|
|
|
биматричных игр............................................................... |
274 |
4.2. Оптимальное распределение нагрузки в системе ядерных реакторов... |
280 |
|||
|
4.2.1. Оптимальное распределение запасов реактивности |
|
||
|
|
в системе двух реакторов с линейной зависимостью |
|
|
|
|
возможной степени снижения мощности от запасов |
|
|
|
|
реактивности.................................................................................. |
280 |
|
|
4.2.2. Максимально возможный эффект оптимизации......................... |
288 |
||
4.3. Формирование банковского портфеля максимальной доходности........ |
290 |
|||
|
4.3.1. Основные характеристики ценных бумаг.................................... |
290 |
||
|
|
|
5 |
|
4.3.2. Постановка задачи формирования портфеля |
|
максимальной доходности при фиксированной величине |
|
риска................................................................................................ |
295 |
4.3.3. Решение задачи формирования оптимального портфеля |
|
с использованием множителей Лагранжа.................................... |
297 |
4.3.4. Пример задачи формирование оптимального портфеля............. |
302 |
4.4. Использование методов нелинейного программирования при оценке |
|
параметров формирующего фильтра........................................................ |
306 |
4.4.1. Основные свойства формирующих фильтров............................. |
306 |
4.4.2. Корреляционная функция формирующего фильтра |
|
второго порядка ............................................................................. |
311 |
4.4.3. Задача идентификации коэффициентов формирующего |
|
фильтра как задача нелинейного программирования................. |
313 |
4.4.3.1.Алгоритм решения задачи методом Ньютона – Гаусса..315
4.4.3.2.Алгоритм решения задачи
методом покоординатного спуска.................................... |
319 |
4.4.4. Пример расчета коэффициентов формирующего фильтра ........ |
321 |
4.5.Оптимизация режима работы ядерного реактора в переменном суточном графике нагрузки с учетом возможности
утилизации энергии ................................................................................... |
323 |
|
4.5.1. |
Постановка задачи. ........................................................................ |
324 |
4.5.2. |
Анализ оптимального решения........................................................... |
|
СПИСОК ЛИТЕРАТУРЫ....................................................................................... |
323 |
6
ПРЕДИСЛОВИЕ
Первооснову математического программирования составляют методы нахождения экстремума (максимума или минимума) функций, заданных на некоторой области изменения переменных. Задачи такого рода встречаются в самых разных областях человеческой деятельности: в экономике, технике, военном деле и т.д. Математическое программирование – один из разделов науки, имеющей название «исследование операций».
Задачи, которые решаются с помощью методов математического программирования возникают там, где необходим выбор одного из возможных образов действий (или программ действий). Именно отсюда название «программирование» – в смысле выбор программы действий. Название не имеет ни какого отношения к программированию в смысле написания программ для ЭВМ и возникло раньше, чем ЭВМ. Хотя, надо отметить, что все методы, в конечном счете, рассчитаны на использование ЭВМ. Первые задачи линейного программирования, являющегося основой математического программирования, были рассмотрены русским математиком Канторовичем ещё в 1939 г. (задача выбора наилучшей программы загрузки группы лущильных станков). Однако их практическое решение требовало большого объема вычислений. Создание высоко производительных ЭВМ послужило стимулом развития теории и практики как математического программирования, так и других разделов исследования операций. Суть у всех этих разделов одна – выбор наилучшей программы действий в задачах оптимизации с различными математическими моделями.
Так, в математическом программировании дается функция, которую нужно оптимизировать (т.е. найти экстремум), и ограничения на область изменения переменных; а в оптимальном управления задаётся оптимизируемый функционал и процесс, описываемый с помощью дифференциальных уравнений и т.д.
7
Математическое программирование – один из важнейших разделов, представляющих интерес для специалистов, занимающихся прикладной математикой, и изложено в той или иной мере в различных изданиях как в России, так и за рубежом, ряд из которых приведен в списке литературы.
Данная книга представляет собой результат многолетнего чтения курса «Математическое программирование» на кафедре «Математическое обеспечение систем» в Московском инженернофизическом институте и помимо теоретических соображений, охватывающих разделы линейного, целочисленного и нелинейного программирования, содержит многоплановые примеры решений задач, иллюстрирующих применение методов математического программирования на практике.
В книге рассматривается многообразие прикладных задач оптимизации, решение которых обеспечивается методами математического программирования, независимо от их физического содержания. Так, особенностью книги является единый подход к оптимизации игровых задач, задач распределения запасов реактивности в ядерных реакторах, а также задач, связанных с оптимальной кластеризацией и т.д.
Каждая глава книги содержит большое количество доведенных до конечного результата примеров.
Книга предназначена для специалистов по прикладной математике, а также может быть полезна студентам вузов соответствующих специальностей.
8
ОСНОВНЫЕ ОБОЗНАЧЕНИЯ И ПОНЯТИЯ
Приведем ряд общепринятых обозначений и понятий, используемых при рассмотрении материала последующих глав.
1. Пусть x и y – n -мерные векторы |
|
|
||
x |
|
y |
|
|
1 |
|
1 |
|
, |
x = M |
|
, y = M |
|
|
|
|
|
|
|
xn |
|
yn |
|
|
x т = (x1 , K, xn ) – транспонированный вектор,
|
|
|
|
n |
|
тогда < x, y >= x т y = ∑xi yi – скалярное произведение векторов x |
|||||
и y . |
|
|
|
i=1 |
|
|
|
|
|
|
|
|
|
a |
K a |
|
|
|
|
11 |
1n |
|
|
2. |
A = K K K |
– матрица размерности m ×n . |
|||
|
am1 |
K amn |
|
||
3. |
f (x) = f (x1 , K, x1n ) – функция n переменных. |
Функция f (x) имеет 1-ю и 2-ю непрерывные производные на множестве D в n-мерном пространстве R n .
Пусть некоторая точка x 0 D . Тогда f (x) может быть представлена в виде ряда Тейлора относительно этой точки:
f (x1 , K, xn ) = f (x10 |
n |
∂f |
(xi − xi0 ) + |
||||||||
, K, xn 0 ) + ∑ |
∂x |
||||||||||
|
|
|
|
|
|
|
i=1 |
x0 |
|||
|
n n |
∂ |
2 |
f |
|
|
|
||||
|
|
|
|
|
|
|
|
||||
+ |
1 ∑ ∑ |
|
|
(xi − xi0 )(x j − x0j ) + 0( |
x − x 0 |
2 ) . |
|||||
∂xi ∂x j |
|
||||||||||
|
2 i=1 j=1 |
x |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|||||
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
|
|
|
|
|
0 |
|
∂f |
|
∂f |
|
∂f |
т |
|
|||
4. f (x |
|
, |
, K, |
|
– градиент функции в точке |
|||||||
|
∂x |
∂x |
|
∂x |
|
|||||||
|
) = |
|
|
|
||||||||
|
|
|
1 |
|
|
2 |
|
|
n |
x |
||
|
|
|
|
|
|
|
|
|
|
|
0 |
x 0 D .
Градиент – вектор, который направлен в сторону наискорейшего
роста функции и ортогонален в точке нии) уровня f (x) = const (рис. В.1).
x2
x0 к поверхности (или ли-
линии
уровня
max
f(x)
x1
Рис. В.1. Линии уровня f (x) = const для функции двух переменных
|
|
∂2 f |
|
K |
∂2 |
f |
|
|
||||
|
|
∂x |
∂x |
|
∂x |
∂x |
n |
|
||||
|
|
|
|
|
||||||||
5. H (x 0 ) = |
|
|
1 |
1 |
|
|
|
1 |
|
|
– вещественная симметричная |
|
|
K |
|
K |
|
K |
|
||||||
|
|
∂2 f |
|
K |
∂2 |
f |
|
|
||||
|
∂x |
n |
∂x |
|
∂x |
n |
∂x |
n |
|
|||
|
|
|
|
|||||||||
|
|
|
1 |
|
|
|
|
|
|
матрица (матрица Гессе).
Важность градиента и матрицы Гессе определяется их использованием во многих алгоритмах поиска экстремума функций.
Можно записать
f (x) = f (x 0 )+ < f (x 0 ), (x − x 0 ) > + |
1 |
< (x − x 0 ), |
|
2 |
|||
|
|
H (x0 )(x − x0 ) > +0( x − x0 2 ) .
10