Метод-указ._Сантыловой_Л.И

advertisement
Федеральное агентство по образованию Российской Федерации
ГОУВПО «Ростовский государственный университет»
Л.И. Сантылова
ВАРИАЦИОННОЕ ИСЧИСЛЕНИЕ И МЕТОДЫ ОПТИМИЗАЦИИ
(методические указания для студентов специальности «Прикладная
математика и информатика»)
РУКОВОДСТВО ПО РЕШЕНИЮ ЗАДАЧ
Часть 1
Ростов-на-Дону 2006
Методические указания печатаются по решению кафедры исследования
операций механико-математического факультета РГУ: протокол № 2
от 19 сентября 2006г.
2
СОДЕРЖАНИЕ
Введение…………………………………………………………………..……............4
І. ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ ………………………..…………………4
Тема 1. Геометрическое решение задач линейного программирования………...5
Тема 2. Решение
задачи
линейного
программирования
симплекс-методом………………………………………………………….…..7
Тема 3. Метод искусственного базиса………………………………..…………..10
Тема 4. Теория двойственности в линейном программировании…..…………..12
ІІ. ВЫПУКЛОЕ ПРОГРАММИРОВАНИЕ…...…………………...............…….…17
Тема 5.Геометрическое решение задач нелинейного программирования…….17
Тема 6. Условия Куна-Таккера. Теоремы Куна-Таккера……….………………20
Тема 7. Метод возможных направлений……..…………………….……………23
ІІІ. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ………………………………...26
ЛИТЕРАТУРА.……………………………………………………………………….32
3
ВВЕДЕНИЕ
В связи с уменьшением количества аудиторных часов и увеличением
объема самостоятельной работы студентов
алгоритмический подход к
изложению материала представляется наиболее эффективным.
Данные
методические
указания
рекомендуется
использовать
на
семинарских занятиях по курсу «Математические методы исследования
операций». Студент, освоивший на занятиях принцип использования данного
методического материала, сможет достаточно легко перейти к применению
предлагаемой методики при самостоятельном решении задач.
І. ЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ
Теоретические предпосылки
Определение 1. Задача линейного программирования – это задача
оптимизации
линейной
функции
в
области,
задаваемой
линейными
ограничениями.
В общем виде задача линейного программирования выглядит следующим
образом:
f ( x)  (c, x)  max (min)
(A i , x )  b i , i  1, m1
(A i , x )  bi , i  m1  1, m 2
(1)
(A i , x )  bi , i  m 2  1, m
x j  0 , j  1, n1
x j   , j  n1  1, n
Определение 2. Оптимизируемая функция f(x) называется критерием,
функцией цели или целевой функцией задачи.
Определение
3.
Допустимым
решением
задачи
называется
точка
x  ( x1 , x 2 ,..., x n ) , удовлетворяющая всем ограничениям задачи. Допустимые
4
решения образуют область допустимых решений задачи (ОДР).
Определение 4. Оптимальным решением задачи называется допустимое
решение, доставляющее целевой функции наибольшее (наименьшее) значение.
Указанное в определении наибольшее (наименьшее) значение называется
оптимальным значением целевой функции.
Решить задачу линейного программирования означает следующее:
1) если задача разрешима, то необходимо найти среди допустимых решений
задачи оптимальные решения и вычислить оптимальное значение целевой
функции;
2)
если
задача
неразрешима,
то
требуется
установить
причину
неразрешимости задачи.
Тема 1. Геометрическое решение задач линейного программирования.
Теоретические напоминания
Геометрически рекомендуется решать задачу линейного программирования
с двумя переменными или задачу, сводимую к таковой эквивалентными
преобразованиями.
Определение 5.
Градиент функции – это вектор, координаты которого
равны частным производным первого порядка.

Градиент линейной функции f ( x1 , x 2 )  c1x1  c 2 x 2
равен вектору
коэффициентов функции c  (c1 , c 2 ) .

Градиент функции в точке определяет направление наискорейшего
возрастания функции в этой точке.

Геометрическим
местом
точек,
удовлетворяющих
линейному
точек,
удовлетворяющих
линейному
уравнению, является прямая.

Геометрическим
местом
неравенству, является полуплоскость.

Линии уровня – это прямые, перпендикулярные градиенту.
5
Алгоритм геометрического решения задачи линейного программирования
1) Строим на плоскости прямоугольную декартову систему координат.
2) Для
каждого
ограничения
находим
геометрическое
место
точек,
удовлетворяющее этому ограничению. Выделяем пересечение полученных
множеств. Получившееся в результате множество есть область допустимых
решений (ОДР).
Если ограничения противоречивы, то ОДР окажется пустым множеством.
Всегда в задаче линейного программирования ОДР будет выпуклым и
замкнутым множеством. В некоторых задачах ОДР будет ограниченным
множеством, а иногда не ограниченным.
3)
Если ОДР - пустое множество, то делаем вывод: задача не имеет решения
(неразрешимость 1), и алгоритм завершает работу.
4)
Находим градиент целевой функции – вектор, координаты которого равны
коэффициентам целевой функции.
5)
Рисуем найденный градиент в виде вектора, исходящего из начала
координат.
6)
Проводим прямую, перпендикулярную градиенту и разбивающую ОДР
на две части.
7)
Перемещаем прямую при максимизации в направлении градиента (при
минимизации в направлении, противоположном градиенту) до первого
положения, при котором ОДР будет располагаться по одну сторону от
прямой.
8)
Если при сколь угодно длительном перемещении такое положение не
достижимо, делаем вывод о неограниченности целевой функции в ОДР
сверху
при
максимизации
(снизу
при
минимизации)
(это
–
неразрешимость 2) , и алгоритм завершает работу.
9)
Если указанное в пункте 7 положение найдено, то в этом положении
находим точки, лежащие на пересечении прямой и ОДР. Они являются
6
оптимальными решениями задачи. Точное значение координат этих точек
определяем аналитически. Вычисляем оптимальное значение целевой
функции. Алгоритм завершает работу.
Выводы:
1. Оптимальных решений может не быть (возможна одна из двух
указанных в алгоритме причин).
2. Оптимальное решение может быть единственно.
3. Оптимальных решений может быть бесконечно много.
4. Оптимальные решения всегда располагаются на границе ОДР, и среди
них всегда есть хотя бы одна вершина ОДР.
Тема 2. Решение задачи линейного программирования симплексметодом
Таблица 1
Эквивалентные преобразования
Название преобразования
До
После преобразования
преобразования
Преобразование неравенства в
равенство
Преобразование неравенства в
равенство
Переход
n
 a i, j x j  b i
j1
j 1
n
n
 a i, j x j  b i
j 1
от
решения
задачи
минимизации к решению задачи
n
 a i, j x j  u i  b i , u i  0
n
 min
 c jx j 
j1
 a i, j x j  u i  b i , u i  0
j1
n
  c jx j 
 max
j1
макси- мизации
Переход
от
свободной x j  
переменной к пере- менным,
ограниченным по знаку
7
x j  x1j  x 2j , x1j  0, x 2j  0
Использование перечисленных преобразований (табл. 1) позволяет любую
задачу линейного программирования свести к следующему виду:
1) требуется максимизировать целевую функцию,
2) все ограничения, кроме ограничений на знак, имеют вид равенств,
3) все переменные предполагаются неотрицательными.
Математическая модель такой задачи выглядит следующим образом
f ( x)  (c, x)  max (min)
(A i , x)  bi , i  1, m
( 2)
x j  0 , j  1, n
Этот
вид
задачи
линейного
программирования
будем
называть
канонической формой.
Алгоритм 1 - построение начальной симплекс-таблицы
1) Используя преобразования таблицы 1, свести задачу к каноническому виду
(2).
2) Преобразовать все ограничения–равенства к виду, при котором правая часть
ограничения – неотрицательное число.
3) Выписать матрицу ограничений и проверить, есть ли в этой матрице набор
столбцов, образующих единичную матрицу.
4) Если такого набора нет, то перейти к пункту 7.
5) Набор есть. Разбейте переменные x j ( j  1, n )
на две группы: базисные
переменные и небазисные переменные. Базисные переменные – это те,
которые соответствуют столбцам, образующим единичную матрицу.
Остальные переменные – небазисные.
8
Полагая всякую небазисную переменную
правой части ограничения,
равной нулю, а базисную
в котором эта переменная присутствует,
получаем опорное решение.
6) Построить симплекс-таблицу, отвечающую
полученному опорному
решению. Базисные переменные записать в крайнем левом столбце, а
небазисные – в самой верхней строке. Завершить работу алгоритма 1.
7) Сделать вывод: для построения начальной симплекс-таблицы необходимо
применить метод искусственного базиса.
8) Завершить работу алгоритма 1.
Алгоритм
2
-
решение
симплекс-методом
задачи
линейного
программирования
Начальная симплекс-таблица построена.
1) Если
оценки
симплекс-таблицы
неотрицательны,
то
таблица
оптимальная, и соответствующее ей опорное решение оптимальное.
Полагая всякую небазисную переменную
равной нулю, а
базисную равной элементу из столбца свободных членов, получаем
оптимальное опорное решение.
Алгоритм завершает работу.
2) Если в таблице есть столбец с отрицательной оценкой, и все элементы в
нем не положительны, то оптимальное решение не существует, так как
целевая функция неограниченна сверху в ОДР (Неразрешимость 2).
Алгоритм завершает работу.
3) Если в таблице есть столбец с отрицательной оценкой, и в нем есть
положительные элементы, то среди этих элементов выбираем
главный. Для этого находим для каждого такого элемента частное от
9
деления правой части ограничения на этот элемент. Полученные
частные сравним для того, чтобы главным элементом выбрать тот,
которому соответствует наименьшее частное. Главный элемент
определяет главную строку и главный столбец, так как он стоит на их
пересечении.
4) Выполним
жордановы
преобразования
симплекс-таблицы
относительно выбранного главного элемента и перейдем к пункту 1.
Жордановы
преобразования
выбранного главного элемента
симплекс-таблицы
относительно
1) Поменять местами переменные, стоящие в главной строке и главном
столбце.
2) Главный элемент заменить ему обратным.
3) Все остальные элементы главной строки разделить на главный элемент.
4) Все остальные элементы главного столбца разделить на главный элемент и
поменять у них знаки на противоположные.
5) Все оставшиеся элементы пересчитать по правилу, сходному с правилом
вычисления определителя второго порядка (в качестве главной диагонали
нужно брать ту, на которой стоит главный элемент),
и разделить на
главный элемент.
Замечание. Во всех перечисленных действиях используйте числа из
старой таблицы, а результаты вычислений записывайте в новую таблицу.
Тема 3. Метод искусственного базиса
Алгоритм 3 - построение начальной симплекс-таблицы с помощью
метода искусственного базиса.
1) Используя
эквивалентные преобразования, преобразовать задачу к
каноническому виду (I).
2) Преобразовать все ограничения–равенства к виду, когда правая часть –
неотрицательное число.
10
3) Построить
вспомогательную
задачу.
Для
этого
из
исходной
преобразованной задачи возьмем только ограничения. Прибавим по
необходимости к левым частям ограничений
Wi ( Wi  0) ,
диктуется
которые
желанием
назовем
иметь
в
новые переменные
искусственными.
матрице
Необходимость
ограничений
столбцы,
образующие единичную матрицу. В качестве целевой функции
вспомогательной задачи возьмем сумму искусственных переменных со
знаком
минус.
Эту
целевую
функцию
всегда
требуется
максимизировать.
4) Используя
алгоритм
1
построения
начальной
симплекс-таблицы,
построить для вспомогательной задачи начальную симплекс-таблицу.
5) Используя
алгоритм
2
решения
симплекс-методом,
решить
вспомогательную задачу.
6) Если оптимальное значение целевой функции вспомогательной задачи
окажется отрицательным числом, то сделать вывод: исходная задача не
имеет допустимых решений (неразрешимость 1). Завершить работу
алгоритма 3.
7) Если оптимальное значение целевой функции вспомогательной задачи
равно нулю, то использовать полученную оптимальную таблицу
вспомогательной задачи для построения начальной таблицы для
исходной задачи. Для этого в имеющейся таблице нужно вычеркнуть
столбцы с искусственными небазисными переменными и пересчитать
заново оценки, используя целевую функцию исходной задачи.
8) Сделать вывод: построена начальная симплекс-таблица для исходной
задачи. Завершить работу алгоритма 3.
Алгоритм
4
-
решение
произвольной
задачи
линейного
программирования симплекс-методом
1) Применить алгоритм 1 для построения начальной симплекс-таблицы.
11
2) Если будет получен вывод: необходимо применение метода
искусственного базиса, то перейти на пункт 5.
3) Реализовать алгоритм 2.
4) Завершить работу алгоритма 4.
5) Применить алгоритм 3 построения начальной симплекс-таблицы
методом искусственного базиса.
6) Если будет выявлена в алгоритме 3 неразрешимость 1, то перейти на
пункт 4, иначе на пункт 3.
Тема 4. Теория двойственности в линейном программировании
Определение 6.
Парой симметричных двойственных задач называются
задачи
f ( x )  (c, x )  max
Ax  b
(A)
g ( y)  (b, y)  min
y0
x0
(B)
AT y  c
Задачи (А), (В) являются взаимно двойственными задачами.
Для построения двойственной задачи рекомендуется выполнить действия:
1)
Если в исходной задаче требуется максимизировать целевую функцию, то
все ограничения-неравенства преобразовать к виду «  ».
2)
Если в исходной задаче требуется минимизировать целевую функцию, то
все ограничения-неравенства преобразовать к виду «  ».
3)
Построить двойственную задачу, воспользовавшись таблицей 2.
При этом если исходная задача
- это задача (А), то двойственной к ней
является задача (В), и наоборот.
12
Таблица 2
Общая схема построения двойственной задачи
Переменные,
Переменные,
Задача (А)
соответствусоответствующие
ющие
ограничениям
ограничениям
задачи (А)
задачи (В)
f ( x)  (c, x)  max
Задача (В)
g( y)  (b, y)  min
(A i , x )  b i , i  1, m1
y i , i  1, m1
y i  0 , i  1, m1
(A i , x )  b i , i  m1  1, m
y i , i  m1  1, m
yi   ,
i  m1  1, m
x j  0 , j  1, n1
x j , j  1, n1
(A j , y)  c j , j  1, n1
x j   , j  n1  1, n
x j , j  n1  1, n
( A j , y )  c j , j  n1 , n
Таблица 3
Пример построения двойственной задачи
Переменные,
Переменные,
Задача (А)
соответствующие соответствующие
Задача (В)
ограничениям
ограничениям
задачи (А)
задачи (В)
g( y1 , y 2 , y 3 ) 
f ( x1 , x 2 ) 
 x1  3x 2  max
 6 y1  3y 2  8y 3  min
5x1  4x 2  6
y1
y1  0
2x1  x 2  3
y2
y2  0
 7 x1  3x 2  8
y3
y3  
x1  0
x1
5 y1  2 y 2  7 y 3  1
x2  
x2
 4 y1  y 2  3y 3  3
1-я
теорема
двойственности.
Двойственные
13
задачи
одновременно
разрешимы или неразрешимы. В случае разрешимости оптимальные значения
целевых функций этих задач равны.
2-я теорема двойственности. Допустимые решения двойственных задач
являются оптимальными решениями этих задач тогда и только тогда, когда они
удовлетворяют условиям дополняющей нежесткости (табл.4): (x,v)+(y,u)=0.
Таблица 4
Условия дополняющей нежесткости
Задача вида А Каноническая Задача вида В Каноническая Условия
форма задачи
форма задачи дополняющей
А
B
нежесткости
f=(c,x)max
f=(c,x)max
g=(b,y) min
g=(b,y) min
Axb
u0
y0
y0
(u,y)=0
x0
x0
yAc
v0
(x,v)=0
Ax+u=b
yA-v=c
Вторую теорему двойственности можно использовать для того, чтобы
проверить, является ли заданное допустимое решение исходной задачи
оптимальным решением или нет.
Предположим, что исходной является задача (А), и задано допустимое
решение этой задачи x 0 .
Подставим последовательно во все ограничения-неравенства задачи (А)
заданную точку x 0 . Полученный вариант результата подстановки точки x 0 в
ограничение задачи (А) найдем в первом столбце
таблицы 5. После этого в
столбце 2 той же таблицы выберем соответствующий найденному результату
вывод.
К полученным в результате сделанного вывода условиям
необходимо
добавить имеющиеся в задаче (В) ограничения-равенства, так как точка y 0 ,
14
будучи допустимой, должна им удовлетворять. Точка x 0 является оптимальным
решением задачи (А) тогда и только тогда, когда полученная при этом система
имеет решение.
Утверждение 1. Если полученная система имеет решение, то все точки y 0 ,
являющиеся решением этой системы, и только они, будут оптимальными
решениями задачи В.
Таблица 5
Схема вывода условий дополняющей нежесткости при проверке на
оптимальность точки x 0 в задаче максимизации
Условия дополняющей
нежесткости
Варианты результата подстановки
Вывод о результате подстановки
известной точки x 0 в исходную задачу,
искомой точки y 0 в двойственную
имеющую вид A
задачу вида B.
1
2
f (x 0 )  (c, x 0 )
g( y 0 )  (b, y 0 ) = f ( x 0 )
u i0  bi  (Ai , x 0 )  0 , i  1, m1
y0i  0 , i  1, m1
u i0  bi  (Ai , x 0 )  0, i  1, m1
y 0i  0 ,
x 0 j  0 , j  1, n1
v 0j  (A j , y 0 )  c j  0 , j  1, n1
x 0 j  0 , j  1, n1
v 0j  (A j , y 0 )  c j  , j  1, n1
i  1, m1
Если исходной является задача типа (В) и задано допустимое решение этой
0
0
задачи y , то нужно подставить точку y последовательно во все ограничениянеравенства задачи (В). Для каждого ограничения получим один из возможных
результатов подстановки (см. в столбце 1 таблицы 6). Далее выберем в столбце
2 таблицы 6 соответствующий полученному варианту результата вывод о
15
результате подстановки неизвестной точки x
0
в соответствующее ограничение
задачи (А).
Таблица 6
Схема вывода условий дополняющей нежесткости при проверке на
0
оптимальность точки y в задаче минимизации
Варианты результата подстановки
Вывод о результате подстановки
0
0
известной точки y в исходную задачу.
искомой точки x в двойственную
Исходная задача имеет вид B.
задачу, которая имеет вид A.
g(y0 )  (b, y0 )
f (x 0 )  (c, x 0 ) = g( y )
y i0  0 , i  1, m1
u i0  bi  (Ai , x 0 )  0, i  1, m1
y i0  0 , i  1, m1
u i0  bi  (Ai , x 0 )  0, i  1, m1
v 0j  ( y 0 , A j )  c j  0 , j  1, n1
x 0j  0 , i  1, n1
v 0j  ( y 0 , A j , )  c j  0 , i  1, n1
x 0j  0 , i  1, n1
0
К полученным в результате сделанного вывода условиям (табл. 6)
необходимо добавить имеющиеся в задаче типа A ограничения-равенства, так
как искомая точка x 0 должна им удовлетворять. Если полученная при этом
0
система имеет решение, то точка y является оптимальным решением исходной
0
задачи вида B. В противном случае точка y не является оптимальным решением
исходной задачи.
0
Утверждение 2. Если полученная система разрешима, то все точки x ,
16
являющиеся решением системы, и только они будут оптимальными решениями
двойственной задачи.
Замечание. Если полученная система не имеет решения, то это еще не
означает, что двойственные задачи не разрешимы.
ІІ. ВЫПУКЛОЕ ПРОГРАММИРОВАНИЕ
Задача нелинейного программирования имеет следующий вид
f ( x )  min(max)
g i ( x )  0, i  1, m1 ,
g i ( x )  0, i  m1  1, m 2 ,
g i ( x )  0, i  m 2  1, m,
x j  0,
j  1, n1 , n1  n ,
x  En ,
Среди функций f ( x ), g i ( x ) есть нелинейные функции.
Тема
5.
Геометрическое
решение
задач
нелинейного
программирования
Теоретические напоминания
1) Уравнение ( x  x 0 ) 2  ( y  y 0 ) 2  R 2 определяет окружность с центром
в точке ( x 0 , y 0 ) , радиус которой равен R .
2)Уравнение
(x  x 0 ) 2
a2

(y  y0 ) 2
b2
1
определяет эллипс с центром в
точке ( x 0 , y 0 ) , у которого полуоси параллельны осям координат и равны
a и b.
3) Уравнение
y  y 0  a (x  x 0 ) 2 определяет параболу, вершина которой
находится в точке ( x 0 , y 0 ) . Эта парабола симметрична относительно
прямой
y  y0 .
Направление
ветвей
коэффициента a.
17
параболы
зависит
от
знака
4) Уравнение
x  x 0  a( y  y 0 ) 2 определяет параболу, вершина которой
находится в точке ( x 0 , y 0 ) . Эта парабола симметрична относительно
прямой x  x 0 .
Направление ветвей параболы зависит от знака коэффициента a.
5) Уравнение
(x  x 0 ) 2
a2

(y  y0 ) 2
b2
 1 определяет гиперболу.
6) Уравнение ax 2  bx  c  0 определяет:
а) две параллельные прямые x  x 1 ,
x  x 2 , если дискриминант
уравнения больше нуля и x 1 , x 2 - корни уравнения.
б) одну прямую x  x 1 , если дискриминант уравнения равен нулю и
корни x 1  x 2 .
Указанные прямые параллельны оси ОУ.
6) Уравнение ay 2  by  c  0 определяет:
а) две параллельные прямые y  y1 ,
y  y 2 , если дискриминант
уравнения больше нуля и y1 , y 2 - корни уравнения.
б) одну прямую y  y1 , если дискриминант уравнения равен нулю и
корни y1  y 2 .
Указанные прямые параллельны оси ОХ.
7) При графическом решении нелинейных задач для определения вида
кривой и ее графического изображения рекомендуется
в заданном
уравнении выделить полные квадраты и тем самым преобразовать
уравнение к каноническому виду.
Пример выделения полного квадрата:
b
b
b 2
b 2
b 2
b2
2
ax  bx  c  a ( x  x )  c  a ( x  2 x  ( )  ( ) )  c  a ( x  )  c 
a
2a
2a
2a
2a
4a
2
2
18
Алгоритм
геометрического
решения
задачи
нелинейного
программирования (нахождение глобального оптимума)
1) Строим на плоскости прямоугольную декартову систему координат.
2) Для
каждого
ограничения
находим
геометрическое
место
точек,
удовлетворяющих этому ограничению. Выделим пересечение полученных
множеств. Получившееся в результате множество есть область допустимых
решений (ОДР).
3) Если ограничения противоречивы, то ОДР окажется пустым множеством.
4) Если ОДР - пустое множество, то делаем вывод: задача не имеет решения
(неразрешимость 1), и алгоритм завершает работу.
5) Целевую функцию приравняем к произвольной константе C. Получим
уравнение, определяющее однопараметрическое семейство кривых. Эти
кривые называются линиями уровня.
6) Изобразим 2-3 кривых из этого семейства. Выберем из них одну кривую и
зафиксируем на ней некоторую точку.
7) Находим градиент целевой функции в точке, выбранной в пункте 6.
Градиент – это вектор, координаты которого равны частным производным
первого порядка целевой функции. Градиент нелинейной функции зависит
от точки.
8) Рисуем найденный градиент в виде вектора, исходящего из точки,
выбранной в пункте 6.
9) Мысленно перемещаемся по линиям уровня при максимизации в
направлении
градиента
(при
минимизации
в
направлении,
противоположном градиенту) до линии уровня, по отношению к которой
ОДР располагается по одну сторону.
10) Если при сколь угодно длительном перемещении такое положение не
достижимо, делаем вывод о неограниченности целевой функции в ОДР
сверху
при
максимизации
(снизу
19
при
минимизации)
(это
–
неразрешимость 2), и алгоритм завершает работу.
11) Если указанное в пункте 9 положение найдено, то в этом положении
находим точки, которые лежат на пересечении линии уровня и ОДР. Они
являются оптимальными решениями задачи. Точное значение координат
этих точек определим аналитически. Вычислим оптимальное значение
целевой функции. Алгоритм завершает работу.
Выводы:
1. Оптимальных решений может не быть (возможна одна из двух причин).
2. Оптимальных решений может быть любое количество.
3. Если целевая функция f ( x ) нелинейная, то оптимальные решения могут
располагаться как на границе ОДР, так и внутри ОДР.
Тема 6. Условия Куна-Таккера. Теоремы Куна-Таккера.
Теоретические предпосылки
Определение 7. Задачей выпуклого программирования называется задача
минимизации выпуклой функции на выпуклом множестве, а также любая задача,
сводимая к таковой эквивалентными преобразованиями.
Рассмотрим задачу выпуклого программирования в форме
f ( x )  min
g i ( x )  0, i  1, m
(4)
x0
x  En
Считаем, что все функции g i ( x ) и
f ( x ) выпуклые в первом ортанте.
Определение 8. Функцией Лагранжа задачи (4) называется функция
m
L( x , y)  f ( x )   y i g i ( x )
(5)
i 1
Переменные y i называются множителями Лагранжа.
20
Определение 9. Седловой точкой функции Лагранжа (5) называется точка
(x*, y*) , где x*  0, y*  0 , если в этой точке выполняются неравенства
L(x*, y)  L(x*, y*)  L(x, y*)
Теорема 1.
для всех x  0, y  0.
Пусть функции, входящие в задачу (4),
непрерывно дифференцируемые. Точка
(6)
выпуклые и
(x*, y*) , где x*  0, y*  0 , является
седловой точкой функции Лагранжа тогда и только тогда, когда в этой точке
выполняются условия Куна-Таккера:
 x L( x*, y*)  0,
x*  0,
 y L( x*, y*)  0,
y*  0,
( x*,  x L( x*, y*))  0,
(7)
( y*,  y L( x*, y*))  0.
Формулы (7) определяют вид условий Куна-Таккера для задачи (4).
В таблице 7 приведены условия Куна-Таккера для общей задачи выпуклого
программирования:
f ( x )  min
g i ( x )  0, i  1, m1 ,
(8)
g i ( x )  0, i  m1  1, m,
x j  0 , j  1, n1, где n1  n.
Таблица 7
Условия Куна-Таккера к задаче (8)
Ограничение
Соответствующие ограничению условия Куназадачи
Таккера в точке (x*, y*)
g i (x)  0
L( x*, y*)
L( x*, y*) *
i  1, m1
y *i  0 ,
 0,
yi  0
y i
y i
g i (x)  0
i  m1  1, m y* - любое, L( x*, y*)  0
i
y i
xj 0
L( x*, y*)
L( x*, y*) *
j  1, n1
x *j  0 ,
0,
xj 0
x j
x j
x j - любое
j  n1  1, n
x *j - любое,
21
L( x*, y*)
0
x j
Первая теорема Куна-Таккера.
Если точка (x*, y*) - седловая точка
функции Лагранжа, то x * - оптимальное решение задачи.
Нелинейное ограничение задачи g i ( x )  0 называется
Определение 10.
регулярным, если существует допустимое решение x 0 , при котором g i ( x 0 )  0 .
Если в задаче все нелинейные ограничения регулярные, то и задача
называется регулярной.
Существование в области допустимых решений задачи строго внутренней
точки означает регулярность задачи.
Вторая теорема Куна-Таккера.
Для любого оптимального решения
регулярной задачи выпуклого программирования
x * существует вектор
множителей Лагранжа y * такой, что (x*, y*) - седловая точка функции Лагранжа.
В
точке (x*, y*)
выполняются
↓
В точке (x*, y*) не выполняются
условия Куна-Таккера при любом
y *.
↓
По теореме 1 (x*, y*) - седловая
По теореме 1 при любом y * пара
точка функции Лагранжа.
(x*, y*)
условия Куна-Таккера.
-
не
седловая
точка
функции Лагранжа.
↓
↓
По первой теореме Куна-Таккера
По второй теореме Куна-Таккера
x * - не является оптимальным
решением задачи
x * - оптимальное решение
Рис. 1. Схема использования теорем при проверке на оптимальность точки x *
22
Алгоритм проверки точки x *
на
оптимальность для задачи
выпуклого программирования
1) Преобразовать данную задачу к виду (8). Это означает, что нужно
избавиться от ограничений g i ( x )  0 и x j  0 , если такие ограничения в
задаче присутствуют. Для этого достаточно умножить соответствующие
ограничения на -1. Если в задаче требуется максимизировать функцию
f ( x ) , то перейти к эквивалентной задаче минимизации.
2) Доказать, что все функции, входящие в задачу, являются выпуклыми.
3) Выяснить, является ли задача регулярной относительно нелинейных
ограничений.
4) Выписать условия Куна-Таккера в заданной точке x * и искомой точке
y * , используя таблицу (6). Получим систему уравнений и неравенств,
относительно y * .
5) Если полученная система имеет решение y * , то пара (x*, y*) - седловая
точка, а x * - оптимальное решение.
6) Если полученная система не имеет решения, то не существует y * такого, что (x*, y*) - седловая точка функции Лагранжа. А это означает,
что x * - не оптимальное решение.
7) Алгоритм завершает работу.
Тема 7. Метод возможных направлений
Рассмотрим задачу выпуклого программирования в форме
f ( x )  min
g i ( x )  0, i  1, m
(9)
x  En
Обратите внимание: ограничения на знак переменных в постановке задачи
23
не выделены в отдельные ограничения, и поэтому они могут быть в задаче (тогда
они
рассматриваются
наравне
с
остальными
ограничениями),
а
могут
отсутствовать.
Общая схема метода возможных направлений
1) Преобразовать задачу к виду (9), выписав все функции
f ( x ) и g i ( x ), i  1, m .
2) Проверить выпуклость всех функций. Доказать регулярность каждого из
нелинейных ограничений.
3) Выбрать произвольно точку
x 0 , удовлетворяющую ограничениям
задачи.
4) Положить k=0.
5) Построить в точке x k конус возможных направлений спуска  ( x k ) .
6) Если конус  ( x k ) - пустое множество, то делаем вывод о том, что точка
x k является оптимальным решением задачи (9), и алгоритм завершает
работу.
7) Выбрать в точке x k
из конуса возможных направлений спуска
направление S k .
8) Выбрать в точке x k при выбранном направлении длину шага  k .
9) Перейти в новую точку x k 1  x k   k Sk .
10)
Присвоить k=k+1. Перейти к пункту 5.
Построение конуса возможных направлений спуска в точке x k .
1) Найти номера тех ограничений, которые в точке
строгие равенства:
I( x k )  {i : i  1, m, g i ( x k )  0} .
24
x k выполняются как
Это множество номеров можно разделить на два непересекающихся
подмножества:
I л ( x k )  {i : i  1, m, g i ( x k )  0 и g i -линейная функция} и
I н ( x k )  {i : i  1, m, g i ( x k )  0 и g i -нелинейная функция}.
В построении конуса будут участвовать только ограничения с этими
номерами.
2) Конус возможных направлений спуска задается системой неравенств
(g i ( x k ), S)  0, если i  I н ( x k ),

 ( x k ) : (g i ( x k ), S) , если i  I л ( x k ),

k
(f ( x ), S)  0.
Выписать систему неравенств, задающую конус в точке
xk .
Выбор направления из конуса возможных направлений спуска
1)
Если антиградиент целевой функции принадлежит полученному конусу,
то полагаем Sk  f ( x k ) .
2)
Если
в конусе существует направление, ближайшее к антиградиенту
целевой функции, то выбираем его.
3)
Выбираем произвольно направление из конуса.
Выбор длины шага
Длину шага выбираем после выбора направления путем решения задачи
f ( x k  Sk )  min
(10)
g i ( x  S )  0, i  1, m
k
k
  0.
В задаче (10) минимизация проводится по переменной α .
25
ІІІ. ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
Динамическое программирование – метод многоэтапной оптимизации
аддитивного критерия.
Рассмотрим операцию (управляемый процесс), состоящую из отдельных
шагов (этапов). Если критерий эффективности всей операции складывается из
показателей эффективности на отдельных шагах, то его называют аддитивным
критерием.
Рассмотрим примеры многоэтапных операций с аддитивным критерием.
Пример 1. Задача распределения ресурса.
Планируется деятельность двух предприятий на период длиной n лет.
В начале периода на развитие предприятий выделена некоторая сумма, которая
делится между этими предприятиями. За год вложенные средства частично
амортизируются,
перераспределены.
а
частично
В
начале
сохраняются
каждого
перераспределяются между предприятиями.
года
и
снова
могут
имеющиеся
быть
средства
Каждое предприятие за год
приносит доход, который зависит от вложенных в него средств. Сколько
средств нужно вложить в начале каждого года в каждое предприятие, чтобы
суммарный доход за
n лет
был максимальным?
Рассматриваемый в задаче процесс многоэтапный, развивается во времени,
этапы соответствуют годам.
Суммарный доход равен сумме доходов, полученных на отдельных этапах,
и, следовательно, функция, определяющая общий доход, является аддитивной.
Пример 2. Задача о ранце.
Имеется определенный набор предметов из конечного числа видов.
Известны
объемы и стоимости предметов каждого вида.
Объем ранца
ограничен и известен. Сколько предметов каждого вида нужно положить в
ранец (при суммарном объеме, не превосходящем объем ранца), чтобы их
26
суммарная стоимость была максимальна?
Рассматриваемую в этой задаче операцию можно считать многоэтапной.
Этап свяжем с укладкой в ранец предметов отдельного вида. Тогда на этапе k
будет решаться вопрос о том, сколько предметов k-го вида нужно положить в
ранец, если какая-то часть его объема уже занята предметами 1-го, 2-го, . . ., (k-1)го видов. В этой задаче переход от этапа к этапу соответствует движению по
списку предметов.
При этом суммарная стоимость взятых предметов складывается из
стоимостей предметов отдельных видов, то есть и в этой задаче критерий
обладает свойством аддитивности.
Пример 3. Задача о прокладке наивыгоднейшего пути между двумя
пунктами.
Требуется так провести дорогу из пункта А в пункт В, чтобы суммарные
затраты на сооружение участка были минимальными.
Эту задачу можно свести к многошаговому процессу. Для этого достаточно
отрезок АВ разделить на
n
частей, через точки деления провести прямые,
перпендикулярные АВ. Если провести прямые близко друг к другу, то отрезки
пути, их соединяющие, можно считать прямолинейными. Тогда этап (шаг) можно
связать с выбором направления для перехода с одной прямой на другую.
Затраты на сооружение всего пути складываются из затрат на сооружение
отдельных участков, соединяющих соседние прямые.
В этой задаче критерий (затраты) аддитивный. Переход от одного этапа к
другому сводится к движению в пространстве.
При использовании метода динамического программирования необходимо
следовать определенным принципам.
Принципы динамического программирования.
1)
Зависимость от параметров оптимального значения критерия
исходной задачи. Оптимальное
значение
27
критерия
исходной
задачи рассматривают как функцию номера этапа и одного или нескольких
параметров, которые называют параметрами состояния.
2)
Принцип вложения. Задачи, решаемые на каждом из этапов для
всевозможных значений параметров состояния, образуют параметрическое
семейство задач. При этом исходная задача является одной из задач этого
семейства.
3)
Наличие рекуррентных уравнений, устанавливающих связь
между задачами соседних этапов. Выводятся рекуррентные уравнения
динамического
программирования,
устанавливающие
связь
между
оптимальными значениями целевых функций задач соседних этапов.
4)
Принцип оптимальности.
Первая формулировка принципа оптимальности: для получения
оптимального решения многоэтапного процесса решение, принимаемое на
отдельном этапе, должно быть оптимальным относительно состояния, в
котором система оказалась к началу данного этапа, и не должно зависеть
от решений на предыдущих этапах, которые привели систему в данное
состояние.
Вторая формулировка принципа оптимальности: для аддитивного
функционала любой участок оптимальной траектории оптимален.
Это свойство означает, что принимаемое на каждом этапе решение не
зависит от предыстории процесса, то есть процесс является марковским.
Решение задачи о ранце методом динамического программирования
Постановка задачи
Необходимо ранец объема А уложить предметами вида j ( j  1, n ), исходя
из максимизации ценности ранца. Известен объем предмета j-го вида:
Ценность предметов вида j, взятых в количестве
функции fj
.
хj, определяется значением
(хj). Предметы не могут быть разделены на части.
28
aj
Математическая модель задачи о ранце
n
f ( x )   f j ( x j )  max
j 1
n
 a jx j  A
(11)
j 1
x j  0, x j  целое.
Так как данная задача является задачей целочисленного программирования,
то можно предположить, что все параметры задачи тоже принимают целые
значения.
Реализация принципов динамического программирования
1) Рассмотрим задачу оптимальной укладки ранца как многоэтапный
процесс. Свяжем с этапом k задачу укладки ранца предметами k-го вида. К
моменту наступления k-го этапа
предполагаются пройденными k-1
предшествующие этапы. Так как неизвестно, какую часть ранца при
оптимальном решении будут занимать предметы 1,2,…, k-го видов, то на k-м
этапе решаем задачу оптимальной укладки любой возможной части объема,
задаваемой
параметром
зависящих от параметра
а=0,1,2,…,А.
При этом решаем семейство задач,
а=0,1,2,…,А:
k
f ( x )   f j ( x j )  max
j1
k
 a jx j  a ,
(12)
j 1
x j  0, x j  целое.
Обозначим оптимальное значение критерия задачи (12) Fk (a ) .
Fk (a ) определяет максимальную ценность той части ранца объема
которая уложена предметами 1,2,…, k-го видов.
29
а,
2) Очевидно, что исходная задача входит в семейство задач (12) при k=n,
a=A, и оптимальное значение целевой функции исходной задачи в принятых
обозначениях равно Fn ( A ) .
При
3)
использовании
метода
динамического
программирования
необходимо выразить Fk (a ) через вычисленное на предыдущем этапе значение
Fk 1 (a ) . Для этого выведем рекуррентное уравнение:
 f j (x j )  max [f k (x k ) 
k
 a j x j  a j1
a k x k a
j1
=
k 1
k
Fk (a )  max
k 1
 f j ( x j )] =
max
 a j x j  a  a k x k j1
j1
max [f k (x k )  Fk 1 (a  a k x k )] .
a k x k a
Рекуррентные уравнения динамического программирования в задаче о
ранце имеют вид:
Fk (a ) = max [f k (x k )  Fk 1 (a  a k x k )] для k=2…n ,
(13)
a k x k a
F1 (a ) = max f1 (x1 ) .
a 1 x1  a
Во всех формулах (13) предполагается, что x j  0, x j  целое.
4) На k-м этапе, применяя (13), можно для всевозможных значений
найти Fk (a ) , выбирая при этом лишь управляющее решение
a
x k = x k (a ) и
используя найденные на предыдущем этапе значения Fk 1 (a ) . Таким образом,
принимаемое на k-м этапе решение x k (a ) зависит только от параметра
состояния
a
и не зависит от решений x1 , x 2 ,..., x k 1 , принимаемых на
предыдущих этапах. Этим самым реализуется принцип оптимальности.
Описание вычислительной процедуры.
Номер k определяет номер этапа, параметр
30
а
– состояние системы.
Используя (13), для каждого k=1,…,n найдем значения Fk (a ) и x k (a ) для
а=0,1,…,А.
При этом x k (a ) есть значение x k , на котором достигается максимум в
рекуррентном соотношении (13). Результаты вычислений заносим в таблицу 8.
Выделенные клетки таблицы заполняются числовыми значениями указанных в
них
выражений.
Заполнение
таблицы
8
называют
прямым
ходом
динамического программирования.
Таблица 8
Результаты вычислений при прямом ходе метода ДП
А
…
F1 (a )
x 1 (a )
F2 (a )
x 2 (a )
Fn (a )
x n (a )
0
F1 (0)
x1 (0)
F2 (0)
x 2 ( 0)
…
Fn (0)
x n ( 0)
1
F1 (1)
x1 (1)
F2 (1)
x 2 (1)
…
Fn (1)
x n (1)
…
…
…
…
…
…
…
…
A
F1 ( A )
x1 ( A )
F2 (A)
x 2 (A)
…
Fn ( A )
x n (A)
Обратный ход позволяет по значениям таблицы 8 найти решение
исходной задачи.
Действительно, оптимальное значение целевой функции исходной
задачи f *  Fn (A) .
Найдем оптимальное решение:
1) a  A, x*n  x n (a )
2) a  a  a n x n , x*n 1  x n 1 (a )
……………………………………..
n) a  a  a 2 x 2 , x1*  x1 (a )
31
Литература
1. Вентцель Е.С. Исследование операций. Задачи, принципы, методология.М.: Высш. шк.,2001.
2. Таха Х. Введение в исследование операций. -Минск:Вильямс,2001.
3. Вагнер Г. Основы исследования операций. Т.1-3- М.:Мир,1973.
4. Афанасьев М.Ю., Суворов Б.П. Исследование операций в экономике:
модели, задачи, решения: Учеб. Пособие. – М.: ИНФА-М, 2003
5. Волков И.К. и др. Введение в исследование операций.-М.:Изд-во МГТУ им.
Баумана, 2000.
6. Моисеев и др. Методы оптимизации. М. Физматгис, 1978.
7. Реклейтис Г. и др. Оптимизация в технике. М. Мир, 1986.
32
Download