
- •Предисловие
- •Введение
- •Глава 1. Линейное программирование
- •1.1. Постановка задач линейного программирования
- •1.2. Графический метод решения задач линейного программирования
- •1.3. Графический анализ на чувствительность
- •1.4. Симплекс-метод
- •1.5. Двойственность в задачах линейного программирования
- •Правила построения двойственной задачи
- •Пример 1
- •В матричном виде
- •1.6. Задачи для самостоятельно решения
- •Глава 2. Транспортная задача
- •2.1. Постановка транспортной задачи
- •2.2. Нахождение начального допустимого плана
- •2.3. Метод потенциалов для сбалансированной задачи
- •2.5. Вырожденный план
- •2.4. Задачи для самостоятельного решения
- •Глава 3. Целочисленное программирование
- •Задача о назначении
- •Задача коммивояжера
- •Задачи для самостоятельного решения
- •Глава 4. Нелинейное программирование
- •Основные понятия
- •Постановки задачи нелинейного программирования
- •Задача выпуклого программирования
- •Метод кусочно-линейной аппроксимации
- •Глава 5. Принятие решений в условиях неполной информации
- •5.1. Принятие решений в условиях стохастической неопределенности
- •5.2. Принятие решений в условиях риска
- •5.3. Метод дерева решений
- •Список литературы
- •Оглавление
Задача выпуклого программирования
Если в задаче математического программирования требуется найти экстремум функции, например:
(4.7)
на множестве допустимых решений, заданных ограничениями
,
(4.8)
причем:
1)
целевая функция
является дифференцируемой и вогнутой,
т.е. для нее выполняется условие:
при
любых
,
2)
а левые части всех ограничений
— дифференцируемыми и выпуклыми
функциями, т.е. для них выполняются
условия:
при
любых
,
Тогда задача (4.7)(4.8) называется задачей выпуклого программирования.
Любая линейная функция одновременно удовлетворяет условиям и выпуклости, и вогнутости; т.е. её можно считать как выпуклой, так и вогнутой. Это позволяет считать линейные задачи частным случаем задач выпуклого программирования.
Если для задач математического программирования в общем случае пока отсутствует стройная теория существования и устойчивости решения, то для задач выпуклого программирования такая теория есть.
Введём три определения:
1). Функцией Лагранжа задачи выпуклого программирования (4.7)(4.8) называется функция:
,
, (4.9)
2).
Говорят, что задача выпуклого
программирования (4.7)(4.8)
удовлетворяет условию
регулярности,
если существует хотя бы одна внутренняя
точка множества допустимых решений
,
определяемого строгими неравенствами,
полученными из (4.8) (т.е.
).
3).
Точка
называетсяседловой
точкой функции
,
если для всех
выполнено:
(4.10)
Если целевая функция (убрать)
В теории нелинейного программирования центральное место занимает теорема КунаТаккера, обобщающая классический метод множителей Лагранжа на случай, когда ограничения нелинейной задачи наряду с ограничениями в виде равенств содержат также и ограничения в виде неравенств.
Теорема
КунаТаккера.
Если задача выпуклого программирования
(4.7)(4.8)
удовлетворяет условию регулярности,
то точка
является оптимальным решением этой
задачи тогда и только тогда, когда
существует такая точка
с неотрицательными координатами, что
является седловой точкой функции
Лагранжа данной задачи.
Условия КарушаКунаТаккера в дифференциальной форме:
Если
функция Лагранжа
является выпуклой по
,
вогнутой по
и непрерывно дифференцируемой по всем
и
,
то для того чтобы пара
была седловой точкой функции Лагранжа
,
необходимо и достаточно, чтобы выполнялись
следующие условия:
,
,
,
Пример.
Найти
максимум функции
на
множестве допустимых решений
.
Решение:
Функция
является вогнутой, система ограничений
содержит только линейные неравенства,
поэтому задача является задачей выпуклого
программирования.
Составим функцию Лагранжа
Найдём седловую точку функции Лагранжа из условий:
.
В
данном случае седловой точкой является
пара
,
.
Ответ:
Теорема КунаТаккера обосновывает сведение задачи выпуклого программирования к задаче поиска седловой точки функции Лагранжа. Чтобы такое сведение имело практический смысл, необходимо, чтобы получившаяся задача была в чём-то проще исходной. Это происходит не всегда, поэтому разработан ряд прямых методов поиска решения нелинейной задачи (4.5), (4.6). Рассмотрим некоторые из них.
Метод кусочно-линейной аппроксимации
Этот
метод удобно использовать для некоторых
задач специального вида, а именно в
случае, когда целевая функция (4.5) и
ограничивающие функции из (4.6) являются
сепарабельными. Напомним, что функция
называетсясепарабельной,
если её можно представить в виде суммы
функций, зависящих только от одной
переменной:
.
Пусть дана задача:
(4.11)
на множестве допустимых решений, заданных ограничениями:
,
(4.12)
. (4.13)
Такую задачу можно свести к ЗЛП. Для этого:
определяем
максимально возможные значения
(чаще всего по соображениям здравого
смысла), т.е. полагаем, что
;
разбиваем
интервал на
равных промежутков длины
точками:
,
,
...,
,....,
.
где
.
Очевидно, можно записать
(4.14)
получаем естественные ограничения
для
; (4.15)
заменяем
кусочно-линейной аппроксимацией, т.е.
представляем в виде
; (4.16)
также
обходимся с ограничивающими функциями
,
представив их в виде
. (4.17)
Учитывая,
что значения
,
известны при любых
,
подставляем (4.144.16)
в (4.114.13)
и получаем задачу линейного программирования
с неизвестными
.
Решение
исходной задачи получим, найдя искомые
значения
по (4.14) и вычислив по (4.11) оптимум целевой
функции. Точность решения зависит от
принятых
шагов разбиения. Чем мельче шаги, тем
точнее решение.
Пример:
Найти максимум целевой функции:
при условиях:
.
Решение:
В целевой функции
нелинейным
является только первое слагаемое
,
второе слагаемое
линейно.
Из
вида области допустимых решений следует,
что
.
Разбиваем этот промежуток на 8 частей
точками:
и
вычисляем в этих точках значения:
,
,
.
По (4.14), (4.16) находим:
В итоге получаем задачу линейного программирования:
Найти максимум целевой функции с десятью неизвестными
при условиях:
,
,
,
Решив
линейную задачу, найдем, что
достигает максимума при
Переходя
к исходной нелинейной задаче, получаем
Ответ:
,
.